🧩 docker-compose 是什麼?

它是一個工具,用來:

  • 定義多個容器(服務)在一個檔案中

  • 自動處理網路、volume、依賴順序

  • docker-compose up 一鍵啟動所有容器

確認版本

docker compose version

建立test.yml檔案(放在你想部署的資料夾)

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 中:

  • 所有服務預設會加入同一個網路(除非你指定)
  • 可以用服務名稱當作 DNS 名稱來連線

例如:

  • drawio 可以用 http://stackedit-plus:8080 連到 StackEdit
  • stirling-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

如果成功,代表網路互通沒問題。