一、改造项目
1.1 修改pom.xml
<properties>节点下添加
---------------------------------------------------------
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
<docker.image.prefix>oa</docker.image.prefix> #这里oa需要改成自己项目的名称
----------------------------------------------------------
<dependencies> 节点下添加
----------------------------------------------------------
<!-- springcloud jar -->
<!-- 注册中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- feign服务调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- ribbon服务调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!-- hystrix熔断器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- 断路器Dashboard监控仪表盘 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 网关 服务中不能添加网关的jar包,否则项目启动会报错Unable to start embedded Tomcat -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-gateway</artifactId>-->
<!-- </dependency>-->
<!-- sleuth 日志埋点 -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-sleuth</artifactId>-->
<!-- </dependency>-->
<!-- zipkin链路追踪 包含了sleuth包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!--配置中心客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
----------------------------------------------------------------------------
plugin修改为:
--------------------------------------------------------------------------------------------------
<!-- tag::plugin[] -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.3</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
# 要推送的docker 服务器地址
<dockerHost>http://10.4.237.123:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
--------------------------------------------------------------------------------------------------
1.2 编辑dockerfile
在项目src/main下创建docker文件夹并新建dockerfile文件:
dockerfile文本内容为:
----------------------------------------------------------------------------------------
# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,handcuffs-reg-0.0.1-SNAPSHOT.jar这里是maven打包后的名字
ADD sys-id-java.jar sys-id-java.jar
RUN bash -c 'touch /sys-id-java.jar'
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/sys-id-java.jar"]
EXPOSE 8761
----------------------------------------------------------------------------------------
1.3 idea安装docker插件
打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。安装后重启Idea。
重启后配置docker,连接到远程docker服务。从File->Settings->Build,Execution,Deployment->Docker打开配置界面
点击+号添加一个docker配置,输入Name和Engine API URL,URL是docker服务地址,需要docker开启远程连接功能。
1.4 application添加注解
@EnableFeignClients //feign
@EnableDiscoveryClient
@EnableCircuitBreaker // 熔断器注解
@EnableHystrixDashboard // 断路器Dashboard监控仪表盘
修改完如图:
二、服务器配置
2.1 docker配置
修改服务器中docker配置文件:
主要是在[Service]这个部分,加上下面两个参数
# vim /usr/lib/systemd/system/docker.service
[Service]
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
修改之后如图:
配置阿里镜像地址:
[root@localhost ~]# cd /etc/docker/
[root@localhost docker]# ll
total 20
drwxr-xr-x. 5 root root 72 Jul 26 07:17 certs.d
-rw-r--r--. 1 root root 57 Jul 26 08:01 daemon.json
-rw-------. 1 root root 244 Jul 26 07:17 key.json
-rw-r--r--. 1 root root 10837 May 1 07:52 seccomp.json
[root@localhost docker]# vi daemon.json
-----------------------------------------------------------------------------------
{
"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
----------------------------------------------------------------------------------
[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker
三、打包镜像部署
双击idea的package打包就会自动打包镜像并将镜像推动到配置的目标服务器中
docker插件配置地址和pom.xml地址要保持一致。
服务器 docker images查看镜像id
启动服务:docker run -d --net host --name oa-server -p 8092:8092 镜像id
docker ps 查看启动的镜像