docker-compose安裝及docker-compose.yml詳解


1.下載安裝

[root@cx--0002 ~]# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@cx--0002 ~]# chmod +x /usr/local/bin/docker-compose

2.docker-compose.yml詳解 https://docs.docker.com/compose/compose-file/

version : '3'        #docker引擎對應所支持的docker-compose文本格式
services:            #本工程的服務配置列表

  swapping:            #spring boot的服務名,服務名自定義
    container_name: swapping-compose    
                    #本spring boot服務之后啟動的容器實例的名字,如果指定,按照這個命名容器,如果未指定,容器命名規則是
                    #【[compose文件所在目錄]_[服務名]_1】,例如【swappingdockercompose_swapping_1】
            #如果多啟動,也就是docker-compose scale swapping=3 mysql=2的話,就不需要指定容器名稱,否則會報錯 容器名重復存在的問題
    build:            #基於Dockerfile文件構建鏡像時使用的屬性
      context: .    #代表當前目錄,也可以指定絕對路徑[/path/test/Dockerfile]或相對路徑[../test/Dockerfile],盡量放在當前目錄,便於管理
      dockerfile: Dockerfile-swapping    #指定Dockerfile文件名。如果context指定了文件名,這里就不用本屬性了
    ports:                        #影射端口屬性
      - "9666:9666"                #建議使用字符串格式,指定宿主機端口映射到本容器的端口
    volumes:                    #掛載屬性
      - .:/vol/development        
                                  #掛載路徑在compose配置文件中只能指定容器內的目錄,而docker run命令可以指定[宿主機目錄:容器內目錄]的掛載方式。可以使用:ro對容器內目錄設置只讀,來保護宿主機的文件系統
    depends_on:                    #本服務啟動,需要依賴哪些別的服務  例如這里;mysql服務就會先於swapping服務啟動。至於配置多個的話,depends_on內的多個依賴的啟動先后順序未測試過
      - mysql
    links:                        #與depends_on相對應,上面控制啟動順序,這個控制容器連接問題。
      - "mysql:mysql"            #值可以是- mysql[- 服務名],也可以是- "mysql:mysql"[- "服務名:別名"]
    restart: always                #是否隨docker服務啟動重啟
    networks:                    #加入指定網絡
      - my-network                #自定義的網絡名
    environment:                #environment 和 Dockerfile 中的 ENV 指令一樣會把變量一直保存在鏡像、容器中,類似 docker run -e 的效果。設置容器的環境變量
      - TZ=Asia/Shanghai        #這里設置容器的時區為亞洲上海,也就解決了容器通過compose編排啟動的 時區問題!!!!解決了容器的時區問題!!!

  mysql:                            #服務名叫mysql,自定義
    container_name: mysql-compose    #容器名
    image: mysql:5.7                #雖然沒有使用build,但使用了image,指定基於mysql:5.7鏡像為基礎鏡像來構建鏡像。【使用build基於Dockerfile文件構建,Dockerfile文件中也有FROM基於基礎鏡像】
    ports:
      - "33061:3306"
    command: [                        #使用 command 可以覆蓋容器啟動后默認執行的命令
            '--character-set-server=utf8mb4',            #設置數據庫表的數據集
            '--collation-server=utf8mb4_unicode_ci',    #設置數據庫表的數據集
            '--default-time-zone=+8:00'                    #設置mysql數據庫的 時區問題!!!! 而不是設置容器的時區問題!!!!
    ]
    environment:            
      MYSQL_DATABASE: swapping                             #設置初始的數據庫名
      MYSQL_ROOT_PASSWORD: 398023                        #設置root連接密碼
      MYSQL_ROOT_HOST: '%' 
    restart: always
    networks:
      - my-network
networks:                        #關於compose中的networks的詳細使用https://blog.csdn.net/Kiloveyousmile/article/details/79830810
  my-network:                    #自定義的網絡,會在第一次構建時候創建自定義網絡,默認是bridge

3.compose格式對應docker引擎版本

官方地址:【https://docs.docker.com/compose/compose-file/#compose-and-docker-compatibility-matrix


免責聲明!

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



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