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

猜你喜欢

转载自blog.csdn.net/weixin_36851500/article/details/103512220