在我们实际的开发过程中,为了生成项目的docker镜像,很少直接把生成应用的jar文件或者war文件再打成docker镜像,个别情况除外(至于怎样把jar文件打成docker镜像,前面博客有介绍。。。)下面试一下在开发工具里面打出镜像文件并自动上传至开发服务器。

准备环境:

两台虚拟服务器(192.168.169.134(开发机器)、192.168.169.133(docker私有仓库))安装好docker,至于怎么安装阅读前面的博客或自行search

eclipse开发工具及一个springboot工程

eclipse安装上maven插件(此处不介绍了,需要了解的请自行百度)

eclipse上安装docker插件

两个都需要安装,安装完毕重启eclipse,观察

安装成功!

1、在springboot工程的pom文件中添加配置

<build>
	<!-- 打包后jar包名称 -->
        <finalName>demo-app</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
            <plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.13</version>
				<configuration>
					<!--项目工程上传的docker服务器地址和端口 -->
					<dockerHost>http://192.168.169.134:3456</dockerHost>
					<!--docker所构建的镜像的名字 -->
					<imageName>192.168.169.133:5000/${project.build.finalName}:${project.version}</imageName>
					<!--构建工程镜像依赖的java基础镜像 -->
					<baseImage>java:8</baseImage>
					<!--初始化容器时所执行的命令:jar -jar /demo-app.jar -->
					<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>
					<forceTags> true</forceTags>
				</configuration>
			</plugin>
           
		</plugins>
	</build>

添加红框里面的plugin

重点解释:

1、<finalName>demo-app</finalName>生成的jar包名称

2、<dockerHost>http://192.168.169.134:3456</dockerHost>开发服务器的链接,默认常规应该是开2375,但是这个端口特别招黑,前段时间我在腾讯云上的云服务器为了测试点东西,开了俩小时就被黑了。所以尽可能不要开这个端口,而且开其他的端口至少要在防火墙上做一下策略,这是最基本的,其他的安全策略请自行选择。

3、<imageName>192.168.169.133:5000/${project.build.finalName}:${project.version}</imageName>这个是最终生成镜像名称,因为可能后续要往私库里面上传,所以我就直接生成好了tag。

4、<baseImage>java:8</baseImage>依赖的基础镜像,等同于dockerfile里面的基础镜像。

5、<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>容器初始化时执行的命令。

2、在开发服务器上开通网络策略和docker的远程访问策略

防火墙上开通3456端口,建议开通只针对IP开放或者网段开放,安全第一。

开通docker远程访问端口,这个地方也建议加IP或者网段限制。我这图省事就不特别设置了,而且是虚拟机,还是蛮安全的。。。。

修改后,重启docker,systemctl daemon-reload、systemctl restart docker 可以试着访问一下,看到下图就问题不大了。。

3、在eclipse上面的工程打成镜像推送至开发服务器

 

输入clean package docker:build -DskipTests,点run就OK了

观察控制台打出的日志,没问题

去开发服务器上观察现有的镜像。

已经上传成功!!启动试一下 docker run -p 8085:8085 --name=demo-app a3af243af995

又看到熟悉的日志了。。。成功!!,想让后台运行的话可以在构建镜像的时候加上nohup java -jar 等等一堆其他的修饰命令,这块自由发挥。

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐