快速发布 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) |