web:
build: ./web
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image:redis
build: 可使用相对目录或绝对路径
ports: 可使用端口范围
links: 可使用别名,例如 -redis:web-redis
build: ./dir
build 后可以直接使用Dockerfile所在目录,该目录必须存在Dockerfile
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
image: webapp:tag
contest: 指定Dockerfile的目录,dockerfile指定Dockerfile文件名
args:不清楚是干什么使用的
images: 指定dockerfile构建出的镜像名,默认使用docker-compose.yml所在的文件夹名+service名
dockerfile: 当Dockerfile文件名不是默认名称时,使用dockerfile参数指定Dockerfile的文件名
覆盖Dockerfile中的command
command: bundle exec thin -p 3000
类似于dockerfile中的命令:
command: [bundle, exec, thin, -p, 3000]
指定容器的名称
container_name: my-web-container
表示服务之前的依赖关系,有两个效果:
version: '2'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
自定义DNS,可以是单个的,也可以是列表(这个不怎么用的到)
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
覆盖默认的entrypoint
entrypoint: /code/entrypoint.sh
指定变量的文件,默认为docker-compose 文件下的.env文件
同一个变量,通过export设置,会覆盖env_file中的变量
env_file: .env
env_file:
- ./common.env
- ./app/web.env
设置环境变量,支持数组和字典
environment:
RACK_ENV:development
SHOW: ‘true’
SESSION_SECRET:
or
environment:
- RACK_ENV=development
- SHOW:=’true’
- SESSION_SECRET
暴露端口,并不会暴露到宿主机上,而是提供给内部容器通信
expose:
- “3000”
- “8000”
version 1中不允许build和image同时存在,version 2中允许,image代表指定build之后的镜像名称
连接其他容器,可以设置别名,设置link之后,hostname与IP的对应关系会写入到/etc/hosts 中,和depend_on类似,设置link后,也间接地规定了容器的启动顺序