当前位置:   article > 正文

Java Maven项目实现自动化部署到Docker上

Java Maven项目实现自动化部署到Docker上

前言

        目前项目是采用docker部署的, 由于需要新增一个微服务,最终是实现自动推送到远程的docker上,所以就顺便记录一下操作步骤

服务器层面配置

开启 docker 所在服务器远程访问

# 1、修改docker配置文件


vim /lib/systemd/system/docker.service

在ExecStart=后面加上:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

修改后的配置如下:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

# 2、刷新配置重启服务


systemctl daemon-reload
systemctl restart docker

开放防火墙

# 开放防火墙2375端口, 2375端口是自己上面绑定的,可以根据自己需要进行调整


firewall-cmd --zone=public --add-port=2375/tcp --permanent
# 更新配置信息(这样就不需要重启防火墙了)
firewall-cmd --reload
# 查看服务器开放端口
netstat -tlun

项目层面配置

项目pom文件引入插件

添加maven-compiler-plugin插件如下

  1. <build>
  2. <!-- install后的jar包名称 -->
  3. <finalName>${project.artifactId}</finalName>
  4. <plugins>
  5. <plugin>
  6. <groupId>org.apache.maven.plugins</groupId>
  7. <artifactId>maven-compiler-plugin</artifactId>
  8. <configuration>
  9. <source>1.8</source>
  10. <target>1.8</target>
  11. </configuration>
  12. </plugin>
  13. <plugin>
  14. <groupId>com.spotify</groupId>
  15. <artifactId>docker-maven-plugin</artifactId>
  16. <version>1.2.2</version>
  17. <configuration>
  18. <!-- 镜像名称,相当于执行docker build -t 命令后面跟的镜像名称 -->
  19. <imageName>shr/${project.artifactId}</imageName>
  20. <!-- Dockerfile文件存放目录 -->
  21. <dockerDirectory>src/main/docker</dockerDirectory>
  22. <!-- docker远程服务器地址 -->
  23. <dockerHost>http://192.168.68.68:2375</dockerHost>
  24. <!--指定pem证书文件路径地址 -->
  25. <dockerCertPath>${project.basedir}docker-pem</dockerCertPath>
  26. <!-- 指定tag版本 -->
  27. <!--<imageTags>
  28. <imageTag>1.0</imageTag>
  29. </imageTags>-->
  30. <!-- build 时强制覆盖 tag,配合 imageTags 使用-->
  31. <!--<forceTags>true</forceTags>-->
  32. <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
  33. <resources>
  34. <resource>
  35. <targetPath>/</targetPath>
  36. <directory>${project.build.directory}</directory>
  37. <include>${project.build.finalName}.jar</include>
  38. </resource>
  39. </resources>
  40. </configuration>
  41. <executions>
  42. <!-- 执行mvn install时,执行 build、tag 操作-->
  43. <execution>
  44. <id>build-image</id>
  45. <phase>install</phase>
  46. <goals>
  47. <goal>build</goal>
  48. </goals>
  49. </execution>
  50. <!-- tag 用于给镜像打标签-->
  51. <!--<execution>
  52. <id>tag-image</id>
  53. <phase>package</phase>
  54. <goals>
  55. <goal>tag</goal>
  56. </goals>
  57. <configuration>
  58. <image>${project.artifactId}:latest</image>
  59. <newName>${project.artifactId}:${project.version}</newName>
  60. </configuration>
  61. </execution>-->
  62. <!-- maven执行deploy时push镜像 -->
  63. <!--<execution>
  64. <id>push-image</id>
  65. <phase>deploy</phase>
  66. <goals>
  67. <goal>push</goal>
  68. </goals>
  69. <configuration>
  70. <imageName>${project.artifactId}:${project.version}</imageName>
  71. </configuration>
  72. </execution>-->
  73. </executions>
  74. </plugin>
  75. </plugins>
  76. </build>

比较重要的参数含义如下

dockerHost:   docker所在的服务器地址

dockerDirectory:  dockerFile文件路径,也就是下面所要说的

dockerCertPath: 安全证书路径,这是为了安全的, 非必须,如果需要自行查找资料

编写Dockerfile文件

文件如下,如有需要再自行进行修改

  1. FROM frolvlad/alpine-java:jdk8-slim
  2. MAINTAINER zxc
  3. ADD ./lib/local_policy.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/local_policy.jar
  4. ADD ./lib/US_export_policy.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/US_export_policy.jar
  5. ADD ./target/yourproject.jar /web.jar
  6. VOLUME /logs
  7. EXPOSE 8805/tcp
  8. ENTRYPOINT ["sh","-c","java -Dfile.encoding=UTF8 -Duser.timezone=GMT+8 -jar /web.jar"]

其中比较重要的参数含义如下

ADD ./target/yourproject.jar /web.jar:    就是把maven的项目添加到根目录,并改名为 web

VOLUME /logs :  日志文件挂载

EXPOSE 8805/tcp   暴露的端口, 对外访问的,一般跟项目端口一样即可

执行install

        就是常规的maven install指令,   mvn install, 然后去docker所在服务器执行如下指令

docker images 就能看到你的项目在上面了

注:集成jenkins

        如果你需要集成jenkins完成自动构建也是可以的,只不过这部分属于另外的知识了,有时间的话我也补充一下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/283721
推荐阅读
相关标签
  

闽ICP备14008679号