# Docker Compose 基礎教學 --- ## Docker Compose 簡介 ![](https://i.imgur.com/ihj48xe.png =50%x) ---- Docker Compose 是一個開源工具,可讓您使用YAML文件來定義和運行多個容器應用程序。這些容器可以共同工作,以形成一個應用程序。使用Docker Compose,您可以編寫一個單一文件,以描述您的應用程序的架構和配置,然後使用一個命令來啟動,停止和重建整個應用程序。 ---- ### 優勢 * 簡化了多容器應用程序的部署和管理。 * 容易定義整個應用程序的配置,因為所有內容都包含在一個文件中。 * 可以快速複製和部署整個應用程序,使您的開發流程更加高效。 * 可以更好地管理容器的生命週期,例如在容器停止時清理資源。 --- ### 編寫結構 ---- Docker compose是採用YAML的格式編寫 以下是常見的Docker compose 參數 * version:Docker Compose的版本號。 * services:定義多個容器,每個容器都對應一個服務。 * networks:定義多個網絡,每個網絡對應一個區域網路。 * volumes:定義多個卷,每個卷對應一個資料區域。 * configs:定義多個配置,每個配置對應一個容器的配置。 ---- ```yaml= version: '3' # 指定Docker Compose文件的版本號 services: web: # 定義一個名為"web"的服務 build: . # 使用當前目錄下的Dockerfile進行構建 container_name: my_web_container # 指定容器名稱為"my_web_container" restart: always # 容器退出後總是重啟 ports: # 映射端口號 - "8000:80" # 將主機的8000端口號映射到容器的80端口號 volumes: # 挂載卷 - ./webapp:/code # 挂載主機上的./webapp目錄到容器的/code目錄 db: # 定義一個名為"db"的服務 image: postgres:latest # 使用最新版的Postgres鏡像 container_name: my_db_container # 指定容器名稱為"my_db_container" restart: always # 容器退出後總是重啟 environment: # 環境變量 POSTGRES_USER: myuser # 設置Postgres用戶名 POSTGRES_PASSWORD: mypass # 設置Postgres密碼 networks: # 定義網絡 app_net: # 定義一個名為"app_net"的網絡 volumes: # 定義卷 db_data: # 定義一個名為"db_data"的卷 ``` ---- * version:指定Docker Compose文件的版本號,這裡使用的是版本3。 * services:定義Docker Compose中的多個服務,這裡定義了兩個服務:"web"和"db"。 * build:指定Docker Compose中的服務使用當前目錄下的Dockerfile進行構建。 * container_name:指定Docker Compose中的服務對應的容器名稱。 * restart:指定Docker Compose中的服務在退出後總是重啟。 ---- * ports:指定Docker Compose中的服務需要映射到主機的端口號,這裡將主機的8000端口號映射到容器的80端口號。 * volumes:指定Docker Compose中的服務需要掛載的卷,這裡挂載了主機上的./webapp目錄到容器的/code目錄。 * image:指定Docker Compose中的服務使用 ---- ```yaml= --- version: "2" services: bookstack: image: lscr.io/linuxserver/bookstack container_name: bookstack environment: - PUID=1000 - PGID=1000 - APP_URL=http://192.168.1.58:6875 - DB_HOST=bookstack_db - DB_PORT=3306 - DB_USER=bookstack - DB_PASS=1qaz2wsx - DB_DATABASE=bookstackapp volumes: - /path/to/data:/config ports: - 6875:80 restart: unless-stopped depends_on: - bookstack_db bookstack_db: image: lscr.io/linuxserver/mariadb container_name: bookstack_db environment: - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=1qaz2wsx - TZ=Europe/London - MYSQL_DATABASE=bookstackapp - MYSQL_USER=bookstack - MYSQL_PASSWORD=1qaz2wsx volumes: - /path/to/data:/config restart: unless-stopped ```
{"metaMigratedAt":"2023-06-18T00:52:15.426Z","metaMigratedFrom":"YAML","title":"Docker Compose 基礎教學","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"spotlight\":{\"enabled\":false}}","contributors":"[{\"id\":\"388c4bf6-8beb-45c5-8632-2fb50296a8c5\",\"add\":2766,\"del\":3}]"}
    187 views