目录

docker-compose

配置文件

一份标准配置文件应该包含 version、services、networks 三大部分,其中最关键的就是 services 和 networks 两个部分。

version: '2'
services:
  web:
    image: dockercloud/hello-world
    ports:
      - 8080
    networks:
      - front-tier
      - back-tier

  redis:
    image: redis
    links:
      - web
    networks:
      - back-tier

  lb:
    image: dockercloud/haproxy
    ports:
      - 80:80
    links:
      - web
    networks:
      - front-tier
      - back-tier
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock 

networks:
  front-tier:
    driver: bridge
  back-tier:
	driver: bridge

services

services下的一级标签是用户自己定义的,是服务名。

  • image 则是指定服务的镜像名称或镜像 ID。
  • build 镜像还可以根据自己的dockerfile生成。build指定Dockerfile文件所在的文件夹路径。可以是相对路径。
  • command 使用 command 可以覆盖容器启动后默认执行的命令
  • container_name Compose 的容器名称格式是:<项目名称><服务名称><序号>,这个可以指定名字
  • depends_on 容器依赖,被依赖的容器先执行
  • environment 这个标签的作用是设置镜像变量,它可以保存变量到镜像里面,也就是说启动的容器也会包含这些变量设置
  • expose 暴露接口
  • volumes 挂载目录
  • networks 加入指定网络

networks

networks:
  front:
    # Use a custom driver
    driver: custom-driver-1
  back:
    # Use a custom driver which takes special options
    driver: custom-driver-2
    driver_opts:
      foo: "1"
      bar: "2"

这样就定义了两个网络。 一些场景下,我们并不需要创建新的网络,而只需加入已存在的网络,此时可使用external选项。