通过Maven插件自动部署 , 对于数量众多的微服务,手动部署非常麻烦且容易出错,所以建议使用自动部署。
1.修改docker配置
修改宿主机的docker配置,让其可以远程访问
1 2 |
vim /lib/systemd/system/docker.service 在ExecStart=后添加配置 ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock |
修改后配置如下:
1 |
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock |
刷新配置重启服务:
1 2 3 |
systemctl daemon-reload systemctl restart docker docker restart registry |
2.修改防火墙策略
修改防火墙策略,允许访问2375端口:
1 2 |
firewall-cmd --zone=public --add-port=2375/tcp --permanent #开放2375/tcp端口 firewall-cmd --reload #更新防火墙的设置,使上面的修改生效 |
查看防火墙开放状态:
1 |
firewall-cmd --zone=public --list-ports #查看所有打开的端口 |
一定要查看防火墙是否开启,否则一直提示无法连接
3.微服务调整
3.1 setting.xml配置
1 2 3 4 5 6 7 |
在pluginGroups中增加一个com.spotify,对应groupId中的单位 <pluginGroups> <pluginGroup>com.spotify</pluginGroup> </pluginGroups> |

3.2 通过docker-maven-plugin插件
修改项目pom.xml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>192.168.66.180:5000/${project.artifactId}:${project.version}</imageName> <baseImage>jdk1.8</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <dockerHost>http://192.168.66.180:2375</dockerHost> </configuration> </plugin> |
以上配置会自动生成Dockerfile
推送镜像至远程仓库
1 2 3 4 5 6 7 8 9 10 |
mvn clean package docker:build 只执行 build 操作 mvn clean package docker:build -DpushImage 执行 build 完成后 push 镜像 mvn clean package docker:build -DpushImageTag 执行 build 并 push 指定 tag 的镜像 注意:这里必须指定至少一个 imageTag,它可以配置到 POM 中,也可以在命令行指定。命令行指定如下: mvn clean package docker:build -DpushImageTags -DdockerImageTags=imageTag_1 -DdockerImageTags=imageTag 2,POM 文件中指定配置如下: |
3.3 通过dockerfile-maven-plugin插件(官方推荐)
修改pom.xml文件
1 2 3 4 5 6 7 8 9 10 11 12 |
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <configuration> <repository>192.168.2.101:5000/${project.artifactId}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> |
3.4、创建Dockerfile文件
1 |
Dockerfile文件必须在根目录下,与pom.xml文件同级 |
1 2 3 4 5 |
FROM 192.168.2.101:5000/jdk1.8 EXPOSE 9001 ARG JAR_FILE ADD $JAR_FILE /demo02.jar ENTRYPOINT ["java", "-jar", "/demo02.jar"] |
3.5 设置环境变量
1 2 |
环境变量名称:DOCKER_HOST 变量值:tcp://192.168.2.101:2375(根据实际IP地址来) |
3.6 推送至远程仓库
1 |
mvn clean package dockerfile:build dockerfile:push |
- 本文固定链接: https://www.yoyoask.com/?p=6190
- 转载请注明: shooter 于 SHOOTER 发表