快速发布 docker 应用之神器 - docker Maven
时间:2017-02-18 02:33 来源:linux.it.net.cn 作者:IT
快速发布 docker 应用之神器 - docker Maven
在开发集群应用或微服务架构应用(云原生 cloud native app)时需要启动多个应用服务容器,每次构建新的容器镜像比较麻烦,也不利于调试,使用 Docker Maven 镜像就是最佳开发实践之一。本文仅合适开发环境应用,不合适生产部署。
准备环境
-
熟悉 docker 命令: [一张图读懂 docker 命令]
-
下载 Maven docker 官方方镜像:
sudo docker pull maven
sudo docker images
-
准备一个 Java Web 项目。例如: Spring 4 官方 MVC demo
demo 地址: http://spring.io/guides/gs/serving-web-content/
下载解压后,进入 pom.xml 所在目录:
mvn spring-boot:run
静待出现 Tomcat started on port(s) 8080 (http)
打开新终端,输入:
curl http://localhost:8080/greeting
出现 Hello World! ,表示准备就绪,ctrl+c 终止运行。
1、在容器中启动 Maven 项目
(1)启动应用
后台运行容器,容器名 demo1
sudo docker run -d --name demo1 -v "$(pwd)":/usr/src/app \
-v ~/.m2:/usr/share/maven/ref \
-w /usr/src/app \
maven mvn spring-boot:run
其中 -v "$(pwd)":/usr/src/app 表示与本地共享应用文件夹; -v ~/.m2:/usr/share/maven/ref 表示与本地共享 Maven 的本地库; -w /usr/src/app 指定项目在容器中的目录位置; maven mvn spring-boot:run 使用 Maven Image 执行命令 mvn。
(2)检查启动状态与容器地址
sudo docker ps 出现 demo1 容器
sudo docker logs demo1 静待看到 Tomcat started on port(s) 8080 (http)
sudo docker inspect demo1 |grep IPAddress 出现了 IP 地址,例如:172.17.0.4
(3)访问应用服务
curl http://172.17.0.4:8080/greeting?name=your-name
出现 Hello your-name! 。
(4)启动另一个应用
例如,容器名 demo2:
sudo docker run -d --name demo2 -v "$(pwd)":/usr/src/app \
-v ~/.m2:/usr/share/maven/ref \
-w /usr/src/app \
maven mvn spring-boot:run
重复(1) (2) (3) 步骤。
sudo docker ps
看到两个运行的项目 demo1,demo2
sudo docker rm -f demo1 demo2 关闭并清理项目
2、进一步了解 maven docker
如果你希望了解 Maven 镜像内部结构
sudo docker run -it --rm maven /bin/bash
查看目录及配置文件
cd /usr/share/maven
ls -l
exit
3、小结
本文展示了开发环境使用 Maven 的场景,核心要点是主机与Maven镜像共享本地库与应用目录。 在开发环境中,主机是否安装 Maven 呢?个人认为是必须的,毕竟修改 Maven 镜像配置没什么意义阿。
在生产环境中,从 spring-boot, tomcat, jetty 等镜像制作应用有更小的体积和更好的性能。 制作 web 应用镜像可参考 [使用Docker运行Java Web应用]1
【参考】
-
使用Docker运行Java Web应用 https://yq.aliyun.com/articles/6894
(责任编辑:IT)
快速发布 docker 应用之神器 - docker Maven在开发集群应用或微服务架构应用(云原生 cloud native app)时需要启动多个应用服务容器,每次构建新的容器镜像比较麻烦,也不利于调试,使用 Docker Maven 镜像就是最佳开发实践之一。本文仅合适开发环境应用,不合适生产部署。 准备环境
sudo docker pull maven sudo docker images
demo 地址: http://spring.io/guides/gs/serving-web-content/ 下载解压后,进入 pom.xml 所在目录: mvn spring-boot:run 静待出现 Tomcat started on port(s) 8080 (http) 打开新终端,输入: curl http://localhost:8080/greeting 出现 Hello World! ,表示准备就绪,ctrl+c 终止运行。 1、在容器中启动 Maven 项目(1)启动应用 后台运行容器,容器名 demo1 sudo docker run -d --name demo1 -v "$(pwd)":/usr/src/app \ -v ~/.m2:/usr/share/maven/ref \ -w /usr/src/app \ maven mvn spring-boot:run 其中 -v "$(pwd)":/usr/src/app 表示与本地共享应用文件夹; -v ~/.m2:/usr/share/maven/ref 表示与本地共享 Maven 的本地库; -w /usr/src/app 指定项目在容器中的目录位置; maven mvn spring-boot:run 使用 Maven Image 执行命令 mvn。 (2)检查启动状态与容器地址 sudo docker ps 出现 demo1 容器 sudo docker logs demo1 静待看到 Tomcat started on port(s) 8080 (http) sudo docker inspect demo1 |grep IPAddress 出现了 IP 地址,例如:172.17.0.4 (3)访问应用服务 curl http://172.17.0.4:8080/greeting?name=your-name 出现 Hello your-name! 。 (4)启动另一个应用 例如,容器名 demo2: sudo docker run -d --name demo2 -v "$(pwd)":/usr/src/app \ -v ~/.m2:/usr/share/maven/ref \ -w /usr/src/app \ maven mvn spring-boot:run 重复(1) (2) (3) 步骤。 sudo docker ps 看到两个运行的项目 demo1,demo2 sudo docker rm -f demo1 demo2 关闭并清理项目 2、进一步了解 maven docker如果你希望了解 Maven 镜像内部结构 sudo docker run -it --rm maven /bin/bash 查看目录及配置文件 cd /usr/share/maven ls -l exit 3、小结本文展示了开发环境使用 Maven 的场景,核心要点是主机与Maven镜像共享本地库与应用目录。 在开发环境中,主机是否安装 Maven 呢?个人认为是必须的,毕竟修改 Maven 镜像配置没什么意义阿。 在生产环境中,从 spring-boot, tomcat, jetty 等镜像制作应用有更小的体积和更好的性能。 制作 web 应用镜像可参考 [使用Docker运行Java Web应用]1 【参考】
(责任编辑:IT) |