Docker使用maven插件打包SpringBoot项目

970 阅读1分钟

上一篇介绍了使用 DockerFile 来构建镜像,这里来介绍 Docker 使用 maven 插件打包 SpringBoot 项目镜像,并且推送到指定服务器。

作者:IT王小二
博客:itwxe.com

一、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

看到下面的结果就代表打包镜像上传服务器成功了。

maven插件打包结果1

maven打包镜像上传结果2

通过上传镜像创建容器,看到项目可以正常访问。

docker run -d --name sunny9090 -p 9090:9002 itwxe/sunny-admin:0.0.1

maven打包镜像容器运行结果

都读到这里了,来个 点赞、评论、关注、收藏 吧!