---
# System prepended metadata

title: docker-compose

---

## 說明
定義和執行多容器 Docker 應用程式的工具。
## 步驟
1. 建立dockerfile、docker-compose.yml檔案
2. docker-compose檔案內容
    範例
    ```
    services:
      postgres: //服務1名稱
        build:  //建立容器的方法
          context: ./database //建立容器依據的dockerfile
        container_name: member-postgres
        environment:
          POSTGRES_USER: snai-dev
      member: //服務2名稱
        build:
          context: .
        container_name: member-service
        ports:
          - "7700:7700"
        depends_on:
          - postgres
        environment:
          DB_HOST: postgres
    ```
3. 執行 `docker compose up` (--build 會重新建立image)啟動多個容器
    同一個Docker Compose 啟動預設會用相同的網路與容器名稱，如果之前的容器沒被刪除（例如用 Ctrl+C 停止但容器沒移除），再用 docker compose up 會嘗試啟動已存在的容器，這種情況不會報錯，只會重用舊容器（若容器本身已停止，會先啟動它）。

    如果不同docker compose有同名容器正在執行，docker-compose 會拒絕啟動同名容器，避免衝突。但通常 docker compose up 會先處理這個問題（啟動、重啟或報錯）。

