默认的模板文件名称为 docker-compose.yml
,格式为 YAML 格式。web
示例:redis
version: "3" services: webapp: image: examples/web ports: - "80:80" volumes: - "/data"
注意每一个服务都必须经过 image
指令指定镜像或 build
指令(须要 Dockerfile)等来自动构建生成镜像。docker
若是使用 build
指令,在 Dockerfile
中设置的选项(例如:CMD
, EXPOSE
, VOLUME
, ENV
等) 将会自动被获取,无需在 docker-compose.yml
中再次设置。缓存
build
一、app
指定 Dockerfile
所在文件夹的路径(能够是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose
将会利用它自动构建这个镜像,而后使用这个镜像。webapp
version: '3' services: webapp: build: ./dir # dir文佳夹里面有Dockerfile文件
二、post
你也能够使用 context
指令指定 Dockerfile
所在文件夹的路径。ui
使用 dockerfile
指令指定 Dockerfile
文件名。spa
使用 arg
指令指定构建镜像时的变量。code
version: '3' services: webapp: build: context: ./dir # Dockerfile 所在文件夹的路径。 dockerfile: Dockerfile-alternate # Dockerfile 文件名 args: # 构建镜像时的变量 buildno: 1
使用 cache_from
指定构建镜像的缓存
build: context: . cache_from: # 指定构建镜像的缓存 - alpine:latest - corp/web_app:3.14
command
覆盖容器启动后默认执行的命令。
command: echo "hello world"
container_name
指定容器名称。默认将会使用 项目名称_服务名称_序号
这样的格式。
container_name: docker-web-container
注意: 指定容器名称后,该服务将没法进行扩展(scale),由于 Docker 不容许多个容器具备相同的名称。
devices
指定设备映射关系。
devices: - "/dev/ttyUSB1:/dev/ttyUSB0"
depends_on
解决容器的依赖、启动前后的问题。如下例子中会先启动 redis
db
再启动 web
version: '3' services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres
注意:web
服务不会等待 redis
db
「彻底启动」以后才启动。