详解Docker之Compose服务编排

2020-06-17 06:53:28易采站长站整理


links:
- db
- db:mysql
- redis

使用了别名将自动会在容器的/etc/hosts文件里创建相应记录:


172.17.2.186 db
172.17.2.186 mysql
172.17.2.187 redis

所以我们在容器里就可以直接使用别名作为服务的主机名。

ports

用于暴露端口。同

docker run -p
。示例:


ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"

expose

expose提供container之间的端口访问,不会暴露给主机使用。同docker run –expose。


expose:
- "3000"
- "8000"

volumes

挂载数据卷。同

docker run -v
。示例:


volumes:
- /var/lib/mysql
- cache/:/tmp/cache
- ~/configs:/etc/configs/:ro

volumes_from

挂载数据卷容器,挂载是容器。同docker

 run --volumes-from
。示例:


volumes_from:
- service_name
- service_name:ro
- container:container_name
- container:container_name:rw

container:container_name
格式仅支持
version 2

environment

添加环境变量。同

docker run -e
。可以是数组或者字典格式:


environment:
RACK_ENV: development
SESSION_SECRET:

environment:
- RACK_ENV=development
- SESSION_SECRET

depends_on

用于指定服务依赖,一般是mysql、redis等。

指定了依赖,将会优先于服务创建并启动依赖。

links
也可以指定依赖。

external_links

链接搭配

docker-compose.yml
文件或者
Compose
之外定义的服务,通常是提供共享或公共服务。格式与links相似:


external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql

注意,

external_links
链接的服务与当前服务必须是同一个网络环境。

extra_hosts

添加主机名映射。


extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"