• docker-compose.yml文件配置


    docker-compose.yml文件配置使用的yaml语言

    YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。

    首先推荐一个自动检测YAML 语法的网址:  http://nodeca.github.io/js-yaml/

    基本规则

    1. 大小写敏感

    2. 使用缩进表示层级关系

    3. 禁止使用tab缩进,只能使用空格键

    4. 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级

    5. 使用#表示注释

    6. 字符串可以不用引号标注

    YAML中允许表示三种格式,分别是常量值,对象和数组

    言归正传到docker-compose.yml文件配置

    docker-compose.yml 文件不仅指定正在使用的容器,还指定如何单独配置各容器。常用的配置项如下所示:

    • build:定义镜像生成,可以指定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 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器
    build: /path/to/build/dir
    # 也可以是相对路径,只要上下文确定就可以读取到 Dockerfile。
    build: ./dir
    # 设定上下文根目录,然后以该目录为准指定 Dockerfile。
    build:
      context: ../
      dockerfile: path/of/Dockerfile
    

      注:如果你同时指定了 image 和 build 两个标签,那么 Compose 会构建镜像并且把镜像命名为 image 后面的那个名字。

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

      总是总是报错:yaml.scanner.ScannerError:mapping values are not allowed here in "./docker-compose.yaml",line2,column 8

      出现这个错误的是因为yaml格式不正确,谷歌定义的yaml格式太严格了,每个冒号后面都必须带有空格!!!

    参考:https://blog.csdn.net/liguangxianbin/article/details/79492866

     

  • 相关阅读:
    redis客户端连接,最大连接数查询与设置
    基于php实现QQ授权登陆 --qq授权登录
    在H5页面内通过地址调起高德地图实现导航
    数据库备份的两种方法
    ThinkPHP5.0 实现 app支付宝支付功能
    jQuery选取所有复选框被选中的值并用Ajax异步提交数据
    php 微信公众号接入支付宝支付
    MySQL查询优化
    php函数的使用技巧
    安装Django时解决的问题-mysql及访问(附pycharm激活)
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10310549.html
Copyright © 2020-2023  润新知