build
这是一个构建指令,服务除了可以基于指定的镜像,还可以基于一份 Dockerfile,在使用 up 启动之时执行构建任务。
short form格式用于直接指定Dockerfile 所在的文件或目录[可以采用相对路径],Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器。
version: '2'
services:
front:
build: path
build: ./表示Dockerfile文件就在当前目录
long form格式,使用context 指令指定 Dockerfile 所在文件夹的路径。使用 dockerfile 指令指定 Dockerfile 文件名。使用 arg 指令指定构建镜像时的变量。
services:
front:
build:
context: contextPath
dockerfile: Dockerfile
args:
- name=value
network: networkName
labels:
- com.host.description=label
target: targetStage
ports
暴露端口信息,用来指定宿主机和容器端口映射。使用宿主端口:容器端口的格式,或者仅仅指定容器的端口(此时宿主机将会随机指定端口)
expose
这个模板指令一般不使用,用来指定构建镜像过程中容器暴露的端口号,这个是用来替代Dockerfile里面的expose指令的,当在Dockerfile文件没有指定时,这里可以使用,一般情况下采用原始的Dockerfile中指定。
command
覆盖容器启动后默认执行的命令。
string form
command: command
list form
command: ["executable", "arg"]
environment
设置容器启动时的环境变量。你可以使用数组或字典两种格式。
environment:
- name=value
数组模式
environment:
name:value
字典模式
env_file
从文件中获取环境变量,可以为单独的文件路径或列表。直接把密码等比较私密性的内容配置到compose文件中不安全,不想展示到compose文件中,可以配置到文件中
LInux建议直接使用.env作为文件名称,因为.开头的文件是隐藏文件,相对来保护私密性
networks
用来指定启动容器时使用的网桥,相当于Docker中的—network,一个项目的容器应该在同一个网桥上,保障网络互访。使用前需要在一级字段中声明网桥。
restart
用来保证