不喜欢广告? 去 无广告 今天
Docker Compose YAML 格式化工具
数据开发人员
广告 移除?
广告 移除?
指导
Docker Compose YAML 格式化工具
将 docker-compose.yml 粘贴到输入区域,或点击其中一个示例链接以加载示例栈。 version 字段或传统 links,并在引发运行时故障之前警告关于未知服务选项。
如何使用
- 将您的
docker-compose.yml输入到输入区域,或点击其中一个示例链接以加载示例堆栈。 - 选择键顺序—— Compose 约定 按 Compose 用户期望的顺序对服务进行排序(镜像、重启、环境变量、端口、卷……), 字母顺序 按严格字母顺序 A-Z 排序,或 保留 保持您原有的顺序。
- 选择 2 或 4 个空格的缩进,并开启或关闭 Compose 规范验证。
- 查看验证面板中的错误、已弃用键的警告以及关于隐式网络引用的信息提示。
- 复制结果或将其下载为
docker-compose.yml.
特征
- Compose 规范验证 – 识别顶层
services,networks,volumes,configs,secrets,profiles,include,以及扩展字段(x-*);标记其他内容。 - 弃用警告 – 突出显示旧版顶层
version键,links,external_links,以及应移至deploy.resources. - 服务感知的键排序 – 为每个服务重新排序,使标识键(
image,build,container_name)位于最前,运行时配置(environment,ports,volumes)位于中间,操作相关配置(healthcheck,logging,deploy)位于最后。 - 引用检查 – 检测依赖于未定义服务的服务,并在服务使用未在顶层声明的网络时发出警告。
- 服务要求 – 验证每个服务至少包含一个
image,build,extends, 或者provider,并且restart使用四种有效策略之一。 - 端口 + 健康检查合理性检查 – 捕获格式错误的端口字符串、长格式端口中的缺失
target,以及缺少test. - 的健康检查。 三个工作示例
- – 一个 Node + Postgres Web 应用,一个 WordPress + MySQL + Redis 栈,以及一个带有配置文件和资源限制的多服务构建。 本地 + 私有
常问问题
-
– 所有解析、排序和验证均在您的浏览器中运行。您的 Compose 文件永远不会离开页面。
为什么顶层 version 键已被弃用?
-
version 键曾用于旧版 Compose v1、v2 和 v3,以选择 docker-compose CLI 的架构。当前的 Compose 规范将这些架构合并为一个持续演进的单一规范,因此版本声明不再有任何作用——最近的 Docker Compose 版本简单地忽略它并打印警告。移除该键可以缩小文件体积,并避免读者误以为 v3 特性受该声明限制而产生困惑。
什么是 Compose 规范,它与旧版 Compose 文件格式有何不同?
-
Compose 规范是取代了 2020 年前 Docker Compose 使用的各版本架构的开放、中立的架构规范。它由 github.com/compose-spec/compose-spec 维护,并被 Docker Compose、Podman Compose 等运行器实现。与 v2 和 v3 相比,该规范去除了 version 字段,将 services 作为唯一必需的顶层键,并将 Swarm 专属字段(如 deploy)作为可选元数据,供编排器消费。
为什么更推荐使用共享网络而不是 links 关键字?
-
links 是从 Docker 的网络时代之前继承而来的,仅在默认桥接网络上为容器之间设置 DNS 别名。现代用户定义网络已为每个服务提供自动基于服务名称的 DNS 解析,支持每个栈中的多个隔离网络,并允许通过 aliases 选项控制 DNS 别名。因此,Compose 规范将 links 标记为已弃用,并推荐使用显式网络成员身份。
每个重启策略实际上做了什么?
-
no 不会重启容器。always 在容器停止时(包括在守护进程重启后)始终重启容器。on-failure 仅在容器退出状态码非零时重启,可选地通过最大重试次数进行限制。unless-stopped 行为类似于 always,但一个在守护进程重启前被手动停止的容器将保持停止状态。这四个值是大小写敏感的字符串——任何其他值都将被 Compose 引擎拒绝。
Compose 如何决定是拉取还是构建镜像?
