在實際工作中,部署一個應用可能需要部署多個容器,一個一個部署非常不方便。docker compose可以一鍵部署和啟動多個容器,它使用yaml文件來編排服務。github和docker hub很多項目都提供了docker-compose.yaml文件,我們可以一鍵部署項目,非常方便。
這里可以使用vscode去學習docker compose的格式?
一鍵部署
將以下內容保存到本地的docker-compose.yml文件中。
docker compose命令啟動時,默認在當前目錄下尋找compose.yaml或compose.yml,為了兼容之前的版本,也會查找docker-compose.yaml或docker-compose.yml。
也可以使用-f參數(shù)手動指定文件docker compose -f docker-compose-dev.yml up -d
docker compose up -d一鍵部署啟動
docker compose start/stop啟動/停止服務
docker compose down停止并刪除容器,不會刪除存儲卷volume
compose文件結構
docker-compose.yml通常需要包含以下幾個頂級元素:
version 已棄用,早期版本需要此元素
services 必要元素,定義一個或多個容器的運行參數(shù)
? 在services 中可以通過以下元素定義容器的運行參數(shù)
主要關注 端口映射、環(huán)境變量、掛載數(shù)據(jù)持久化、容器重啟策略
image | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 容器鏡像 |
ports | 端口映射 |
environment | 環(huán)境變量 |
networks | 容器使用的網絡 |
volumes | 容器掛載的存儲卷 |
command | 容器啟動時執(zhí)行的命令 |
depends_on | 定義啟動順序 |
復數(shù)形式,ports、networks、depends_on參數(shù)需傳入列表 |
yaml文件語法
- ?縮進代表上下級關系
- ?縮進時不允許使用Tab鍵,只允許使用空格
- ?: 鍵值對,后面必須有空格
- ?-列表,后面必須有空格
- ?[ ]數(shù)組
- ?#注釋
- ?{key:value,k1:v1}map
- ?| 多行文本塊
- --- 表示一個文檔的開始
- 把公共的配置提取出來,用&來建立錨點,<<合并到當前數(shù)據(jù),用*引用錨點
編排自己的項目
command 支持以下寫法:
#推薦使用數(shù)組或列表的方式
#數(shù)組
command:
["java",
"-jar",
"/usr/local/src/ruoyi-admin.jar"
]
#列表
command:
- java
- -jar
- /usr/local/src/ruoyi-admin.jar
# shell命令模式
command: java -jar /usr/local/src/ruoyi-admin.jar
environment 支持如下兩種寫法:
# 使用map
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
#使用列表
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=ry
- LANG=C.UTF-8
容器啟動順序 depends_on
數(shù)據(jù)庫初始化完成之前,不會建立connections。
depends_on 只能保證容器的啟動和銷毀順序,不能保證依賴的容器是否ready
要確保應用服務在數(shù)據(jù)庫初始化完成后再啟動,需要配合condition
和healthcheck
使用。
condition有三種狀態(tài):
- service_started容器已啟動
- service_healthy容器處于健康狀態(tài)
- service_completed_successfully容器執(zhí)行完成且成功退出(退出狀態(tài)碼為0)
重啟策略
以下是幾種常用的重啟策略:
-
no:這是默認值。表示容器停止后不會自動重啟。
-
always:表示容器停止后總是自動重啟。
-
unless-stopped:表示容器停止后除非明確停止(使用
docker-compose stop
或手動停止),否則總是自動重啟。文章來源地址http://www.zghlxwxcb.cn/news/detail-834390.html -
on-failure:表示容器非正常退出(即退出狀態(tài)非 0)時自動重啟。可以通過
restart
的on-failure
子選項來指定最大的重啟次數(shù),例如restart: on-failure:5
表示容器在失敗時最多嘗試重啟 5 次。文章來源:http://www.zghlxwxcb.cn/news/detail-834390.html -
unless-stopped:表示容器停止后除非明確停止(使用
docker-compose stop
或手動停止),否則總是自動重啟。
到了這里,關于docker (十)-docker compose容器編排的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!