Docker Compose YML文件配置
Docker Compose YML
默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。
其它大部分指令都跟 docker run 中的类似。
如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。
image指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉去这个镜像。
image
镜像的地址,可以在镜像仓库找到。会在主机不存在该镜像的时候,拉取。
image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
build
指定 Dockerfile 所在文件夹的路径。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。build构建镜像和image下拉镜像,优先通过build执行Dockerfile构建镜像。
build: /path/to/build/dir
command
覆盖掉默认的命令
command: bundle exec thin -p 3000
links
可以Link到其他的容器。可以直接写应用名(同一个YML内),或者可以写Link别名(SERVICE:ALIAS)
links:
- db
- db:database
- redis
Docker Link 会修改您容器内的HOST表和环境变量,的工作方式可以参考 Docker Link文档。
depends_on
可以把依赖的容器名写进来。
depends_on:
- db
- redis
external_links:
external_links可以Link到不是同一个YML内的容器。语法和普通的Link接近。但启动的时候要保证被Link的容器是正常运行的。可以直接写应用名(同一个YML内),或者可以写Link别名(SERVICE:ALIAS)
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
extra_hosts
hostname映射。相当于在Docker Run中--add-host 参数.
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
这个配置会在容器的 /etc/hosts 文件中添加如下的内容。
162.242.195.82 somehost
50.31.209.229 otherhost
ports
开放端口,可以同时申明主机和容器端口 (HOST:CONTAINER), 也可以只申明容器端口。(会随机选定一个外部端口).
ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
expose
开放端口但不会在主机上映射。仅仅用于被其他的容器Link。只能保留内部端口
expose:
- "3000"
- "8000"
volumes
支持Mount存储卷,可以支持指定主机路径和容器路径(HOST:CONTAINER), 还可以包括只读 (HOST:CONTAINER:ro).
volumes:
- /var/lib/mysql
- ./cache:/tmp/cache
- ~/configs:/etc/configs/:ro
volumes_from
支持从其他APP和容器Mount。
volumes_from:
- service_name
- container_name
environment
可以添加环境变量,您可以指定YML数组或者字典。
environment:
RACK_ENV: development
SESSION_SECRET:
environment:
- RACK_ENV=development
- SESSION_SECRET
env_file
从文件中获取环境变量,可以为单独的文件路径或列表。
如果通过 docker-compose -f FILE 指定了模板文件,则 env_file 中路径会基于模板文件路径。
如果有变量名称与 environment 指令冲突,则以后者为准。
env_file: .env
env_file:
- ./common.env
- ./apps/web.env
- /opt/secrets.env
环境变量文件中每一行必须符合格式,支持 # 开头的注释行。
环境变量文件中每一行必须符合格式,支持 # 开头的注释行。
common.env: Set Rails/Rack environment
RACK_ENV=development
extends
基于已有的服务进行扩展。例如我们已经有了一个 webapp 服务,模板文件为 common.yml。
# common.yml
webapp:
build: ./webapp
environment:
- DEBUG=false
- SEND_EMAILS=false
编写一个新的 development.yml 文件,使用 common.yml 中的 webapp 服务进行扩展。
web:
extends:
file: common.yml
service: webapp
ports:
- "8000:8000"
links:
- db
environment:
- DEBUG=true
db:
image: postgres
后者会自动继承 common.yml 中的 webapp 服务及相关环节变量。
labels
可以通过Docker Lable给容器加一些元数据。
labels:
com.example.description: "Accounting webapp"
com.example.department: "Finance"
com.example.label-with-empty-value: ""
log_driver
可以给容器增加Log Driver。和命令行参数 --log-driver 相同
现在支持 json-file, syslog and none. 默认是 json-file.
log_driver: "json-file"
log_driver: "syslog"
log_driver: "none"
net
设置网络模式。使用和 docker client 的 --net 参数一样的值
net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
pid
容器共享pid。 跟主机系统共享进程命名空间。打开该选项的容器可以相互通过进程 ID 来访问和操作。在docker命令中的使用是:docker run --pid container:containerid
pid: "host"
dns
配置 DNS 服务器。可以是一个值,也可以是一个列表。
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
cap_add
增加容器的能力
cap_add:
- ALL
cap_drop
删除容器的能力
cap_drop:
- NET_ADMIN
- SYS_ADMIN
dns_search
配置 DNS 搜索域。可以是一个值,也可以是一个列表
dns_search: example.com
dns_search:
- dc1.example.com
- dc2.example.com
devices
设备映射. 和命令行参数 --device 相同
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
security_opt
覆盖默认的容器安全参数
security_opt:
- label:user:USER
- label:role:ROLE
working_dir
docker指定工作目录
entrypoint
docker入口点
user
指定容器当前用户
hostname
指定容器主机名
domainname
指定域名
mem_limit
指定容器内存限制
privileged
开启特权,可以设置容器里的内核参数
restart
重启后的容器启动情况
stdin_open
tty
支持tty
cpu_shares
CPU 共享权值(相对权重)
cpuset
允许使用的CPU 集,值可以为 0-3,0,1
read_only
设置只读文件系统
下列的熟悉都和 docker run 命令中的参数相同。
cpu_shares: 73
cpuset: 0,1
working_dir: /code
entrypoint: /code/entrypoint.sh
user: postgresql
hostname: foo
domainname: foo.com
mac_address: 02:42:ac:11:65:43
mem_limit: 1000000000
privileged: true
restart: always
stdin_open: true
tty: true
read_only: true
Docker Compose YML文件配置的更多相关文章
- docker compose yml 文件常用字段简介
常用参数: version # 指定 compose 文件的版本 services # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称 ...
- Docker Compose模板文件介绍
模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多,这里面大部分指令跟 docker run 相关参数的含义都是类似的.默认的模板文件名称为 docker-compose.yml ,格 ...
- Docker Compose 模板文件 V2
模板文件是使用Compose的核心,默认模板文件名称为docker-compose.yml ,格式为YAML格式. 目录结构 [root@localhost ~]# tree /opt/compose ...
- 【2.0】SpringBoot多环境yml文件配置
一.使用Spring Boot Profiles 1. 使用yml文件 首先,我们先创建一个名为 application.yml的属性文件,如下: server: port: 8080 my: nam ...
- docker-compose命令和yml文件配置
docker-compose -f compose-server.yml up -d version: '3' services: eureka-server: image: mydocker/eur ...
- springboot yml 文件配置oracle,提示账号密码错误
最近使用Spring boot,本来一直连接的是mysql数据库,一直没问题.昨天在更换了oracle数据库后,一直提示账号密码不正确,登录被拒绝.检查多次,检查账号密码一切正常,但就是连接不上ora ...
- springboot+mybatis +yml文件配置多数据源
记录一下java开发中多数据源的配置过程, 参考博客:https://blog.csdn.net/weinichendian/article/details/72903757,我在这里进行了整理,使用 ...
- 使用SpringBoot的yml文件配置时踩的一个坑
问题描述:使用SpringBoot整合redis进行yml配置的时候,启动工程报错,提示加载application.yml配置文件失败: ::27.430 [main] ERROR org.sprin ...
- Docker Compose yml
Wordpress + Mysql version: '3' services: db: image: mysql:latest volumes: - db_data:/var/lib/mysql e ...
随机推荐
- 仅逗oier们一笑(不定期更新中)(update.2019年12月8日)
CCF的正确解释: //部分来自:朝阳的二愣子的CSDN博客.ydclyq 的博客 .拱垲的博客.Randolph's Blog. 编译下列程序,会有意想不到的惊喜哦(注意打开声音): #includ ...
- 用SQL语句去掉重复的记录
删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据 1.delete from 表 where id not in (select max(id) ...
- sql实现excel中模糊替换
今天遇到项目上需要修改数据库中部分字段 如果一个一个替换的话工作量实在太大,于是找一个办法 update 表名 set 字段名=replace(字段名,'aaaa','cccc') + whereaa ...
- 【2019年07月08日】A股最便宜的股票
查看更多A股最便宜的股票:androidinvest.com/CNValueTop/ 便宜指数 = PE + PB + 股息 + ROE,四因子等权,数值越大代表越低估. 本策略只是根据最新的数据来选 ...
- Barrier 组织多个线程及时在某个时刻碰面
任意一个线程调用了 _barrier.SignalAndWait() 方法后,会执行一个回调函数来打印出阶段. /// <summary> /// 实例 Barrier 类 /// < ...
- ORA-03113: 通信通道的文件结束解决方法一例
开发项目时,使用的是Oracle数据库.最近遇到了“ORA-03113: 通信通道的文件结束”错误.如下图所示: 经过网上查资料和请教同事,终于找到了解决ORA-03113错误的办法. 解决步骤如下: ...
- moodle3.7中文语言包
Moodle官方有中文语言包,但是还有没有翻译的,为了提高用户体验,可以将部分未翻译的应用在Moodle网站管理中自己修改. 具体步骤: 先确定需要修改的关键字,也就是网站中没有翻译成中文的文字 在c ...
- PostgreSQL查询当前时间的时间戳
一.问题 使用PostgreSQL获取当前系统时间戳.众所周知,在MySQL中是这样的: select UNIX_TIMESTAMP(NOW()) 二.解决方案 (1)精确到秒 " (2)精 ...
- 北理工机器人队RM视觉组ubuntu必备软件安装指南
基础软件安装 sudo apt update && sudo apt upgrade sudo apt install git curl vim gcc g++ cmake与make ...
- C++中Matrix(矩阵)的基本运算( +、-、=、<<)
利用二维指针开辟空间形成二维数组: 原题为设计一个Matrix类,实现基本的矩阵运算: 初次设计为HL[10][10]数组,存放矩阵元素,后改为二维指针: 主要问题存在于二维指针理解的不透彻,无法理解 ...