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选项。