docker-compose服務管理

docker-compose簡介

Compose 是用於定義和運行多容器 Docker 應用程序的工具。通過 Compose,您可以使用 YML 文件來配置應用程序需要的所有服務。然後,使用一個命令,就可以從 YML 文件配置中創建並啓動所有服務。

docker 容器使用

請查看基於Docker搭建LNMP環境

yml 文件不僅指定正在使用的容器,還指定如何單獨配置各容器

基本規則

大小寫敏感

使用縮進表示層級關係

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

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

使用#表示註釋

字符串可以不用引號標註

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

uild:定義鏡像生成,可以指定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 將會利用它自動構建這個鏡像,然後使用這個鏡像啓動服務容器

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"]

docker-compose搭建PHP環境

首先創建 docker-compose.yml 文件
檢測yml工具

version: '3'
services:
    nginx:
        image: nginx:latest
        # 端口映射
        ports:
            - "80:80"
        # 依賴關係 先跑php
        depends_on:
            - "php"
        # 數據卷
        volumes:
            # 映射主機./conf.d目錄到容器/etc/nginx/conf.d目錄
            - "/Users/gongzhiyang/data/www:/var/www/html:rw"
            - "/Users/gongzhiyang/data/etc/nginx:/etc/nginx:rw"
        networks:
            - app_net
        # 容器名稱
        container_name: "compose-nginx"
    php:
        image: php-fpm:2019.8
        ports:
            - "9000:9000"
        volumes:
            - "/Users/gongzhiyang/data/www:/var/www/html:rw" # web站點目錄
            - "/Users/gongzhiyang/data/etc/php/etc/:/usr/local/etc/:rw"
        networks:
            - app_net
        container_name: "compose-php"
    mysql:
        image: mysql:5.7
        ports:
            - "3306:3306"
        # 環境變量
        environment:
            # mysql密碼
            - MYSQL_ROOT_PASSWORD=123456
        networks:
            app_net:
                # 固定子網ip,網段必須在子網絡10.10.*.*
                ipv4_address: 10.10.10.1
        container_name: "compose-mysql"
networks:
    # 配置docker network
    app_net:
        driver: bridge
        ipam:
            config:
                # 子網絡
                - subnet: 10.10.0.0/16
發佈了78 篇原創文章 · 獲贊 34 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章