docker-compose.yml文件配置


docker-compose.yml文件配置使用的yaml語言

YAML 是一種簡潔的非標記語言。YAML以數據為中心,使用空白,縮進,分行組織數據,從而使得表示更加簡潔易讀。

首先推薦一個自動檢測YAML 語法的網址:  http://nodeca.github.io/js-yaml/

基本規則

  1. 大小寫敏感

  2. 使用縮進表示層級關系

  3. 禁止使用tab縮進,只能使用空格鍵

  4. 縮進長度沒有限制,只要元素對齊就表示這些元素屬於一個層級

  5. 使用#表示注釋

  6. 字符串可以不用引號標注

YAML中允許表示三種格式,分別是常量值,對象和數組

言歸正傳到docker-compose.yml文件配置

docker-compose.yml 文件不僅指定正在使用的容器,還指定如何單獨配置各容器。常用的配置項如下所示:

  • build:定義鏡像生成,可以指定Dockerfile文件所在的目錄路徑,支持絕對路徑和相對路徑;

  • image:從指定的鏡像中啟動容器,可以是存儲倉庫、標簽以及鏡像 ID,如果鏡像不存在,Compose 會自動拉去鏡像;

  • environment:定義環境變量和配置;

  • ports:定義端口映射,比如上面配置中將容器上的公開端口 80 轉接到主機上的外部端口 9901和9902;

  • depends_on,定義依賴關系。此定義會讓當前服務處於等待狀態,直到這些依賴服務啟動。比如某個服務依賴數據庫服務,那么通過此配置解決了服務的啟動順序的問題;

  • volumes,掛載一個目錄或者一個已存在的數據卷容器,可以直接使用 HOST:CONTAINER 這樣的格式,或者使用 HOST:CONTAINER:ro 這樣的格式,后者對於容器來說,數據卷是只讀的,這樣可以有效保護宿主機的文件系統;

  • context,指定Dockerfile 的文件路徑,也可以是到鏈接到 git 倉庫的 url;

  • args,指定構建參數,這些參數只能在構建過程中訪問;

  • target,定義構建指定的階段Dockerfile,比如針對不同階段使用不同的dockerfile,開發階段使用支持編譯調試的dockerfile,而生產環境,則使用輕量級的dockerfile;command,覆蓋默認命令;

  • container_name,指定自定義容器名稱,而不是生成的默認名稱。

  • depends_on:解決了容器的依賴、啟動先后的問題

  •  container_name:全控制容器的命名,可以使用這個標簽指定
  • build:服務除了可以基於指定的鏡像,還可以基於一份 Dockerfile,在使用 up 啟動之時執行構建任務,這個構建標簽就是 build,它可以指定 Dockerfile 所在文件夾的路徑。Compose 將會利用它自動構建這個鏡像,然后使用這個鏡像啟動服務容器
build: /path/to/build/dir
# 也可以是相對路徑,只要上下文確定就可以讀取到 Dockerfile。
build: ./dir
# 設定上下文根目錄,然后以該目錄為准指定 Dockerfile。
build:
  context: ../
  dockerfile: path/of/Dockerfile

  注:如果你同時指定了 image 和 build 兩個標簽,那么 Compose 會構建鏡像並且把鏡像命名為 image 后面的那個名字。

entrypoint:用於指定接入點
entrypoint: /code/entrypoint.sh
expose:用於指定暴露的端口,但是只是作為一種參考,實際上docker-compose.yml的端口映射還得ports這樣的標簽。

 例子:

version: "3"
services:
   zzyly:
     image: zzytest
     container_name: zzyly
     ports:
       - 80:8080
     entrypoint: ["python","main.py"]

  總是總是報錯:yaml.scanner.ScannerError:mapping values are not allowed here in "./docker-compose.yaml",line2,column 8

  出現這個錯誤的是因為yaml格式不正確,谷歌定義的yaml格式太嚴格了,每個冒號后面都必須帶有空格!!!

 

參考:https://blog.csdn.net/liguangxianbin/article/details/79492866

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM