快速發布一個docker容器
準備階段
一台擁有 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 在當前目錄下。再次 檢查鏡像 可以看到鏡像存在。
TAG:天好研究院 |