build

这是一个构建指令,服务除了可以基于指定的镜像,还可以基于一份 Dockerfile,在使用 up 启动之时执行构建任务。
short form格式用于直接指定Dockerfile 所在的文件或目录[可以采用相对路径],Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器。

  1. version: '2'
  2. services:
  3. front:
  4. build: path

build: ./表示Dockerfile文件就在当前目录

long form格式,使用context 指令指定 Dockerfile 所在文件夹的路径。使用 dockerfile 指令指定 Dockerfile 文件名。使用 arg 指令指定构建镜像时的变量。

  1. services:
  2. front:
  3. build:
  4. context: contextPath
  5. dockerfile: Dockerfile
  6. args:
  7. - name=value
  8. network: networkName
  9. labels:
  10. - com.host.description=label
  11. target: targetStage

ports

暴露端口信息,用来指定宿主机和容器端口映射。使用宿主端口:容器端口的格式,或者仅仅指定容器的端口(此时宿主机将会随机指定端口)

expose

这个模板指令一般不使用,用来指定构建镜像过程中容器暴露的端口号,这个是用来替代Dockerfile里面的expose指令的,当在Dockerfile文件没有指定时,这里可以使用,一般情况下采用原始的Dockerfile中指定。

command

覆盖容器启动后默认执行的命令。
string form

  1. command: command

list form

    command: ["executable", "arg"]

environment

设置容器启动时的环境变量。你可以使用数组或字典两种格式。

    environment:
      - name=value

数组模式

    environment:
      name:value

字典模式

env_file

从文件中获取环境变量,可以为单独的文件路径或列表。直接把密码等比较私密性的内容配置到compose文件中不安全,不想展示到compose文件中,可以配置到文件中

LInux建议直接使用.env作为文件名称,因为.开头的文件是隐藏文件,相对来保护私密性

networks

用来指定启动容器时使用的网桥,相当于Docker中的—network,一个项目的容器应该在同一个网桥上,保障网络互访。使用前需要在一级字段中声明网桥。

restart

用来保证