摘要:一个用于构建和推送镜像的插件。这样即可使用进行构建镜像啦。构建镜像使用命令启动镜像访问服务浏览器输入宿主机能够正常看到界面文章开头的最终效果页面。
一个用于构建和推送Docker镜像的Maven插件。
使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇文章借助开源插件docker-maven-plugin 进行操作
以下操作。默认你已经阅读过我上一篇文章:
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
http://www.ymq.io/2018/01/11/Docker-deploy-spring-boot-Integrate-redis
最终效果 环境准备系统:Ubuntu 17.04 x64
Docker 17.12.0-ce
Ubuntu 17.04 x64 安装 Docker CE
http://www.ymq.io/2018/01/11/Docker-Install-docker-ce/
插件地址docker-maven-plugin
GitHub 地址:https://github.com/spotify/docker-maven-plugin
一、简单使用 1.修改POM在pom.xml中添加下面这段,
2.构建镜像org.springframework.boot spring-boot-maven-plugin com.spotify docker-maven-plugin 0.4.12 microservice-discovery-eureka java ["java", "-jar", "/${project.build.finalName}.jar"] / ${project.build.directory} ${project.build.finalName}.jar
使用 maven 命令: mvn clean package docker:build
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin & mvn clean package docker:build
我们会发现控制台有类似如下内容:
Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ docker-spring-boot-demo-maven-plugin --- [INFO] Building jar: /opt/other-projects/docker-spring-boot-demo-maven-plugin/target/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:1.5.9.RELEASE:repackage (default) @ docker-spring-boot-demo-maven-plugin --- [INFO] [INFO] --- docker-maven-plugin:0.4.12:build (default-cli) @ docker-spring-boot-demo-maven-plugin --- [INFO] Copying /opt/other-projects/docker-spring-boot-demo-maven-plugin/target/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar -> /opt/other-projects/docker-spring-boot-demo-maven-plugin/target/docker/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar [INFO] Building image docker-spring-boot-demo-maven-plugin Step 1/3 : FROM java ---> d23bdf5b1b1b Step 2/3 : ADD /docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar // ---> b5d8f92756f2 Step 3/3 : ENTRYPOINT ["java", "-jar", "/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar"] ---> Running in 6867f460b40c Removing intermediate container 6867f460b40c ---> 378fd82432e0 ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null} Successfully built 378fd82432e0 Successfully tagged docker-spring-boot-demo-maven-plugin:latest [INFO] Built docker-spring-boot-demo-maven-plugin [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 20.568 s [INFO] Finished at: 2018-01-15T09:21:39+00:00 [INFO] Final Memory: 37M/89M [INFO] ------------------------------------------------------------------------ root@souyunku:/opt/other-projects/docker-spring-boot-demo-maven-plugin#
恭喜,构建成功了。
-我们执行docker images 会发现该镜像已经被构建成功:
& root@souyunku:# docker images docker-spring-boot-demo-maven-plugin REPOSITORY TAG IMAGE ID CREATED SIZE docker-spring-boot-demo-maven-plugin latest 378fd82432e0 3 minutes ago 659MB3.启动镜像
root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin 84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a4.查看容器
& root@souyunku:# docker container ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 84ebb2ebb8c0 docker-spring-boot-demo-maven-plugin "java -jar /docker-s…" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp MySpringBootMavenPlugin5.访问服务
浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
二、使用Dockerfile 1.新建Dockerfile使用Dockerfile进行构建Docker镜像
上文讲述的方式是最简单的方式,很多时候,我们还是要借助Dockerfile进行构建的,
首先我们在/docker-spring-boot-demo-maven-plugin/src/main/resources目录下,建立文件Dockerfile
FROM java:8 VOLUME /tmp ADD docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar app.jar RUN bash -c "touch /app.jar" EXPOSE 9000 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]2.修改POM
项目pom.xml修改为如下: 指定Dockerfile所在的路径
3.构建镜像com.spotify docker-maven-plugin 0.4.12 docker-spring-boot-demo-maven-plugin ${basedir}/src/main/resources / ${project.build.directory} ${project.build.finalName}.jar
使用 maven 命令: mvn clean package docker:build
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin & mvn clean package docker:build4.启动镜像
root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin 84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
其他步骤和上面一样。这样即可使用Dockerfile进行构建Docker镜像啦。
5.访问服务浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
三、push 镜像将Docker镜像push到DockerHub上
1.修改Maven配置首先修改Maven的全局配置文件settings.xml,
查看settings.xml 所在位置
root@souyunku:# find / -name settings.xml /etc/maven/settings.xml
添加以下段落
vi /etc/maven/settings.xml
2.创建Repositorydocker-hub DockerHub 的账号 DockerHub 的密码 admin@souyunku.com
注册个账号:https://hub.docker.com/
在DockerHub上创建Create Repository ,例如:docker-spring-boot-demo-maven-plugin,如下图
3.修改POM项目pom.xml修改为如下:注意imageName的路径要和repo的路径一致
镜像名称
souyunku
将Docker镜像push到DockerHub上
4.构建镜像com.spotify docker-maven-plugin 0.4.12 ${docker.image.prefix}/${project.artifactId} ${basedir}/src/main/resources / ${project.build.directory} ${project.build.finalName}.jar docker-hub https://index.docker.io/v1/
使用 maven 命令: mvn clean package docker:build -DpushImage
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin & mvn clean package docker:build -DpushImage
看到类似这样的数据,就证明构建镜像没毛病
[INFO] Building image souyunku/docker-spring-boot-demo-maven-plugin Step 1/6 : FROM java:8 ---> d23bdf5b1b1b Step 2/6 : VOLUME /tmp ---> Using cache ---> cb237cc84527 Step 3/6 : ADD docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar app.jar ---> 7fb5e3363ed5 Step 4/6 : RUN bash -c "touch /app.jar" ---> Running in ab5d10dd64ad Removing intermediate container ab5d10dd64ad ---> 05d96fe59da4 Step 5/6 : EXPOSE 9000 ---> Running in d63e20122d8e Removing intermediate container d63e20122d8e ---> 55ba378141fd Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ---> Running in 962d476363a3 Removing intermediate container 962d476363a3 ---> 654b596fe91f ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null} Successfully built 654b596fe91f Successfully tagged souyunku/docker-spring-boot-demo-maven-plugin:latest [INFO] Built souyunku/docker-spring-boot-demo-maven-plugin [INFO] Pushing souyunku/docker-spring-boot-demo-maven-plugin The push refers to repository [docker.io/souyunku/docker-spring-boot-demo-maven-plugin] 464800d90790: Pushed d52b146f9147: Pushed 35c20f26d188: Mounted from souyunku/docker-spring-boot-demo c3fe59dd9556: Mounted from souyunku/docker-spring-boot-demo 6ed1a81ba5b6: Mounted from souyunku/docker-spring-boot-demo a3483ce177ce: Mounted from souyunku/docker-spring-boot-demo ce6c8756685b: Mounted from souyunku/docker-spring-boot-demo 30339f20ced0: Mounted from souyunku/docker-spring-boot-demo 0eb22bfb707d: Mounted from souyunku/docker-spring-boot-demo a2ae92ffcd29: Mounted from souyunku/docker-spring-boot-demo latest: digest: sha256:8d78ced0034f38be8086c8f812817ec4c12b178470b4cea668046906c825c9ee size: 2424 null: null [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 41.764 s [INFO] Finished at: 2018-01-16T09:56:23+00:00 [INFO] Final Memory: 36M/88M [INFO] ------------------------------------------------------------------------ root@souyunku:/opt/other-projects/docker-spring-boot-demo-maven-plugin#5.查看镜像
root@souyunku:# docker images souyunku/docker-spring-boot-demo-maven-plugin REPOSITORY TAG IMAGE ID CREATED SIZE souyunku/docker-spring-boot-demo-maven-plugin latest 654b596fe91f 27 minutes ago 674MB
root@souyunku:# docker images souyunku/docker-spring-boot-demo-maven-plugin REPOSITORY TAG IMAGE ID CREATED SIZE souyunku/docker-spring-boot-demo-maven-plugin latest 654b596fe91f 27 minutes ago 674MB
Docker Hub 查看镜像,看到已经上传成功
6.启动镜像root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin 84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
其他步骤和上面一样。这样即可使用Dockerfile进行构建Docker镜像啦。
7.访问服务浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
四、绑定phase执行将插件绑定在某个phase执行
在很多场景下,我们有这样的需求,例如执行mvn clean package 时,自动地为我们构建docker镜像,可以吗?答案是肯定的。我们只需要将插件的goal 绑定在某个phase即可。
所谓的phase和goal,可以这样理解:maven命令格式是:mvn phase:goal ,例如mvn package docker:build 那么,package 和 docker 都是phase,build 则是goal 。
1.修改POM下面是示例:
首先配置属性:
souyunku
com.spotify docker-maven-plugin 0.4.12 build-image package build ${docker.image.prefix}/${project.artifactId} ${basedir}/src/main/resources / ${project.build.directory} ${project.build.finalName}.jar docker-hub https://index.docker.io/v1/
新加内容
build-image package build
本例指的是讲docker的build目标,绑定在package这个phase上。
也就是说,用户只需要执行mvn package ,就自动执行了mvn docker:build 。
使用 maven 命令: mvn package
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin & mvn package3.启动镜像
root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin 84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a4.访问服务
浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
推荐阅读:Docker Hub 仓库使用,及搭建 Docker Registry
http://www.ymq.io/2017/12/31/Docker-dockerHub/
GitHub :docker-spring-boot-demo-maven-plugin
https://github.com/souyunku/other-projects/tree/master/docker-spring-boot-demo-maven-plugin
Contact作者:鹏磊
出处:http://www.ymq.io/2018/01/15/Docker-maven-plugin
Email:admin@souyunku.com
版权归作者所有,转载请注明出处
Wechat:关注公众号,搜云库,专注于开发技术的研究与知识分享
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27207.html
摘要:项目上传将项目上传到华为云服务器,没啥好说的。环境搭建建议在环境下安装,环境搭建比较复杂且容易出错,使用来安装环境很方便。使用部署项目将项目复制到服务器中,进入项目路径下进行打包测试。 项目搭建 Spring Boot 项目代码 @RestController public class SpringBootDockerApplication { public static vo...
摘要:市长信箱邮件查询服务将应用部署到在上一章我完成了将部署到的工作和都具有能快速启动的特性因此是一对用来部署微服务的黄金搭档在计划中基于的应用也将部署到之上那我们就开始行动吧将部署到上需要执行以下步骤保证打包后的可执行能正常启动在应用中编写镜像 市长信箱邮件查询服务: 将SpringBoot应用部署到Docker 在上一章, 我完成了将ES部署到Docker的工作. SpringBoot和...
摘要:在年下旬开源了一款新的工具,可以轻松地将应用程序容器化。由于默认访问谷歌的仓库,而国内访问不稳定会经常导致网络超时,所以笔者使用了国内的阿里云镜像服务,那么就不需要访问谷歌的仓库了。执行完成后,我们可以在阿里云镜像仓库获取镜像。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。...
摘要:在年下旬开源了一款新的工具,可以轻松地将应用程序容器化。由于默认访问谷歌的仓库,而国内访问不稳定会经常导致网络超时,所以笔者使用了国内的阿里云镜像服务,那么就不需要访问谷歌的仓库了。执行完成后,我们可以在阿里云镜像仓库获取镜像。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。...
摘要:应用化极简教程陈光剑基于的企业级应用开发最佳实践前面的章节中,我们都是在环境中开发运行测试应用程序。关键字是分布式应用微服务容器虚拟化。通常,在企业项目实践中,会实现一套应用部署发布的自动化运维平台工具。 Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)—— 基于 Gradle + Kotlin的企业级应用开发最佳实践 前面的章节中,...
阅读 1459·2021-09-24 10:38
阅读 1450·2021-09-22 15:15
阅读 3037·2021-09-09 09:33
阅读 878·2019-08-30 11:08
阅读 619·2019-08-30 10:52
阅读 1237·2019-08-30 10:52
阅读 2294·2019-08-28 18:01
阅读 500·2019-08-28 17:55