一、Docker Compose 簡(jiǎn)介
Docker Compose是一種用于定義和運(yùn)行多容器Docker應(yīng)用程序的工具。通過(guò)一個(gè)docker-compose.yml文件,您可以配置應(yīng)用程序需要的所有服務(wù)(例如:Web服務(wù)器、數(shù)據(jù)庫(kù)、緩存等)并輕松管理它們。
Docker Compose 使用的三個(gè)步驟:
使用 Dockerfile 定義應(yīng)用程序的環(huán)境。
使用 docker-compose.yml 定義構(gòu)成應(yīng)用程序的服務(wù),這樣它們可以在隔離環(huán)境中一起運(yùn)行。
最后,執(zhí)行 docker-compose up 命令來(lái)啟動(dòng)并運(yùn)行整個(gè)應(yīng)用程序。
二、docker-compose 安裝
此處我采用的是離線安裝方式。
首先下載 docker-compose 到本地,下載地址:https://github.com/docker/compose/
下載鏈接:https://github.com/docker/compose/releases/download/v2.30.1/docker-compose-linux-x86_64
如果直接點(diǎn)擊下載比較慢的話,建議復(fù)制鏈接地址到迅雷下載,這樣可能會(huì)快一些。下載完成后,把它上傳到 Linux 服務(wù)器,如下所示:
接著把可執(zhí)行文件移到 Linux 系統(tǒng)命令目錄(/usr/local/bin/)下,并重命名為 “docker-compose” :
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
授權(quán):
chmod +x /usr/local/bin/docker-compose
驗(yàn)證是否安裝成功:
docker-compose --version
如果能正常顯示出正確的版本號(hào),說(shuō)明安裝成功了。
如果需要卸載,直接刪除即可:
sudo rm /usr/local/bin/docker-compose
三、docker-compose常用命令
1、docker-compose up 命令
用法:
docker-compose up [options]
示例:
docker-compose up -d
功能:
創(chuàng)建并啟動(dòng)服務(wù)(容器):如果服務(wù)尚未創(chuàng)建,docker-compose up -d 會(huì)根據(jù) docker-compose.yml 文件中的定義創(chuàng)建并啟動(dòng)這些服務(wù)。
后臺(tái)運(yùn)行:-d 參數(shù)表示“detached”模式,即以分離模式運(yùn)行,服務(wù)會(huì)在后臺(tái)運(yùn)行,不會(huì)占用當(dāng)前終端。
重新創(chuàng)建容器:如果服務(wù)已經(jīng)存在且正在運(yùn)行,docker-compose up -d 會(huì)先停止并刪除現(xiàn)有的容器,然后重新創(chuàng)建并啟動(dòng)新的容器。
構(gòu)建鏡像:如果配置文件中指定了 build 指令,docker-compose up -d 會(huì)先構(gòu)建所需的 Docker 鏡像。
檢查配置:在啟動(dòng)服務(wù)之前,docker-compose up -d 會(huì)檢查并驗(yàn)證 docker-compose.yml 文件中的配置。
使用場(chǎng)景:
首次部署:當(dāng)你第一次部署服務(wù)時(shí),使用 docker-compose up -d 可以確保所有服務(wù)都按最新配置創(chuàng)建并啟動(dòng)。
更新服務(wù):當(dāng)你修改了 docker-compose.yml 文件中的配置或鏡像,使用 docker-compose up -d 可以確保這些更改生效。
確保最新?tīng)顟B(tài):無(wú)論服務(wù)是否已經(jīng)存在,docker-compose up -d 都會(huì)確保服務(wù)是最新的狀態(tài)。
用于部署一個(gè) Compose 應(yīng)用。
默認(rèn)情況下該命令會(huì)讀取名為 docker-compose.yml 或 docker-compose.yaml 的文件。
當(dāng)然用戶也可以使用 -f 指定其他文件名。通常情況下,會(huì)使用 -d 參數(shù)令應(yīng)用在后臺(tái)啟動(dòng)。
2、docker-compose down 命令
用法:
docker-compose down [options]
功能:
docker-compose down -v 命令用于停止并移除使用 docker-compose.yml 文件定義的所有容器、網(wǎng)絡(luò)、卷(通過(guò) -v 參數(shù)指定的數(shù)據(jù)卷)以及默認(rèn)的網(wǎng)絡(luò)橋接。
使用 -v 參數(shù)會(huì)刪除所有命名的數(shù)據(jù)卷。這可能會(huì)導(dǎo)致數(shù)據(jù)丟失,因此在執(zhí)行前請(qǐng)確保已經(jīng)做好了必要的備份。
使用場(chǎng)景:
適用于徹底清理環(huán)境,例如在開(kāi)發(fā)過(guò)程中需要重置環(huán)境或者測(cè)試不同配置時(shí)。
完全重置環(huán)境:當(dāng)你需要完全重置開(kāi)發(fā)環(huán)境,確保沒(méi)有任何遺留數(shù)據(jù)時(shí),可以使用 docker-compose down -v。
測(cè)試環(huán)境清理:在自動(dòng)化測(cè)試中,每次測(cè)試結(jié)束后使用 docker-compose down -v 可以確保環(huán)境干凈,不受上次測(cè)試的影響。
部署前清理:在部署新版本應(yīng)用之前,使用 docker-compose down -v 可以確保沒(méi)有舊版本的殘留數(shù)據(jù)。
選項(xiàng):
--rmi
all:刪除所有服務(wù)的鏡像。
local:僅刪除那些不帶有 :(表示鏡像標(biāo)簽)或 latest 標(biāo)簽的鏡像(通常是構(gòu)建時(shí)創(chuàng)建的鏡像)。
-v 或 --volumes:移除所有為服務(wù)定義的卷(包括默認(rèn)卷和命名卷)。
--rmi-all:等同于 --rmi all,刪除所有服務(wù)的鏡像。
-h, --help:顯示幫助信息。
示例:
1)停止并移除容器、網(wǎng)絡(luò)和默認(rèn)網(wǎng)絡(luò)
docker-compose down
2)停止并移除容器、網(wǎng)絡(luò)、卷以及鏡像
docker-compose down --volumes --rmi all
3)僅移除構(gòu)建時(shí)創(chuàng)建的本地鏡像
docker-compose down --rmi local
4)指定配置文件
docker-compose -f my-compose-file.yml down
注意事項(xiàng):
使用 docker-compose down --volumes 會(huì)刪除所有在 docker-compose.yml 文件中定義的卷,包括默認(rèn)卷和命名卷。如果你不想刪除這些卷,請(qǐng)不要使用這個(gè)選項(xiàng)。
刪除鏡像操作是不可逆的,請(qǐng)確保在刪除鏡像之前備份必要的數(shù)據(jù)。
如果你使用 Docker Compose 來(lái)管理多個(gè)環(huán)境(例如開(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境),請(qǐng)確保你在正確的環(huán)境中運(yùn)行 docker-compose down 命令,以避免誤刪重要數(shù)據(jù)。
3、docker-compose stop 命令
docker-compose stop
停止 Compose 應(yīng)用相關(guān)的所有容器,但不會(huì)刪除它們。
被停止的應(yīng)用可以很容易地通過(guò) docker-compose restart 命令重新啟動(dòng)。
docker-compose stop 命令用于停止通過(guò) docker-compose.yml 文件定義并啟動(dòng)的所有容器。這個(gè)命令不會(huì)移除容器、網(wǎng)絡(luò)或卷,它只是停止了容器的運(yùn)行。
4、docker-compose start 命令
docker-compose start
docker-compose start 命令用于啟動(dòng)之前已經(jīng)創(chuàng)建但已停止的容器。
5、docker-compose restart 命令
docker-compose restart
重啟已停止的 Compose 應(yīng)用。
如果用戶在停止該應(yīng)用后對(duì)其進(jìn)行了變更,那么變更的內(nèi)容不會(huì)反映在重啟后的應(yīng)用中,這時(shí)需要重新部署應(yīng)用使變更生效。
6、docker-compose ps 命令
docker-compose ps
用于列出 Compose 應(yīng)用中的各個(gè)容器。
輸出內(nèi)容包括當(dāng)前狀態(tài)、容器運(yùn)行的命令以及網(wǎng)絡(luò)端口。
7、docker-compose rm 命令
用于刪除已停止的 Compose 應(yīng)用。它會(huì)刪除容器和網(wǎng)絡(luò),但是不會(huì)刪除卷和鏡像。
語(yǔ)法:
docker-compose rm [OPTIONS] [SERVICE...]
選項(xiàng):
-f, --file FILE:指定使用的 Compose 配置文件,默認(rèn)為 docker-compose.yml。
-v, --volumes:刪除容器的同時(shí)刪除由 docker-compose.yml 文件定義的卷(如果它們存在并且是容器專用的)。
-a, --all:刪除所有服務(wù)容器,而不僅僅是停止的容器。默認(rèn)情況下,docker-compose rm 只刪除停止的容器。
--rmi TYPE:刪除鏡像。這個(gè)選項(xiàng)會(huì)刪除構(gòu)建鏡像時(shí)產(chǎn)生的中間鏡像和構(gòu)建緩存。TYPE 可以是 all(刪除所有鏡像)、local(只刪除本地鏡像)或 built(只刪除通過(guò) docker-compose 構(gòu)建的鏡像)。
-s, --stop:在刪除容器之前先停止它們。這是默認(rèn)行為,可以通過(guò)添加 --no-stop 標(biāo)志來(lái)覆蓋。
--no-stop:在刪除容器之前不停止它們(通常與 -f 一起使用)。
示例:
1)刪除所有停止的容器
docker-compose rm
這個(gè)命令會(huì)刪除所有在 docker-compose.yml 文件中定義且當(dāng)前已停止的容器。
2)刪除所有容器
docker-compose rm -a
這個(gè)命令會(huì)刪除所有在 docker-compose.yml 文件中定義的容器,無(wú)論它們是運(yùn)行中的還是已停止的。
3)刪除容器和卷
docker-compose rm -v
這個(gè)命令會(huì)刪除所有已停止的容器以及由 docker-compose.yml 文件定義的卷(如果它們存在并且是容器專用的)。
4)使用指定的 Compose 配置文件
docker-compose -f my-compose.yml rm
這個(gè)命令會(huì)使用 my-compose.yml 文件來(lái)刪除容器。
5)刪除鏡像
docker-compose rm --rmi local
這個(gè)命令會(huì)刪除所有通過(guò) docker-compose 構(gòu)建且在本地存在的鏡像。
注意事項(xiàng):
使用 docker-compose rm 命令時(shí),請(qǐng)確保你確實(shí)想要?jiǎng)h除這些容器,因?yàn)閯h除后的數(shù)據(jù)(除非已備份到卷中)將不可恢復(fù)。
如果容器正在運(yùn)行,你需要先停止它們,或者使用 -s 或 --stop 選項(xiàng)來(lái)確保在刪除之前先停止它們。
8、docker-compose logs 命令
docker-compose logs 命令用于查看 Docker Compose 應(yīng)用中各個(gè)服務(wù)的日志。這個(gè)命令非常有用,因?yàn)樗梢詭椭阍\斷問(wèn)題或監(jiān)視服務(wù)的行為。
基本用法:
docker-compose logs [options] [SERVICE...]
SERVICE(可選):指定要查看日志的服務(wù)名稱。如果未指定,則顯示所有服務(wù)的日志。
常用選項(xiàng):
--follow, -f:實(shí)時(shí)跟蹤日志輸出,類似于 tail -f。
--tail, -t "all":顯示日志的最后幾行。默認(rèn)值是 all,也可以指定一個(gè)數(shù)字。
--no-color:禁用顏色輸出,使日志更適合重定向到文件或其他工具。
--timestamps, -T:在日志輸出中包含時(shí)間戳。
示例:
1)查看所有服務(wù)的日志
docker-compose logs
2)查看特定服務(wù)的日志
docker-compose logs web
3)查看特定服務(wù)的最后10行日志
docker-compose logs --tail 10 web
4)查看所有服務(wù)的日志并包含時(shí)間戳
docker-compose logs -T
9、使用多個(gè)Compose文件
你可以將配置拆分為多個(gè)文件:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
四、docker-compose.yml 配置詳解
1、Compose配置文件格式版本與Docker引擎的兼容性表
Compose file format | Docker Engine release |
Compose specification | 19.03.0+ |
3.8 | 19.03.0+ |
3.7 | 18.06.0+ |
3.6 | 18.02.0+ |
3.5 | 17.12.0+ |
3.4 | 17.09.0+ |
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3.0 | 1.13.0+ |
2.4 | 17.12.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2.0 | 1.10.0+ |
2、頂級(jí)配置項(xiàng)
version 定義了版本信息
services 定義了服務(wù)的配置信息
networks 定義了網(wǎng)絡(luò)信息,提供給 services 中的 具體容器使用
volumes 定義了卷信息,提供給 services 中的 具體容器使用
示例:
version: "3.8" # Compose文件版本 services: redis: # 服務(wù)名稱 image: redis:alpine # 使用的鏡像 ports: - "6379" # 指定的端口 networks: - frontend # 使用的網(wǎng)絡(luò) deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure db: image: postgres:9.4 volumes: - db-data:/var/lib/postgresql/data networks: - backend result: image: nginx ports: - "5001:80" networks: - backend depends_on: - db deploy: replicas: 1 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure worker: image: nginx networks: - frontend - backend deploy: mode: replicated replicas: 1 labels: [APP=VOTING] restart_policy: condition: on-failure delay: 10s max_attempts: 3 window: 120s networks: frontend: backend: volumes: db-data:
3、version 常用版本
指定Docker Compose文件格式的版本。常用版本為3.8,3.7等。
4、services 配置指令
1)container_name
指定自定義容器名稱,而不是生成的默認(rèn)名稱。
version: "3.8" services: redis: image: redis:alpine container_name: redis_test
2)image
指定容器運(yùn)行的鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會(huì)嘗試?yán)∵@個(gè)鏡像。
version: "3.8" services: redis: image: redis:alpine
3)build
指定 Dockerfile 所在文件夾的路徑(可以是絕對(duì)路徑,或者相對(duì) docker-compose.yml 文件的路徑)。Compose 將會(huì)利用它自動(dòng)構(gòu)建這個(gè)鏡像,然后使用這個(gè)鏡像。
version: '3.8' services: webapp: build: ./dir
也可以使用 context 指令指定 Dockerfile 所在文件夾的路徑(或者是git倉(cāng)庫(kù)的URL)。同時(shí)使用 dockerfile 指令指定 Dockerfile 文件名。
version: '3.8' services: webapp: #自定義發(fā)我名稱 ,主要用查詢 build: context: ./dir dockerfile: Dockerfile-name
注意:
如果同時(shí)指定了 image和 build, image 不在具有單獨(dú)使用它的意義,而是指定了目前要構(gòu)建的鏡像的名稱。也就是說(shuō) Compose 會(huì)使用 build 指令中指定的 Dockerfile 構(gòu)建的鏡像,之后構(gòu)建的鏡像名稱使用 image 中指定的名字 webapp:tag命名。
4)command
使用 command 可以覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令。
# 寫成shell形式 command: bundle exec thin -p 3000 # 寫成Dockerfile中的exec格式 command: [bundle, exec, thin, -p, 3000]
5)depends_on
設(shè)置依賴關(guān)系。解決容器的依賴、啟動(dòng)先后的問(wèn)題。
version: "3.8" services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres
注意:web 服務(wù)不會(huì)等待 redis 和 db 完全啟動(dòng) 之后才啟動(dòng)。
6)environment
添加環(huán)境變量。您可以使用數(shù)組或字典、任何布爾值,布爾值需要用引號(hào)引起來(lái),以確保 YML 解析器不會(huì)將其轉(zhuǎn)換為 True 或 False。
environment: RACK_ENV: development SHOW: 'true'
如果變量名稱或者值中用到 true|false,yes|no 等表達(dá)布爾含義的詞匯,最好放到引號(hào)里,避免 YAML 自動(dòng)解析某些內(nèi)容為對(duì)應(yīng)的布爾語(yǔ)義。這些特定詞匯如下:
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
7)expose
暴露端口,但不映射到宿主機(jī),只被連接的服務(wù)訪問(wèn)。
僅可以指定內(nèi)部端口為參數(shù):
expose: - "3000" - "8000"
8)ports
映射端口信息。
宿主機(jī)端口 : 容器端口 (即:HOST:CONTAINER) 的格式,或者僅僅指定容器的端口(宿主機(jī)將會(huì)隨機(jī)選擇端口)。
ports: - "3000" - "3000-3005" - "8000:8000" - "9090-9091:8080-8081" - "49100:22" - "127.0.0.18001" - "127.0.0.15000-5010" - "6060:6060/udp"
注意:當(dāng)使用 HOST:CONTAINER 格式來(lái)映射端口時(shí),如果你使用的容器端口小于 60 并且沒(méi)放到引號(hào)里,可能會(huì)得到錯(cuò)誤結(jié)果,因?yàn)?YAML 會(huì)自動(dòng)解析 xx:yy 這種數(shù)字格式為 60 進(jìn)制。為避免出現(xiàn)這種問(wèn)題,建議數(shù)字串都采用引號(hào)括起來(lái)的字符串格式。
9)extra_hosts
添加主機(jī)名映射。類似 docker client --add-host。
extra_hosts: - "somehost:162.242.195.82" - "otherhost:50.31.209.229"
以上會(huì)在此服務(wù)的內(nèi)部容器中 /etc/hosts 創(chuàng)建一個(gè)具有 ip 地址和主機(jī)名的映射關(guān)系:
162.242.195.82 somehost 50.31.209.229 otherhost
10)networks
配置容器連接的網(wǎng)絡(luò),引用頂級(jí) networks 下的條目 。
services: some-service: networks: some-network: aliases: - alias1 other-network: aliases: - alias2 networks: some-network: # Use a custom driver driver: custom-driver-1 other-network: # Use a custom driver which takes special options driver: custom-driver-2
11)entrypoint
指定服務(wù)容器啟動(dòng)后執(zhí)行的入口文件。
12)user
指定容器中運(yùn)行應(yīng)用的用戶名。
13)working_dir
指定容器中工作目錄。
14)restart
restart:
no:是默認(rèn)的重啟策略,在任何情況下都不會(huì)重啟容器。
always:容器總是重新啟動(dòng)。
on-failure:在容器非正常退出時(shí)(退出狀態(tài)非0),才會(huì)重啟容器。
unless-stopped:在容器退出時(shí)總是重啟容器,但是不考慮在Docker守護(hù)進(jìn)程啟動(dòng)時(shí)就已經(jīng)停止了的容器
restart: "no" restart: always restart: on-failure restart: unless-stopped
指定容器退出后的重啟策略為始終重啟。該命令對(duì)保持服務(wù)始終運(yùn)行十分有效,在生產(chǎn)環(huán)境 中推薦配置為 always 或者 unless-stopped 。
restart: always
注:swarm 集群模式,請(qǐng)改用 restart_policy。
15)aliases
aliases :同一網(wǎng)絡(luò)上的其他容器可以使用服務(wù)名稱或此別名來(lái)連接到對(duì)應(yīng)容器的服務(wù)。
services: some-service: networks: some-network: aliases: - alias1 - alias3 other-network: aliases: - alias2
16)healthcheck
用于檢測(cè) docker 服務(wù)是否健康運(yùn)行。
services: web: image: nginx healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] # 設(shè)置檢測(cè)程序 interval: 1m30s # 設(shè)置檢測(cè)間隔 timeout: 10s # 設(shè)置檢測(cè)超時(shí)時(shí)間 retries: 3 # 設(shè)置重試次數(shù) start_period: 40s # 啟動(dòng)后,多少秒開(kāi)始啟動(dòng)檢測(cè)程序
17)env_file
從文件添加環(huán)境變量??梢允菃蝹€(gè)值或列表的多個(gè)值。
env_file: .env
也可以是列表格式:
env_file: - ./common.env - ./apps/web.env - /opt/secrets.env
18)Compose中的環(huán)境變量
你可以使用.env文件設(shè)置docker-compose.yml中使用的變量:
version: '3.8' services: web: image: nginx ports: - "${HOST_PORT}:80"
.env文件:
HOST_PORT=8080
5、volumes 配置指令
將主機(jī)的數(shù)據(jù)卷或者文件掛載到容器里。
version: "3.8" services: db: image: postgres:latest volumes: - "/localhost/postgres.sock:/var/run/postgres/postgres.sock" - "/localhost/data:/var/lib/postgresql/data"
數(shù)據(jù)卷所掛載路徑設(shè)置??梢栽O(shè)置宿主機(jī)路徑 (HOST:CONTAINER) 或加上訪問(wèn)模式 (HOSTro)。
該指令中路徑支持相對(duì)路徑:
volumes: - /var/lib/mysql - cache/:/tmp/cache - ~/configs:/etc/configs/:ro
6、networks 配置指令
1)未顯式聲明網(wǎng)絡(luò)環(huán)境
使用docker-compose up啟動(dòng)容器后,這些容器都會(huì)被加入app_default網(wǎng)絡(luò)中。使用docker network ls可以查看網(wǎng)絡(luò)列表,docker network inspect 可以查看對(duì)應(yīng)網(wǎng)絡(luò)的配置。
version: '3' services: web: mage: nginx:latest container_name: web depends_on: - db ports: - "9090:80" links: - db db: image: mysql container_name: db
2)networks關(guān)鍵字指定自定義網(wǎng)絡(luò)
例如:下面的docker-compose.yml文件,定義了front和back網(wǎng)絡(luò),實(shí)現(xiàn)了網(wǎng)絡(luò)隔離。其中proxy和db之間只能通過(guò)app來(lái)實(shí)現(xiàn)通信。其中,custom-driver-1并不能直接使用,你應(yīng)該替換為host, bridge, overlay等選項(xiàng)中的一種。
version: '3.8' services: proxy: build: ./proxy networks: - front app: build: ./app networks: - front - back db: image: postgres networks: - back networks: front: # Use a custom driver driver: custom-driver-1 back: # Use a custom driver which takes special options driver: custom-driver-2 driver_opts: foo: "1" bar: "2"
3)配置默認(rèn)網(wǎng)絡(luò)
version: '3.8' services: web: build: . ports: - "8000:8000" db: image: postgres networks: default: # Use a custom driver driver: custom-driver-1
4)使用已存在的網(wǎng)絡(luò)
networks: default: external: name: my-pre-existing-network
五、最佳實(shí)踐
保持docker-compose.yml簡(jiǎn)潔:使用多個(gè)文件來(lái)分離開(kāi)發(fā)和生產(chǎn)配置。
版本控制:將你的docker-compose.yml放入版本控制系統(tǒng)中,以管理跨環(huán)境的配置。
使用命名卷:確保數(shù)據(jù)在容器重啟后依然存在。
version: '3.8' # 指定Compose文件的版本 services: # 定義多個(gè)服務(wù) web: # Web服務(wù),通常是前端或后端的應(yīng)用 image: nginx:latest # 使用Nginx鏡像 ports: - "80:80" # 將容器的80端口映射到主機(jī)的80端口 volumes: - ./web:/usr/share/nginx/html # 掛載本地目錄到容器中 environment: - NGINX_HOST=localhost # 設(shè)置環(huán)境變量 - NGINX_PORT=80 networks: - frontend # 連接到前端網(wǎng)絡(luò) depends_on: - app # 該服務(wù)將在'app'服務(wù)啟動(dòng)后才啟動(dòng) restart: always # 在容器崩潰后總是重啟 app: # 應(yīng)用服務(wù),可以是任何語(yǔ)言的后端服務(wù) build: # 從Dockerfile構(gòu)建鏡像 context: ./app # Dockerfile所在的目錄 dockerfile: Dockerfile # 使用的Dockerfile名稱 ports: - "3000:3000" # 將容器的3000端口映射到主機(jī)的3000端口 volumes: - ./app:/usr/src/app # 掛載本地代碼目錄到容器中 environment: - NODE_ENV=development # 設(shè)置環(huán)境變量 - PORT=3000 networks: - frontend # 連接到前端網(wǎng)絡(luò) - backend # 連接到后端網(wǎng)絡(luò) depends_on: - db # 該服務(wù)將在'db'服務(wù)啟動(dòng)后才啟動(dòng) restart: on-failure # 僅在容器非正常退出時(shí)重啟 db: # 數(shù)據(jù)庫(kù)服務(wù),使用MySQL image: mysql:5.7 # 使用MySQL 5.7鏡像 volumes: - db_data:/var/lib/mysql # 持久化MySQL數(shù)據(jù)到命名卷 environment: MYSQL_ROOT_PASSWORD: example # MySQL root用戶的密碼 MYSQL_DATABASE: example_db # 自動(dòng)創(chuàng)建的數(shù)據(jù)庫(kù)名稱 MYSQL_USER: user # 創(chuàng)建的用戶名稱 MYSQL_PASSWORD: password # 用戶密碼 networks: - backend # 連接到后端網(wǎng)絡(luò) restart: unless-stopped # 僅在手動(dòng)停止時(shí)不重啟 volumes: # 定義命名卷,用于數(shù)據(jù)持久化 db_data: # MySQL數(shù)據(jù)卷 networks: # 定義自定義網(wǎng)絡(luò) frontend: # 前端網(wǎng)絡(luò),連接web和app服務(wù) backend: # 后端網(wǎng)絡(luò),連接app和db服務(wù)
-
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3309瀏覽量
58334 -
Docker
+關(guān)注
關(guān)注
0文章
498瀏覽量
12336
原文標(biāo)題:docker-compose 配置文件內(nèi)容詳解以及常用命令介紹
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
docker的常用命令有哪些?
SQL的常用命令使用方法詳細(xì)說(shuō)明

評(píng)論