博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker-compose.yml配置详解
阅读量:7059 次
发布时间:2019-06-28

本文共 2552 字,大约阅读时间需要 8 分钟。

每个docker-compose.yml必须定义image或者build中的一个,其它的是可选的。

image

指定镜像tag或者ID。示例:

image: redisimage: ubuntu:14.04image: tutum/influxdbimage: example-registry.com:4000/postgresqlimage: a4bc65fd复制代码

ps:在version 1里同时使用image和build是不允许的,version 2则可以,如果同时指定了两者,会将build出来的镜像打上名为image标签

build

用来指定一个包含Dockerfile文件的路径。一般是当前目录.。Fig将build并生成一个随机命名的镜像。

ps:在version 1里bulid仅支持值为字符串。version 2里支持对象格式。

build: ./dirbuild:  context: ./dir  dockerfile: Dockerfile-alternate  args:    buildno: 1复制代码
  • context:路径
  • dockerfile:需要替换默认docker-compose的文件名
  • args:为构建(build)过程中的环境变量,用于替换Dockerfile里定义的ARG参数,容器中不可用。

command

用来覆盖缺省命令。示例:

command: bundle exec thin -p 3000

也支持数组形式:

command: [bundle, exec, thin, -p, 3000]

env_file

从文件中获取环境变量,可以为单独的文件路径或列表。 如果通过 docker-compose -f FILE 指定了模板文件,则 env_file 中路径会基于模板文件路径。 如果有变量名称与 environment 指令冲突,则以后者为准。

env_file: .envenv_file:- ./common.env- ./apps/web.env- /opt/secrets.env复制代码

环境变量文件中每一行必须符合格式,支持 # 开头的注释行。

# common.env: Set Rails/Rack environmentRACK_ENV=development复制代码

links

用于链接另一容器服务,如需要使用到另一容器的mysql服务。可以给出服务名和别名;也可以仅给出服务名,这样别名将和服务名相同。同docker run --link。示例:

links: - db - db:mysql - redis复制代码

ports

用于暴露端口。同docker run -p。示例:

ports: - "3000" - "8000:8000" - "49100:22" - "127.0.0.1:8001:8001"复制代码

ps:冒号前面是主机上的端口,冒号后面是容器内部的端口。

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复制代码

ps: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复制代码

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

extra_hosts

添加主机名映射。

extra_hosts: - "somehost:162.242.195.82" - "otherhost:50.31.209.229"复制代码

将会在/etc/hosts创建记录:

162.242.195.82  somehost50.31.209.229   otherhost复制代码

extends

继承自当前yml文件或者其它文件中定义的服务,可以选择性的覆盖原有配置。

extends:  file: common.yml  service: webapp复制代码

service必须有,file可选。service是需要继承的服务,例如web、database。

net

设置网络模式。同docker的--net参数。

net: "bridge"net: "none"net: "container:[name or id]"net: "host"复制代码

dns

自定义dns服务器。

dns: 8.8.8.8dns:  - 8.8.8.8  - 9.9.9.9复制代码

附原文链接:

转载地址:http://nbfll.baihongyu.com/

你可能感兴趣的文章
股市一片红,3100守住
查看>>
XStream转换时忽略未知字段
查看>>
图像添加到ABBYY 文档有什么方法
查看>>
Hibernate 4 之buildSessionFactory方法废弃问题
查看>>
搭建本地Ubuntu 镜像服务器
查看>>
java8: lambda表达式的参数
查看>>
svn操作备忘
查看>>
Mybatis中的resultType和resultMap 区别
查看>>
架构中的设计原则之迪米特原则(LOD) - 《java开发技术-在架构中体验设计模式和算法之美》...
查看>>
美团点评移动端基础日志库——Logan
查看>>
我的友情链接
查看>>
本地使用idea远端调试kylin代码
查看>>
Magento2 Minicart 显示 Not visible individually 的产品
查看>>
java十分钟速懂知识点——NIO
查看>>
查看已安装LANMP编译参数
查看>>
android,wp7后台程序运行区别
查看>>
开机问题
查看>>
ApiOne URL 调用说明
查看>>
Rustup
查看>>
Qt学习之XML读写操作小结
查看>>