Docker Compose 備忘清單

PetterLiu發表於2024-05-12

Docker Compose 備忘清單

  • Docker-compsoe 是一個開源專案,用於定義和執行多容器 Docker 應用程式的工具。由 Docker 社群維護。
  • 透過一個 YAML 檔案來配置應用程式的服務,以便可以使用一個命令啟動、停止和重啟整個應用程式。
  • Docker Compose 開源地址
  • Docker Compose 發行地址 github.com

image

基本概念

  • 即一個應用程式的一個例項。
  • 容器 (container): Docker 容器,其中執行著應用程式的一個例項。
  • 映象 (image): Docker 映象,用於建立容器的模板。
  • Docker-Compose 檔案: 一個 YAML 檔案,描述了應用程式的各個服務以及它們之間的關係、配置等資訊。
Docker-Compose 檔案結構
  • version: Docker-Compose 檔案的版本。
  • services: 定義了各個服務,每個服務都有自己的配置項,如映象、埠對映、依賴等。
  • networks: 定義了應用程式使用的網路,可以自定義網路以控制服務之間的通訊。
  • volumes: 定義了應用程式使用的卷,用於持久化資料或與主機共享檔案。

常用命令

docker compose up
啟動容器
-d 後臺執行容器

docker compose down
停止容器
-v 刪除容器和卷

docker compose ps
檢視容器狀態

docker compose logs
檢視容器日誌
-f 跟隨日誌輸出

docker compose exec
進入容器
-it 啟動互動式終端

docker compose build
構建映象

docker compose rm
刪除容器

docker compose stop
停止容器

docker compose start
啟動容器

docker compose restart
重啟容器

docker compose pull
拉取映象

docker compose run
執行一個臨時容器

docker compose config
顯示配置資訊

docker compose images
列出映象

docker compose push
推送映象

docker compose version
檢視版本資訊

Docker Compose 配置

docker-compose 的配置檔案是一個 YAML 檔案,用於定義和執行多容器 Docker 應用程式。通常命名為 docker-compose.yml,它使用單一的 YAML 檔案來定義多個容器的集合,以及它們之間的依賴關係和服務。以下是一份 docker-compose.yml 檔案的配置模板,包含了常用配置項和解釋:

version: '3'  # 指定使用的 Docker Compose 檔案格式版本,目前推薦使用 3.x 或更高

services:  # 定義一個或多個服務
  service1:  # 服務名稱
    image: nginx:latest  # 使用的 Docker 映象,這裡是 Nginx 的最新版本

    # 或者使用構建指令來從 Dockerfile 構建映象
    build:
      context: ./path/to/Dockerfile  # Dockerfile 所在的目錄
      dockerfile: Dockerfile-alternative  # 可選的 Dockerfile 名稱,預設是 Dockerfile

    # 容器啟動時執行的命令,覆蓋預設的命令
    command: 
      - "nginx"
      - "-g"
      - "daemon off;"  # 以陣列形式指定,防止 shell 解析

    ports:  # 容器埠與主機埠對映
      - "80:80"  # 主機 80 埠對映到容器的 80 埠

    volumes:  # 資料卷掛載
      - ./nginx.conf:/etc/nginx/nginx.conf:ro  # 將主機上的 nginx.conf 掛載到容器的 /etc/nginx/nginx.conf,只讀
      - ./logs:/var/log/nginx  # 將 logs 目錄掛載到容器的 /var/log/nginx

    environment:  # 設定環境變數
      - MYSQL_HOST=database  # 可以引用其他服務,這裡假設有一個名為 database 的服務
      - MYSQL_PORT=3306

    depends_on:  # 服務啟動順序,這裡表明 service1 依賴於 database 服務
      - database

    networks:  # 定義網路
      - my_network  # 參與名為 my_network 的網路

  service2:  # 另一個服務示例
    # ... 類似地定義其他服務

networks:       # 定義網路
  my_network:  # 網路名稱
    driver: bridge  # 網路驅動,通常是 bridge 模式

volumes:  # 定義資料卷
  nginx_logs:  # 卷名稱

使用環境變數

docker run -e VARIABLE=VALUE ... 相同

web:
  environment:
    - DEBUG=1

您可以選擇不設定值並將環境變數從 shell 直接傳遞到容器。它的工作方式與 docker run -e VARIABLE ... 相同:

web:
  environment:
    - DEBUG
web:
  environment:
    - DEBUG=${DEBUG}

env_file 屬性允許您在 Compose 應用程式中使用多個 .env 檔案。 它的工作方式與 docker run --env-file=FILE ... 相同。

web:
  env_file:
    - web-variables.env

額外的資訊

env_file:
  - path: ./default.env
    required: true # default
  - path: ./override.env
    required: false
  • 如果指定了多個檔案,則它們將按順序進行評估,可以覆蓋先前檔案中設定的值。
  • .env 檔案中宣告的環境變數不能在 Compose 檔案中單獨再次引用。
  • 如果同時使用 env_fileenvironment 屬性,則由 environment 設定的環境變數優先順序更高。
  • env_file 屬性中指定的 .env 檔案的路徑是相對於 compose.yml 檔案的位置的。
  • .env 檔案中的值可以透過使用 docker compose run -e 命令列來從命令列覆蓋。
  • 如果使用 --env-file 替換了另一個 .env,則您的 .env 檔案可以被另一個 .env 檔案覆蓋。
  • 從 Docker Compose 版本 2.24.0 開始,您可以透過使用 required 欄位將 .env 檔案設定為可選項。當 required 設定為 false.env 檔案丟失時,Compose 將靜默忽略該條目


Tips

  • 使用 Docker-Compose 可以簡化多容器應用程式的部署和管理,但需要注意容器之間的依賴關係和通訊。
  • 配置檔案中的縮排必須使用空格,不能使用製表符。
  • 可以使用環境變數來動態設定配置項,如資料庫密碼。
  • 當你修改了 docker-compose.yml 檔案後,需要重新執行 docker-compose up 來使改動生效。
  • 使用 docker-compose build 僅重建映象,而不啟動容器。
  • 使用 docker-compose restart 重啟容器。
  • 記得清理不再需要的容器和映象,以避免磁碟空間不足。

今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 專案管理, 產品管理,資訊保安,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
影片直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續整合/CD
網際網路電商購物車架構演變案例
網際網路業務場景下訊息佇列架構
網際網路高效研發團隊管理演進之一
訊息系統架構設計演進
網際網路電商搜尋架構演化之一
企業資訊化與軟體工程的迷思
企業專案化管理介紹
軟體專案成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
專案管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
網際網路資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之效能實時度量系統演變

如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。

相關文章