maven是一个强大的项目管理与构建工具,使用maven来构建docker镜像,并自动上传到私服仓库,那么就大大简化了工作。
看到网上大部分都是使用的Spotify公司的插件,这里我也选则此插件进行学习。
com.spotify
docker-maven-plugin
0.4.13
true
my/eureka:0.0.1
lwieske/java-8
http://192.168.10.72:2375
["java","-jar","/${project.build.finalName}.jar"]
/
${project.build.directory}
${project.build.finalName}.jar
修改 /etc/sysconfig/docker文件
vi /etc/sysconfig/docker
在最下面添加一行
DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'
再修改 /usr/systemd/system/docker.service
vi /usr/systemd/system/docker.service
在ExecStart后面添加 $DOCKER_OPTS \
重新加载配置文件
systemctl daemon-reload
重启docker
systemctl restart docker
firewall-cmd --zone=public --add-port=2375/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入配置
irewall-cmd --reload
运行命令
查看服务器上镜像列表
运行镜像
查看结果
可以看到我们的项目已经成功启动了,并且在主机可以直接访问,这说明docker自动帮我们开启了防火墙的端口访问。
如果要使用dockerfile构建镜像
FROM lwieske/java-8
VOLUME /tmp
ADD discovery-1.0-SNAPSHOT.jar discovery.jar
EXPOSE 8002
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","discovery.jar"]
com.spotify
docker-maven-plugin
0.4.13
true
my/eureka:0.0.2
http://192.168.10.73:2375
${project.basedir}/src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar
测试运行dockerfile构建的镜像
比如我们想在项目mvn package的时候同时构建docker上传到服务器。
com.spotify
docker-maven-plugin
0.4.13
build-image
package
build
true
my/eureka:0.0.1
lwieske/java-8
http://192.168.10.72:2375
["java","-jar","/${project.build.finalName}.jar"]
/
${project.build.directory}
${project.build.finalName}.jar
可以看到,我们在原来的基础上只是新增了
com.spotify
docker-maven-plugin
0.4.13
build-image
package
build
image-tag
package
tag
my/eureka:0.0.1
192.168.10.73:5000/my/eureka:0.0.1
package-push
package
push
192.168.10.73:5000/my/eureka:0.0.1
true
my/eureka:0.0.1
lwieske/java-8
http://192.168.10.73:2375
["java","-jar","/${project.build.finalName}.jar"]
/
${project.build.directory}
${project.build.finalName}.jar
可以看到,又绑定了两个命令,类似于在docker中先给镜像打标签后再push到仓库
测试运行
注意:改成自己服务器ip地址
重启docker后,再次执行
push成功,我们看一下远程仓库是否有这个镜像
在maven的 settings.xml 中添加
docker-hub
DockerHub 的账号
DockerHub 的密码
你的eamil
pom.xml中修改如下
com.spotify
docker-maven-plugin
0.4.13
true
my/eureka:0.0.2
http://192.168.10.73:2375
${project.basedir}/src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar
docker-hub