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

 

猜你喜欢

转载自www.cnblogs.com/zzy-9318/p/10310549.html