Docker使用maven插件打包SpringBoot项目
Docker使用maven插件打包SpringBoot项目
作者:IT王小二
上一篇介绍了使用 DockerFile 来构建镜像,这里来介绍 Docker 使用 maven 插件打包 SpringBoot 项目镜像,并且推送到指定服务器。
一、Docker开启远程API
写在最前面,这个配置仅适用于内网服务器,公网服务器注意 docker远程API端口 暴露后别人只要知道你的 ip 和 port ,那么就可以操作你的服务器了。
所以公网服务器需要额外配置 ACL 和 LTS,有需求的可以自己查找资料解决安全问题。
开启访问端口。
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
打开 docker.service 文件编辑。
vim /usr/lib/systemd/system/docker.service
修改信息。
# 修改前信息
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 修改后信息
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
刷新配置使配置生效,重启 docker 。
systemctl daemon-reload
systemctl restart docker
二、项目改造
pom.xml 添加内容。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<id>build-image</id>
<!-- 此处配置了在 maven 打包应用时构建 docker 镜像,即自动执行 docker:build -->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 用于指定镜像名称,${project.artifactId} 为镜像名称,${project.version} 为版本 -->
<imageName>itwxe/${project.artifactId}:${project.version}</imageName>
<!-- 打包后上传到的 docker 服务器地址 -->
<dockerHost>http://192.168.5.33:2375</dockerHost>
<!-- 该应用所依赖的基础镜像,此处为 java:8,如服务器没有此基础镜像,最好先 pull 下来,防止超时 -->
<baseImage>java:8</baseImage>
<!-- docker 容器启动时执行的命令 -->
<entryPoint>["java", "-jar","/${project.build.finalName}.jar"]
</entryPoint>
<resources>
<resource>
<!-- 将打包后的资源文件复制到该目录 -->
<targetPath>/</targetPath>
<!-- 需要复制的文件所在目录,缺省为 target,maven 打包的应用 jar 包保存在 target 目录下面 -->
<directory>${project.build.directory}</directory>
<!-- 需要复制的文件,打包好的应用 jar 包,即 sunny-admin.jar -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
保存后打包项目。
mvn clean package
看到下面的结果就代表打包镜像上传服务器成功了。
通过上传镜像创建容器,看到项目可以正常访问。
docker run -d --name sunny9090 -p 9090:9002 itwxe/sunny-admin:0.0.1