文章目录
-
- 一、前言
- 二. Docker Compose 配置文件的构建参数说明
-
- 配置选项
-
- 2.1 version
- 2.2 image
- 2.3 build
- 2.4 command 覆盖容器启动的默认命令。
- 2.5 container_name:<项目名称><服务名称><序号>
- 2.6 depends_on设置依赖关系,建立关联,优先级启动
- 2.7 dns
- 2.8 dns_search
- 2.10 entrypoint
- 2.11 env_file
- 2.12 environment:镜像变量
- 2.13 expose
- 2.14 external_links:链接外部容器
- 2.15 extra_hosts
- 2.16 links:与 Docker client 的 --link 一样效果,会连接到其它服务中的容器
- 2.17 logging
- 2.18 labels
- 2.19 pid
- 2.20 port
- 2. 21 security_opt
- 2.22 stop_signal
- 2.23 volumes
- 2.24 volumes_from
- 2.25 cap_add, cap_drop
- 2.26 network_mode
- 2.27 ulimits
- 2.28 extends
- 2.29 networks
- 2.30 stop_grace_period
- 2.31 secrets
- 2.32 aliases
- 2.33 restart
- 2.34 devices
- 2.35 healthcheck
- 2.36 cgroup_parent
- 2.37 deploy
- 2.38 endpoint_mode:访问集群服务的方式。
- 2.39 labels
- 2.40 configs
- 2.42 restart_policy
- 2.43 rollback_config
- 2.44 update_config
一、前言
docker compose 在 Docker 容器运用中具有很大的学习意义,docker compose 是一个整合发布应用的利器。而使用 docker compose 时,懂得如何编排 docker compose 配置文件是很重要的。
关于 docker compose 技术可以查看官方文档 Docker Compose
以下的内容是确立在已经下载好 Docker 以及 Docker Compose,可参看 Docker Compose 的官方安装教程 Install Docker Compose
二. Docker Compose 配置文件的构建参数说明
首先,官方提供了一个 docker-compose.yml 配置文件的标准例子
version: "3"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
vote:
image: dockersamples/examplevotingapp_vote:before
ports:
- 5000:80
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: dockersamples/examplevotingapp_result:before
ports:
- 5001:80
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints: [node.role == manager]
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
frontend:
backend:
volumes:
db-data:
此文件配置了多个服务,关于此配置文件的各个语句含义就需要弄懂配置选项的含义了
文件配置
compose 文件是一个定义服务、 网络和卷的 YAML 文件 。Compose 文件的默认路径是 ./docker-compose.yml
可以是用 .yml 或 .yaml 作为文件扩展名
服务定义包含应用于为该服务启动的每个容器的配置,就像传递命令行参数一样 docker container create。同样,网络和卷的定义类似于 docker network create 和 docker volume create。
正如 docker container create 在 Dockerfile 指定选项,如 CMD、 EXPOSE、VOLUME、ENV,在默认情况下,你不需要再次指定它们docker-compose.yml。
可以使用 Bash 类 ${VARIABLE} 语法在配置值中使用环境变量。
配置选项
2.1 version
指定本yml一从的compose 哪个版本制定的。
2.2 image
services: #定义服务
web: # web服务
image: hello-world # 启动服务使用的镜像
指定容器运行的镜像,格式:
image: redis # 镜像名称
image: ubuntu:14.04 #镜像:版本号
image: tutum/influxdb # 个人用户级别的镜像
image: example-registry.com:4000/postgresql # 非官方仓库的镜像
image: a4bc65fd # 镜像ID
2.3 build
服务除了可以基于指定的镜像,还可以基于一份 “Dockerfile” ,在使用 up 启动之时执行构建任务,这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径。Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器
build: /path/to/build/dir/
也可以是相对路径,只要上下文确定就可以读取到 Dockerfile
build: ./dir
build:
context: /home/transport或./transport#context:指定Dockerfile文件所在的路径
dockerfile: Dockerfile#dockerfile:指定context指定的目录下面的Dockerfile的名称(默认为Dockerfile)
args:#args:Dockerf
args: # 指定输入环境变量
buildno: 1 # 环境变量
password: secret # 环境变量
image: webapp:tag # 命名的镜像名称,根据此名称启动
2.4 command 覆盖容器启动的默认命令。
command: bundle exec thin -p 3000
command: [bundle, exec, thin, -p, 3000]