Docker compose 文件可用来配置 Docker 服务,它的默认路径是 ./docker-compose.yml(也可使用 .yaml 后缀)。正如 docker run 一样,在 Dockerfile 中指定的指令(如 CMD、EXPOSE 等),也就没必要在 docker-compose.yml 中再指定一遍。另外,也可以在配置值中使用 ${varname} 这样的语法来使用环境变量。还有 YAML 中的布尔值类型 true、false、on、off、yes、no 需要使用引号引起来,以便把它们当成字符串解析。
接下来描述的就是版本 3 中用来定制服务的 Compose 文件格式的配置选项,具体用法见官方版
https://docs.docker.com/compose/compose-file/。
** build
该选项会在构建时刻使用。它可以是指定了构建上下文的路径字符串,也可以是含有 contex 选项和其他可选项的对象(两者取其一)。build 有下面几个子选项:
1、context:该选项可以是一个包含了 Dockerfile 的目录路径,也可以是一个 git 仓库地址。如果是一个相对路径,则是相对于 docker-compose.yml 的位置而言的。它的值会被当成构建上下文传给 Docker 守护进程。
2、dockerfile:用来指定替换的 Dockerfile 路径,须要同时指定 context 选项。
3、args:指定构建参数的值。首先要在 Dockerfile 中指定参数名,然后再使用该选项指定参数值。它的值可以是一个映射或列表,也可以忽略(这时它的值取自运行 compose 文件时的环境)。
4、cache_from:指定引擎解析缓存时要使用的镜像列表。
5、labels:使用 Docker Labels 为最终的镜像添加元数据,值为映射或列表形式。
** cap_add, cap_drop
用于添加或删除容器功能(可用 man 7 capabilities 查看完整功能列表。注意,在版本 3 的 compose 文件中,当使用 swarm 模式部署栈时,该选项会被忽略)。
** command
用于覆盖默认命令。值可以是普通字符串或是类似于 Dockerfile 中的数组形式。
** configs
为服务指定要使用的配置,并挂载到容器中的 /dst_config_name 下。指定的配置名需要在顶层范围的 configs 中指明。支持短语法和长语法。短语法中 dst_config_name 就是配置名,长语法中可以使用 source 指定配置名,使用 target 指定 dst_config_name,使用 uid 和 gid 指定用户 ID 和组 ID,使用 mode 指定 dst_config_name 的文件访问权限(写权限会被忽略,因为配置文件是挂载到临时文件系统中的)。
** cgroup_parent
为容器指定一个可选的所属组(当以 swarm 模式部署栈时该选项会被忽略)。
** container_name
自定义容器名(当以 swarm 模式部署栈时该选项会被忽略)。
** credential_spec
为所管理的服务账户配置证书规则。仅用于使用 Windows 类容器的服务。
** deploy
指定与服务部署相关的配置。它仅在使用 docker stack deploy 命令部署到一个 swarm 时才会生效,并且会被 docker-compose up 和 docker-compose run 忽略。它支持下面多个子选项。
1、 endpoint_mode:为连接到服务的外部客户端指定服务发现的方式。有两种方式:
a)vip:由 Docker 为服务赋一个虚拟 IP。Docker 会自动为客户端和服务工作节点选择合适的路由。这是默认的方式。
b)dnsrr:使用 DNS 服务发现。Docker 会为服务创建一个 DNS 项,以便使用服务名进行 DNS 查询时能连接到合适的 IP。该选项在你想使用自己的负载均衡器等情况下时是有用的。
2、labels:为服务(而非容器)设置标签。
3、mode:可为 global(每个 swarm 节点只有一个容器)或者 replicated(可有多个容器,默认)。
4、placement:指定布置约束。
5、replicas:当 mode 为 replicated 时,指定要运行的容器的数量。
6、resources:配置内存、CPU 等资源限制。
7、restart_policy:配置如何重启退出的容器。可以为下面一个或多个值:
a)condition:值为 none、on-failure 或者 any 之一,默认为 any。
b)delay:在下次尝试重启之前需要等待的时间,默认为 0。
c)max_attempts:最多尝试重启的次数,默认从不放弃。
d)window:判定一次重启失败前要等待的时间,默认立即判定。
8、update_config:配置如何更新服务。可以为下面一个或多个值:
a)parallelism:每次要更新的容器数量。
b)delay:更新下一组容器前要等待的时间。
c)failure_action:更新失败时要采取的动作。为 continue、rollback 或 pause 之一,默认为 pause。
d)monitor:判定一次更新失败前要持续的时间,默认为 0s。
e)max_failure_ratio:能容忍的最大更新失败率。
** devices
指定设备映射列表。
** depends_on
指出服务之间的依赖关系。
** dns
自定义 DNS 服务。
** dns_search
自定义 DNS 搜索域。
** tmpfs
在容器中挂载一个临时文件系统。
** entrypoint
覆盖默认的入口。注意,设置该选项将覆盖 Dockerfile 中使用 ENTRYPOINT 指令为服务镜像设置的默认入口,同时也会清除使用 CMD 指令设置的默认命令。
** env_file
指定环境变量文件。如果使用 docker-compose -f FILE 指定了一个 Compose 文件,则 env_file 中指定的文件就是相对于那个文件所在的目录而言的。另外,使用 environment 选项定义的环境环境变量将会覆盖这些文件中定义的同名变量。注意,build 选项不能读取这些文件 和 environment 定义的环境变量,而应该使用 build 的子选项 args 来代替。
** environment
添加环境变量。值可以是一个列表或映射。其中涉及的 boolean 值(如 true/false 和 yes/no)都需要用引号引起来,以免被 YML 解析器转换为 True 和 False。只指定了键的环境变量的值会被解析为机器运行时的对应值,这可用来指定比较敏感或与机器相关的信息。
** expose
暴露端口,但不向主机公布,因此只能被链接的服务访问。只有内部端口才可这样设置。
** external_links
关联到 Compose 之外启动的容器,尤其是那些提供了共享和常用服务的容器。
** extra_hosts
添加主机名映射。使用与 docker 客户端的 --add-host 参数相同的值,同时还要在提供服务的容器的 /etc/hosts 文件中指明该映射关系。
** healthcheck
配置如何检测运行服务的容器的“健康值”。
** image
指定容器所使用的镜像。
** isolation
指定容器的隔离技术。Windows 上支持的值有:default、process 和 hyperv,Linux 上仅支持 default。
** labels
使用 Docker 标签为容器添加元数据。
** links
关联另一个服务中的容器。如果同时指定了该选项和 networks 选项,那个关联的服务之间应该至少要有一个共同的网络才能相互通信。
** logging
配置服务日志。
** network_mode
指定网络模式。注意“network_mode: "host"”不能与 links 选项合用。
** networks
指定服务要加入的网络,这些网络也应该在顶级范围中使用 networks 指明。它支持下面 几个子选项:
1、aliases:创建服务在某个网络下的别名列表,这样该网络中的其他容器除了使用服务名(默认的)外还可使用别名访问该服务中的容器。
2、ipv4_address/ipv6_address:为加入到该网络的服务指定一个静态 IP。这时在顶级范围中创建该网络时应该包含一个 ipam 选项块,用以配置子网部分。如果要支持 IPv6,还应该指定 enable_ipv6 选项。
** pid
设置 pid 模式为主机 pid 模式。这会让容器和主机共享 PID 地址空间。
** ports
用来公布容器端口。
** secrets
配置服务对某些敏感数据的访问权限。服务范围下的该选项应该与顶层范围下的 secrets 选项同时指定。
** security_opt
覆盖每个容器的默认标记方案。
** stop_grace_period
指定在发送 SIGKILL 信号前,如果没对 SIGTERM 信号(或其他使用 stop_signal 选项设置的停止信号)进行处理时试图停止一个容器要等待的时间限制,默认为 10s。
** stop_signal
设置停止容器时要发送的信号,默认为 SIGTERM。
** sysctls
指定容器中要设置的内核参数。
** ulimits
覆盖容器的默认资源限制。
** userns_mode
禁用此服务的用户命名空间(如果有的话)。
** volumes
指定服务要使用的卷。如果仅针对某一服务,可以只指定卷主机路径。但若要多个服务使用,应该使用在顶层范围下的 volumes 选项中指定的卷名。
分享到:
相关推荐
3. **设置环境变量**:对于某些系统,可能需要设置`DOCKER_OPTS`环境变量以指定Docker守护进程的配置选项。 4. **启动Docker**:运行Docker守护进程,检查是否正常启动,可以通过`docker info`命令查看Docker的运行...
其核心是`docker-compose.yml`文件,这是一个YAML格式的配置文件,用于描述服务、网络和卷等组件,以及它们之间的依赖关系。 ### Docker-compose入门案例:使用Docker Compose运行Tomcat容器 #### 创建`docker-...
在`docker-compose.yml` 文件中,你可以配置服务、网络和卷,这些定义将指导`docker-compose`如何启动和管理相关容器。例如,你可以声明服务间的依赖关系、设置环境变量、配置端口映射、定义数据卷等。 在`docker-...
通过一个YAML文件(即docker-compose.yaml)来配置服务,简化了容器化应用的部署和管理。 【描述】提到的"包含nginx.conf,php.ini,php-fpm.conf等"表明这个构建包不仅包含了PHP的基础环境,还配置了Nginx web...
Docker Compose的核心在于`docker-compose.yml`文件,这是一个定义服务、网络和卷的配置文件,用于一次性启动整个应用程序环境。在2.5版本中,这个配置文件格式得到了进一步优化,使得服务间的依赖关系更加清晰,...
# 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器 - ./images/nginx/sites-enabled:/etc/nginx/sites-enabled - ./images/nginx/cert:/etc/nginx/cert # 加入指定网络 networks: default: # 同一...
每个服务都将指定其镜像、端口映射、环境变量、依赖关系和其他配置选项。例如,可能需要设置 Apollo 的环境变量,如 `APOLLO_ENV`、`LOCAL_IP` 和 `CONFIG_SERVICE_URL` 等,以便服务之间能够正确通信。 `sql` 文件...
2、docker-compose一键式部署配置脚本文件 部署方法: 1、下载es.sh+docker-compose一键部署7.9.3elk日志监控系统.zip压缩包 2、先执行es.sh基础环境脚本 sh es.sh 3、执行docker-compose脚本拉取镜像及elk容器服务...
此外,Docker Compose v1.25.0引入了对Docker Compose文件格式v3.8的支持。这个版本的文件格式增加了新的特性,如`healthcheck`,用于检查服务的健康状态,以及`secrets`和`configs`,用于管理应用的敏感信息。这些...
它通过YAML文件(docker-compose.yml)来配置服务,允许开发者定义环境变量、网络、卷等,并通过单一命令管理这些服务的生命周期。然而,原生的Docker Compose命令行接口并不支持自动补全功能,这对于频繁使用的用户...
通过理解Kafka的配置选项,我们可以更好地定制和优化集群以满足具体需求。结合Zookeeper管理Kafka的元数据,可以在分布式环境中实现高可用性和容错性。对于希望在Docker容器中搭建Kafka集群的开发者来说,这是一个...
`docker-compose.yml` 文件是配置服务、网络和卷的中心文档。在这个场景中,我们将深入探讨如何利用Docker Compose的`healthcheck`特性来确保在启动依赖服务Y之前,关键服务X(如PostgreSQL或Kong)已经准备好接受...
通过一个`docker-compose.yml`文件,可以配置服务、网络和卷,实现一键部署和管理整个应用栈。 **Metabase与Docker Compose的结合** "metabase-compose"项目是将Metabase集成到Docker Compose环境中的实践,它简化...
docker-compose文件以dockerized方式启动KeyCloak和Postgres 基于Docker Volume的Keycloak主题安装 Docker Swarm Secrets存储密码 SSL配置,允许通过https服务密钥隐藏 自定义主题选项 入门 Docker群将提供所有...
它使用标签设置不同的选项以为每个容器启用Docker-ci。 Docker-CI监视容器的创建,这意味着您不必在更新容器配置时重新启动它。 Docker-CI然后将创建与此模式相对应的路由: http(s)://0.0.0.0[:port]/deploy/:...
给定docker-compose.yml文件,在include部分中获取每个配置,然后将其合并到基本的docker-compose.yml中。 如果任何包含的文件具有包含节,则继续提取并合并其中的每个节,直到没有其他文件要包含。 用例 如果您...
Docker Compose是Docker公司推出的一个用于定义和运行多容器Docker应用的工具,它通过YAML文件来配置服务,然后使用一个命令就可以启动和管理整个应用。Docker Compose v2.12.2是这个工具的一个版本更新,带来了多项...
去做[]配置ELK堆栈以使用新的目录布局[]添加更好的Phing支持用法注意-如果这是您第一次使用Docker,建议您阅读的语法说明,但是docker-compose.yml和docker-compose.yml docker-compose-developer-php7.yml文件中也...
Docker Compose则允许我们通过YAML文件(如`docker-compose.yml`)定义和运行多容器的Docker应用,简化了配置和管理过程。 2. Apache Airflow概述: Apache Airflow是一个开源的工作流管理系统,用于编排数据管道...