版本在" ./ docker-compose.yml"不受支持。您可能会看到此错误,因为您使用了错误的Compose文件版本

时间:2017-02-09 14:58:43

标签: docker-compose

这是我的docker-compose.yml文件:

version: '3.1'

services:
  a:
    image: tutum/hello-world
  b:
    image: tutum/hello-world

secrets:
  id: my_password

如果我运行$ docker-compose-up我就明白了:

  

版本在" ./ docker-compose.yml"不受支持。您可能会看到此错误,因为您使用了错误的撰写文件版本。

我的docker-compose版本:

$ docker-compose --version
docker-compose version 1.11.0, build 6de1806

这里有什么问题?难道我的docker-compose版本支持docker-compose.yml规范的v3.1(根据release notes确实如此)?

10 个答案:

答案 0 :(得分:74)

你正在做的一切正常,它应该工作。但是在docker-compose 1.11.0中有一个bug,它无法将文件格式3.1识别为有效。 (3.0作品)。

已经有一个新版本的docker-compose(1.11.1),它包含了错误修正:

  

错误修正

     

修正了Compose解析器

未将3.1文件格式识别为有效的错误

因此,如果您想使用文件格式3.1,我建议您升级您的docker-compose版本。

目前升级docker-compose最安全的方法是删除它并重新安装它。

rm /usr/local/bin/docker-compose

重新安装:

curl -L https://github.com/docker/compose/releases/download/1.11.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose version 1.11.1, build 7c5d5e4

现在文件格式上没有错误了。 (我没有用你的.yml测试。)

docker-compose up
Starting compose_a_1
Starting compose_b_1

答案 1 :(得分:37)

我已通过升级docker-compose解决了这个问题。

在ubuntu16.04

中升级docker-compose的步骤如下

步骤1:

$which docker-compose
/usr/bin/docker-compose

步骤2:

$sudo rm /usr/bin/docker-compose

步骤3:

curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose

步骤4:

chmod +x /usr/bin/docker-compose

答案 2 :(得分:16)

如果文件版本为3.7,则出现以下错误:

ERROR: Version in "./config.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.

这是解决方案:-

(1)sudo apt-get remove docker-composesudo rm /usr/local/bin/docker-compose

(2)sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

(3)sudo chmod +x /usr/local/bin/docker-compose

(4)sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

我希望这可以解决问题。

答案 3 :(得分:2)

获取最新版本的 docker-compose :

sudo apt remove docker-compose
curl -L https://github.com/docker/compose/releases/download/1.28.4/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose

答案 4 :(得分:1)

在实施lvthillo的解决方案之前,我已经完成了docker-compose --version的工作,但仍然出现过时的版本。原来,我需要刷新bash shell保留的哈希列表。 hash -r ...希望对其他人有用

答案 5 :(得分:1)

尝试卸载旧版本并重新安装。

sudo apt remove docker-compose
sudo curl -L sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
reboot

应打印

docker-compose --version
docker-compose version 1.22.0, build 1719ceb

答案 6 :(得分:1)

我们无法不看特定错误就告诉您 首先通过运行此命令进行检查

doLast { ant.checksum(file: archivePath, algorithm: "SHA-512") } 当您收到错误时,然后在Google中搜索 在我的情况下,这是当我使用sudo尝试时的权限错误。

希望对您有帮助

答案 7 :(得分:0)

在osx 10.12.6 sierra上

v1.22或更高版本的步骤

我有一个特定的问题/不兼容,我不想完全升级docker。我目前被卡在docker 17.06.0-ce-mac18上。所以我只想升级docker-compose,什么都没有。

我的步骤:

  • 确定docker-compose的位置:which docker-compose
  • 识别docker-compose版本:docker-compose --version = docker-compose version 1.14.0, build c7bdf9e
  • 备份以前的docker-compose ?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • 替换为 curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 如果您需要确定最新版本,只需选中https://github.com/docker/compose/releases并将上面的版本替换为最新版本。
  • 验证版本:docker-compose --version = docker-compose version 1.22.0, build f46880f

答案 8 :(得分:0)

我通过确保我的新代码其余代码对齐来解决了这个问题。看起来它需要有某种格式,如果它与代码的其余部分未对齐,它将看不到“此 Compose 文件的有效顶级部分是:版本、服务、网络、卷、秘密、配置和扩展名以“x-”开头。'

答案 9 :(得分:0)

试试“sudo”

sudo docker-compose up