它是一個工具,用來:
定義多個容器(服務)在一個檔案中
自動處理網路、volume、依賴順序
用 docker-compose up
一鍵啟動所有容器
docker compose version
version: '3.8'
services:
stirling-pdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
container_name: stirling-pdf
ports:
- "8080:8080"
restart: unless-stopped
drawio:
image: jgraph/drawio
container_name: drawio
ports:
- "8081:8080"
restart: unless-stopped
stackedit-plus:
image: mafgwo/stackedit-plus:latest
container_name: stackedit-plus
ports:
- "8082:8080"
restart: unless-stopped
docker compose up -d
這會:
下載 image(如果尚未下載)
建立並啟動容器
背景執行(-d
)
指令 | 功能 |
---|---|
docker compose up -d |
啟動所有服務 |
docker compose down |
停止並移除所有容器、網路 |
docker compose ps |
查看容器狀態 |
docker compose logs -f |
即時查看所有容器日誌 |
docker compose restart |
重新啟動所有容器 |
要讓這三個容器互通網路,docker-compose
會自動幫你建立一個虛擬網路,讓所有服務彼此用「服務名稱」當主機名稱來通訊。你不需要額外設定 bridge 或 IP,只要用 stirling-pdf
, drawio
, stackedit-plus
當作 hostname 就能互相連線。
在 docker-compose
中:
例如:
drawio
可以用 http://stackedit-plus:8080
連到 StackEditstirling-pdf
可以用 http://drawio:8080
連到 Draw.io如果你想明確定義網路名稱,可以這樣做:
version: '3.8'
services:
stirling-pdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
container_name: stirling-pdf
ports:
- "8080:8080"
restart: unless-stopped
networks:
- internal-net
drawio:
image: jgraph/drawio
container_name: drawio
ports:
- "8081:8080"
restart: unless-stopped
networks:
- internal-net
stackedit-plus:
image: mafgwo/stackedit-plus:latest
container_name: stackedit-plus
ports:
- "8082:8080"
restart: unless-stopped
networks:
- internal-net
networks:
internal-net:
driver: bridge
這樣三個容器都在 internal-net
裡,彼此可以用服務名稱互相連線。
你可以進入其中一個容器測試連線:
docker exec -it stirling-pdf sh
# 然後在容器內執行:
wget http://drawio:8080
如果成功,代表網路互通沒問題。