docker-compose:服务服务的不支持的配置选项:'web'

Dar*_*Ght 39 docker docker-compose

我正在浏览docker-compose的入门页面:https: //docs.docker.com/compose/gettingstarted/

在第3步中,我创建了一个docker-compose.yml文件,如下所述:

version: '2'
services:
    web:
        build: .
        ports: 
            - "5000:5000"
        volumes: 
            - .:/code
        depends_on:
            - redis
    redis:
        image: redis
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时:

$ docker-compose up
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

服务服务的不受支持的配置选项:'web'

我无法弄清楚发生了什么.有帮助吗?

谢谢

lar*_*sks 46

在今年2月左右发布的docker-compose 版本1.6中引入了对版本2撰写文件格式的支持.

你从2015年7月开始使用1.3.3.

您需要升级到更新版本才能使用版本2格式的配置文件.


osp*_*der 23

由于这是谷歌搜索“docker-compose Unsupported config option for services”的第一个结果,我想补充一点,截至 2020 年,最常见的原因是缺少version: "3".

只需添加version: "3"到您的docker-compose.yml.

文档

目前有三个版本的 Compose 文件格式:

  1. 版本 1,旧格式。这是通过省略 YAML 根目录中的版本密钥来指定的。
  2. 版本 2.x。这是使用版本:'2' 或版本:'2.1' 等指定的,位于 YAML 的根目录。
  3. 版本 3.x,最新的和推荐的版本,旨在在 Compose 和 Docker Engine 的 swarm 模式之间交叉兼容。这通过版本:'3' 或版本:'3.1' 等指定,位于 YAML 的根目录。

  • 虽然我认为这是正确的并添加版本:“3”可能是继续前进的最快方式,但似乎很奇怪https://github.com/compose-spec/compose-spec/blob/master/spec.md#compose-文件列出版本:已弃用/仅供参考。我觉得我应该可以把它排除在外。 (9认同)
  • `Compose 实现不应该使用此版本来选择精确的模式来验证 Compose 文件,而是更喜欢设计时的最新模式。` ... 写在 docs.docker.com ... 这就是只是令人困惑,因为顶级“版本”确实会影响 docker-compose 运行。 (2认同)

小智 5

在我的 docker-compose.yml 文件顶部添加了版本:“3.1”并且它有效