准备阶段
一台拥有 docker 环境的 Linux 服务器。
一个可以运行 jar 包的镜像。 (获取镜像见 附录Ⅰ)
一个项目包 ( demo-1.0.0.jar )
创建一个文件夹 /opt/publish/jar ,把项目包 demo-1.0.0.jar 放置该目录下。
发布阶段
发布命令
docker run -d -p 30000:8080 -e TZ=Asia/Shanghai --name=demo -v /opt/publish/jar/demo-1.0.0.jar:/opt/demo.jar --restart=always java:basic
java -jar /opt/demo.jar --spring.profiles.active=prod
或 (可监控容器内的Tomcat容器的健康状况, 对于 unhealthy 的容器, 目前在 docker swarm 管理的集群才会被销毁重建!!!!)
docker run -d -p 30000:8080 -e TZ=Asia/Shanghai --name=demo -v /opt/publish/jar/demo-1.0.0.jar:/opt/demo.jar --restart=always --health-cmd
"curl --fail http://192.168.10.242:8080/ip || exit 1" --health-interval 30s --health-retries 3 --health-timeout 30s java:basic java -jar
/opt/demo.jar --spring.profiles.active=prod
备注
-p 30000:8080 , 端口映射, 30000 : 服务器暴露端口; 8080 : 容器内的端口。
-e TZ=Asia/Shanghai 设置容器内的时区,若应用对时间有要求,必须设置!!!
--name=demo 设置容器名称。
-v /opt/publish/jar/demo-1.0.0.jar:/opt/demo.jar 磁盘映射, 把项目包 demo-1.0.0.jar 映射至容器中; 此处可以看到两者的名称不同,也是
可以的。但是启动容器的时候,需要使用容器里面的项目包名称。
--restart=always 容器重启策略, 此处意思是: 无论何时,一旦停止就会重启。除非删除容器! 该策略只支持 docker run 命令; 不支持
docker service 命令。
java:basic 镜像名称及标签, 镜像ID 也可。
java -jar /opt/demo.jar --spring.profiles.active=prod 容器创建成功后, 运行的命令! 可以看到运行的 项目 jar 包,是容器内的命名。
--health-cmd "curl --fail http://192.168.10.242:8080/ip || exit 1" 健康检查命令, http://192.168.10.242:8080/ip 为项目中的地址,
docker 会向该地址发起请求。 若正常返回, 说明 容器内服务正常 ,容器会显示 healthy , 否则显示 unhealthy 。
--health-interval 30s 健康请求时间间隔,每隔30s发起一次请求。
--health-retries 3 意思为 当请求3次都为 unhealthy 时, 才会将容器标记为 unhealthy 。
--health-timeout 30s 健康请求超时时间。
发布测试
curl -X GET -d a=b&c=d http://IP:30000/YOUR_API_URL
若接口正常返回,则说明部署成功!
外网映射
(略)
附录 Ⅰ
其实镜像已经准备好!
上海天好项目文档
Page 2/2 Copyright Friday, Feb 9, 2018, 2:01 PM by Tele-Hot
检查机器
如果部署在 192.168.10.216 机器上 , 可忽略下文!!!!
检查镜像
docker images 是否存在该镜像!
REPOSITORY TAG IMAGE ID
java basic 25dab92a20aa
若存在, 可忽略下文!!!!
拷贝镜像压缩包
运行如下命令即可:
第一次提示安全确认输入: yes
之后需要输入密码: 1q2w3e4r
把 java.tar 文件拷贝到当前机器的当前目录。 ./ 可自定义。
解压镜像
运行命令: docker load
注意 java.tar 在当前目录下。再次 检查镜像 可以看到镜像存在。
领取专属 10元无门槛券
私享最新 技术干货