1. 程式人生 > 實用技巧 >docker-compose.yml配置小結

docker-compose.yml配置小結

個人學習筆記,謝絕轉載!!!

原文:https://www.cnblogs.com/wshenjin/p/13293881.html


docker-compose.yml是一個定義服務、網路和卷的YAML檔案,預設路徑是當前目錄下的docker-compose.yml,可以使用.yml或.yaml作為副檔名。

docker-compose.yml標準模板檔案應該包含version、services、networks 三大部分,最關鍵的是services和networks兩個部分。

docker-compose.yml

version: '3'

services:
  rdb_01:                               #服務名稱,一個服務對應一個容器
                                       
    image: rdb-v3.2.7                   #image標籤指定服務映象名稱或映象ID,如果本地不存在,Compose將會嘗試拉取映象。
                                       
    build:                              #除了基於指定的映象,還可以基於Dockerfile。build標籤指定Dockerfile所在資料夾的路徑,Compose將會利用Dockerfile自動構建映象並啟動容器。
                                        #如果同時指定image和build兩個標籤,那麼Compose會構建映象並且把映象命名為image值指定的名字。
      context: ./redis3.2.7/            #設定上下文根目錄,也可以是連結到git倉庫的url。當提供的值是相對路徑時,被解析為相對於撰寫檔案的路徑,此目錄也是傳送到Docker守護程序的context。
      dockerfile: Dockerfile            #指定dockerfile,這個dockerfile就位於centext標籤指定的路徑下。
                                        #context和dockerfile可以合併到build標籤,例如:build: ./redis3.2.7/
                                       
    container_name: myrdb               #自定義容器名稱,預設容器名稱格式是:${專案名稱}_${服務名稱}_${序號}
                                       
    commond: CND                        #覆蓋容器啟動後預設執行的命令
    entrypoint: /path/entrypoi.sh       #覆蓋Dockerfile中的定義的entrypoint

    depends_on:                         #容器依賴
      - web_01                          #例如:web_01服務啟動完,再啟動redb_01
                                       
    ports:                              #對映埠
      - "6379:6379"                    
                                       
    extra_hosts                         #在容器/etc/hosts檔案中新增hosts
      - "host1:1.1.1.1"                
      - "host2:2.2.2.2"                
                                       
    volumes:                            #掛載卷
      - /data/redis/                    #只是指定一個路徑,會自動在建立一個數據卷
      - /volumes/rdb_01/:/data/redis/
      - /volumes/pubvolume/:/tmp/:ro    #只讀

    volumes_from:                       #從另一個服務或容器掛載其資料卷
      - web_01                          #服務名稱
        - nginx-v1.14                   #容器名稱
                                       
    dns:8.8.8.8                        #自定義dns
    dns:                               #可以按列表的語法
      - 8.8.8.8                        
      - 9.9.9.9                        

    expose:                             #暴露埠,但不對映到宿主機,只允許能被連線的服務訪問。僅可以指定內部埠為引數
      - "1234"                         
                                       
    networks:                           #指定網路,預設每個services都會建立一個獨立的網路
      - "rdb_network"                   #自定義個 rdb_network,需要在networks欄位配置
      rdb_network:                      #也可以這樣,並指定IP地址,語法捉摸不透
        ipv4_address: 172.16.1.10

    environment:                        #設定環境變數
      - RDB_ENV=TESTRDB                

networks:                              
  rdb_network:                          #自定義一個網路,rdb_network
    driver: bridge                      #網路模式
    ipam:                              
      driver: default
      config:                          
      - subnet: 172.16.1.0/24           #自定義IP段