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文件配置的更多相关文章

  1. docker compose yml 文件常用字段简介

    常用参数: version # 指定 compose 文件的版本 services # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称 ...

  2. Docker Compose模板文件介绍

    模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多,这里面大部分指令跟 docker run 相关参数的含义都是类似的.默认的模板文件名称为 docker-compose.yml ,格 ...

  3. Docker Compose 模板文件 V2

    模板文件是使用Compose的核心,默认模板文件名称为docker-compose.yml ,格式为YAML格式. 目录结构 [root@localhost ~]# tree /opt/compose ...

  4. 【2.0】SpringBoot多环境yml文件配置

    一.使用Spring Boot Profiles 1. 使用yml文件 首先,我们先创建一个名为 application.yml的属性文件,如下: server: port: 8080 my: nam ...

  5. docker-compose命令和yml文件配置

    docker-compose -f compose-server.yml up -d version: '3' services: eureka-server: image: mydocker/eur ...

  6. springboot yml 文件配置oracle,提示账号密码错误

    最近使用Spring boot,本来一直连接的是mysql数据库,一直没问题.昨天在更换了oracle数据库后,一直提示账号密码不正确,登录被拒绝.检查多次,检查账号密码一切正常,但就是连接不上ora ...

  7. springboot+mybatis +yml文件配置多数据源

    记录一下java开发中多数据源的配置过程, 参考博客:https://blog.csdn.net/weinichendian/article/details/72903757,我在这里进行了整理,使用 ...

  8. 使用SpringBoot的yml文件配置时踩的一个坑

    问题描述:使用SpringBoot整合redis进行yml配置的时候,启动工程报错,提示加载application.yml配置文件失败: ::27.430 [main] ERROR org.sprin ...

  9. Docker Compose yml

    Wordpress + Mysql version: '3' services: db: image: mysql:latest volumes: - db_data:/var/lib/mysql e ...

随机推荐

  1. 申请Github学生包(用学生证就行,免教育邮箱)

    GitHub教育包的福利: 大名鼎鼎的JetBrains给学生教师的免费个人许可 https://education.github.com/pack/redeem/jetbrains 有Github学 ...

  2. okhttp 发送get post 请求

    package com.qlwb.business.util; import java.util.Map; import com.alibaba.fastjson.JSON; import okhtt ...

  3. Azure DevOps Server 经验分享(国内重型工程公司)

    受邀在上海为国内著名的重型工程公司的软件研发团队分享了Azure DevOps Server 的经验. http://www.cnblogs.com/danzhang/  DevOps MVP 张洪君 ...

  4. tomcat 下 base64图片上传超过2m的解决方案

    方案一: tomcat部署下默认post请求提交参数大小为2M左右,超过这个大小,就会传值不成功 要使post请求参数无大小限制,需要在server.xml上修改,如下: <Connector ...

  5. Turbo码基本框架

    1. 基本原理 1.1 定义 1.2 分量码设计 2. 编码方法 2.1 交织器的设计 2.2 分量编码器 2.3 删余矩阵及复用 3. 译码方法和算法 3.1 迭代译码 3.2 MAP类算法 3.3 ...

  6. 利用开源项目 FFMpegSharp 实现音视频提取、转码、抓图等操作

    开源项目地址:https://github.com/vladjerca/FFMpegSharp 首先需要在 web.config 或 app.config 中配置 <appSettings> ...

  7. Django的学习——全局的static和templates的使用

    一.问题 首先我们在进行Django框架搭建的时候我们需要建立一个全局的变量,一是为了实现代码的复用,二是为了方便管理,如下图的样式 二.解决 1.修改setting里面的配置文件①templates ...

  8. .net core ajax使用EPPlus上传excle导入总结

    前端 <form class="layui-form" id="div_imp" style="display:none;"> ...

  9. webapi处理OPTIONS请求

    报错1信息 Access to XMLHttpRequest at 'http://localhost:4445/api/v/getmsg' from origin 'http://localhost ...

  10. asp.net core流式上传大文件

    asp.net core流式上传大文件 首先需要明确一点就是使用流式上传和使用IFormFile在效率上没有太大的差异,IFormFile的缺点主要是客户端上传过来的文件首先会缓存在服务器内存中,任何 ...