【Docker】docker-compose 使用簡介

是什麼html

Docker Compose 是一個容器編排的工具,經過編寫一個簡單的 yml 配置文件來定義應用程序所須要的全部服務(如 web 應用的 lamp),而後經過一個簡單的 docker-compose up 命令就能夠標準化的建立全部容器並啓動服務。mysql

docker-compose.ymlweb

一個簡單的示例sql

version: '3' # 版本,有1.x,2.x,3.x 跟docker 版本有對應關係,配置也有些差別,用新版就行了
services:   # 定義一組服務
    web:    # 第一個服務
        hostname: webapp # 給容器起個名字
        build: # 指定鏡像來源,這是其中一種,使用 dockerfile 構建
            context: ../ # docker run 運行的上下文路徑
            dockerfile: build/Dockerfile # dockerfile 文件位置,注意跟上一個配置對應,不指定默認是當前目錄的 Dockerfile
        networks: # 指定網絡
            - dev-local-network # 網絡名稱,須要先定義
        depends_on: # 指定依賴服務,服務會在依賴服務啓動後再開啓
            - mysql # 服務名稱
        ports: # 端口映射
            - "80:80" # 宿主機端口到容器端口的映射
        volumes: # 宿主機的數據卷或文件掛載到容器裏
            - ../:/var/www/html # 宿主機路徑:容器裏的路徑
        environment: # 環境變量,有兩種方式,直接鍵值對或者 env_file
            OMS_DB_HOST: ${OMS_DB_HOST} # ${} 表示取配置文件裏的值,默認文件是當前默認的.env,也能夠--env-file 指定路徑
        command: ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf", "--nodaemon"] # 這是容器啓動後的第一個命令,注意是要在前臺的命令,不能執行完就結束了,否則容器啓動就關閉了
    mysql: # 第二個服務了
        image: "mysql:5.7" # 指定鏡像源的第二種方式,直接指定 image,這是是官方的 mysql 5.7版本
networks: # 定義網絡
    dev-local-network: # 網絡名稱,上面用到的網絡就是這裏定義的

啓動docker

docker-compose -f .\build\docker-compose.yml --env-file .\build\.env up -d

-f 指定 yml 文件路徑,不指定默認爲當前目錄下的 docker-compose.yml 文件
--env-file 指定變量配置路徑,就是上面說到的 ${}, 默認當前目錄的 .env 文件,沒有也不要緊,就沒有配置
-d 表示後臺啓動網絡

中止app

docker-compose -f .\build\docker-compose.yml stop

服務中止,可是建立的容器仍然保留,下次能夠繼續使用webapp

銷燬工具

docker-compose -f .\build\docker-compose.yml down

服務中止後,一併把容器也刪除掉ui

volume 權限

volume 掛載的目錄默認與縮主機屬主和權限也相同,縮主機中屬主是 root,那在容器中對應的也是root,可是並非完整的縮主機的 root 權限,若是要以特權模式運行,能夠指定 --privileged 參數(慎用)。

相關文章
相關標籤/搜索