A versão em “./docker-compose.yml” não é compatível. Você pode estar vendo este erro porque está usando a versão errada do arquivo Escrever

92

Este é meu arquivo docker-compose.yml:

version: '3.1'

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

secrets:
  id: my_password

Se eu correr $ docker-compose-up , recebo isto:

A versão em "./docker-compose.yml" não é compatível. Você pode estar vendo este erro porque está usando a versão errada do arquivo de composição.

Minha versão docker-compose:

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

O que há de errado aqui? Minha versão docker-compose não deveria ser compatível com a v3.1 da especificação docker-compose.yml (de acordo com as notas de versão , ela oferece)?

Eric
fonte
qual é a versão do docker (não docker compose)?
lvthillo de
Docker versão 1.13.0, compilação 49bf474
Eric
é docker-composee não édocker compose
Abdou Tahiri
@AbdouTahiri CLI é, docker-composemas Docker Composeé a tecnologia. Docs.docker.com/compose
lvthillo
4
Enfrentando o mesmo problema com a versão "3.6". Meu docker é18.03.0-ce, build 0520e24
Rajeev Ranjan

Respostas:

92

Você está fazendo tudo certo e deve funcionar. Mas havia um bug no docker-compose 1.11.0 que não reconhecia o formato de arquivo 3.1 como válido. (3.0 funciona).

Já existe uma nova versão do docker-compose (1.11.1) que inclui a correção do bug:

Correções de bugs

Corrigido um bug em que o formato de arquivo 3.1 não era reconhecido como válido pelo analisador Compose

Portanto, eu recomendaria atualizar sua versão do docker-compose se você quiser usar o formato de arquivo 3.1.

No momento, a maneira mais segura de atualizar docker-compose é excluí-lo e reinstalá-lo.

rm /usr/local/bin/docker-compose

Reinstalar:

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

Agora não há mais erro no formato do arquivo. (Eu não testei com seu .yml).

docker-compose up
Starting compose_a_1
Starting compose_b_1
lvthillo
fonte
3
Obrigado. Por alguma razão, sua dose de cmd curl não funciona para mim no Ubuntu 16.04. Em seguida, atualizei para a última versão docker-compose seguindo o guia no site oficial aqui. docs.docker.com/compose/install , que é mais ou menos igual ao anterior. Mas em curl cmd, o ">" muda para "-o".
zhihong
8
O bug também afeta a versão 1.8.0; A versão 1.16.1 está disponível e funcionou perfeitamente no Ubuntu 16.04. Apenas corrija o componente de versão do caminho acima, não é possível colá-lo claramente neste comentário devido a aspas: /
chrisinmtown
Não sei o motivo, mas o curlcomando não é executado. .. diz permissão negada.
Deepak Sharma
1
Aqueles que estão enfrentando erros ao executar o curlcomando, tente isto: docs.docker.com/compose/install/#install-compose
Deepak Sharma
1
@DeepakSharma Você deve executar os comandos curl e chmod como usuário root (ou usar sudo)
lvthillo
53

Resolvi o problema atualizando docker-compose.

Seguido as etapas abaixo para atualizar docker-compose no ubuntu16.04

passo 1:

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

passo 2:

$sudo rm /usr/bin/docker-compose

etapa 3:

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

Passo 4:

chmod +x /usr/bin/docker-compose
Thavaprakash Swaminathan
fonte
Isso funcionou bem para mim no Elementary OS Loki (0.4.1).
J. Afarian
6
Como a versão do docker muda frequentemente, procure aqui a instalação da versão mais recente do docker github.com/docker/compose/releases
DrB
1
A versão que eu estava recebendo do apt-get era 1.17, ele também estava tendo esse problema (Linux Mint 19). Eu baixei o 1.24.1 de forma semelhante ao layout dessas etapas, parece estar funcionando. Obrigado!
Will Buck
1
Após excluí-lo, sudo apt install docker-composediga-me que já tenho a versão e docker-compose updiga que não tenho nenhum docker-compose instalado. Por que vocês não estão usando o apt? Eu tenho dois problemas agora.
Ambroise Rabier
18

Se a versão do seu arquivo for 3.7 e você receber o seguinte erro:

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.

Aqui está a solução: -

(1) sudo apt-get remove docker-composeOUsudo 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

Espero que isso resolva o problema.

dPac
fonte
você pode querer verificar a versão mais recente em github.com/docker/compose/releases , no momento, a versão é 1.27.4
FrankZhu
4

Se estiver usando linux / ubuntu , isso pode ser óbvio, mas tome cuidado ao executar como root, por exemplo

docker-compose -v

docker-compose version 1.8.0, build unknown

vs

sudo docker-compose -v 

docker-compose version 1.17.1, build 6d101fb

Além disso, certifique-se de que docker-compose e docker-machine estejam atualizados como @lvthillo declara

Glen Thompson
fonte
Esta deve ser a resposta certa. Estou no Ubuntu, tive que usar o comando SUDO para trabalhar
brunoramonalmeida
sudo docker-compose -v me dá docker-compose versão 1.8.0, build desconhecido
Julien
Isso é com sudo?
Glen Thompson
-1. Sudo é ruim. Aqui está uma alternativa: docs.docker.com/install/linux/linux-postinstall/…
Ligemer
Bom adicionar, embora eu não diria que é "ruim". Sinta-se à vontade para editar a resposta para incluí-la como um acréscimo.
Glen Thompson
2

Eu tinha feito isso docker-compose --versionantes de implementar a solução de lvthillo e ainda estava recebendo versões desatualizadas aparecendo. Acontece que eu precisava esvaziar a lista de hash que meu shell bash estava segurando. hash -r... espero que seja útil para outra pessoa

Brandon
fonte
2

tente desinstalar a versão antiga e reinstalar.

sudo apt remove docker-compose
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

deve imprimir

docker-compose --version
docker-compose version 1.22.0, build 1719ceb
qwerty
fonte
3
Por que reiniciar a máquina só porque você baixou um arquivo?
Soren Bjornstad
1

Não podemos dizer a você sem observar o erro específico em primeiro lugar, verifique-o executando este comando

docker build . Quando você obteve o erro, procure no google no meu caso foi o erro de permissão quando tentei com o sudo funcionou.

Espero que ajude você

user10538706
fonte
0

No osx 10.12.6 sierra

Etapas para v1.22 ou superior

Tive um problema / incompatibilidade específico em que não queria atualizar completamente o docker. Estou preso atualmente no docker 17.06.0-ce-mac18. Então, eu apenas queria atualizar docker-compose e nada mais.

Meus passos:

  • Identifique a localização de docker-compose: which docker-compose
  • Identifique a versão docker-compose: docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • fazer backup do docker-compose anterior ?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • substituir com curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • se você precisar determinar a versão mais recente, basta verificar https://github.com/docker/compose/releases e substituir a versão acima pela mais recente.
  • verificar versão: docker-compose --version=docker-compose version 1.22.0, build f46880f
wired00
fonte