La version dans «./docker-compose.yml» n'est pas prise en charge. Vous voyez peut-être cette erreur parce que vous utilisez la mauvaise version du fichier de composition

90

Voici mon fichier docker-compose.yml:

version: '3.1'

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

secrets:
  id: my_password

Si je cours, $ docker-compose-upj'obtiens ceci:

La version dans "./docker-compose.yml" n'est pas prise en charge. Vous voyez peut-être cette erreur parce que vous utilisez la mauvaise version du fichier de composition.

Ma version docker-compose:

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

Quel est le problème ici? Ma version docker-compose ne devrait-elle pas prendre en charge la v3.1 de la spécification docker-compose.yml (selon les notes de publication , c'est le cas)?

Eric
la source
quelle est la version de votre docker (pas de docker compose)?
lvthillo
Docker version 1.13.0, build 49bf474
Eric
its docker-composeand notdocker compose
Abdou Tahiri
@AbdouTahiri CLI est docker-composemais Docker Composeest la technologie .. docs.docker.com/compose
lvthillo
4
Face au même problème avec la version "3.6". Mon docker est18.03.0-ce, build 0520e24
Rajeev Ranjan

Réponses:

90

Vous faites tout correctement et cela devrait fonctionner. Mais il y avait un bogue dans docker-compose 1.11.0 qui ne reconnaissait pas le format de fichier 3.1 comme valide. (3.0 fonctionne).

Il existe déjà une nouvelle version de docker-compose (1.11.1) qui inclut le correctif:

Corrections de bugs

Correction d'un bug où le format de fichier 3.1 n'était pas reconnu comme valide par l'analyseur Compose

Je vous recommande donc de mettre à jour votre version de docker-compose si vous souhaitez utiliser le format de fichier 3.1.

Pour le moment, le moyen le plus sûr de mettre à niveau docker-compose est de le supprimer et de le réinstaller.

rm /usr/local/bin/docker-compose

Réinstaller:

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

Maintenant, il n'y a plus d'erreur sur le format de fichier. (Je n'ai pas testé avec votre .yml).

docker-compose up
Starting compose_a_1
Starting compose_b_1
lvthillo
la source
3
Merci. Pour une raison quelconque, votre dose curl cmd ne fonctionne pas pour moi dans ubuntu 16.04. J'ai ensuite mis à jour la dernière version de docker-compose en suivant le guide sur le site officiel ici. docs.docker.com/compose/install , qui est plus ou moins identique à ce qui précède. Mais dans curl cmd, le ">" devient "-o".
zhihong
8
Le bogue affecte également la version 1.8.0; la version 1.16.1 est disponible et a parfaitement fonctionné sur Ubuntu 16.04. Corrigez simplement le composant de version du chemin ci-dessus, vous ne pouvez pas le coller clairement dans ce commentaire en raison des guillemets arrière: /
chrisinmtown
Je ne connais pas la raison mais la curlcommande ne s'exécute pas. .. dit la permission refusée.
Deepak Sharma
1
Ceux qui font face à une erreur lors de l'exécution de la curlcommande, essayez ceci: docs.docker.com/compose/install/#install-compose
Deepak Sharma
1
@DeepakSharma Vous devez exécuter les commandes curl et chmod en tant qu'utilisateur root (ou utiliser sudo)
lvthillo
51

J'ai résolu le problème en mettant à jour docker-compose.

Suivez les étapes ci-dessous pour mettre à niveau docker-compose dans ubuntu16.04

étape 1:

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

étape 2:

$sudo rm /usr/bin/docker-compose

étape 3:

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

étape 4:

chmod +x /usr/bin/docker-compose
Thavaprakash Swaminathan
la source
Cela a bien fonctionné pour moi sur Elementary OS Loki (0.4.1).
J. Afarian
6
Depuis la version de docker change fréquemment, cherchez ici pour installer la dernière version de docker github.com/docker/compose/releases
DrB
1
La version que j'obtenais d'apt-get était la 1.17, elle avait également ce problème (Linux Mint 19). J'ai téléchargé 1.24.1 de la même manière que la présentation de ces étapes, semble fonctionner. Merci!
Will Buck
1
Après l'avoir supprimé, sudo apt install docker-composedites-moi que j'ai déjà la version, et docker-compose updites-moi que je n'ai pas installé docker-compose. Pourquoi n'utilisez-vous pas apt? J'ai deux problèmes maintenant.
Ambroise Rabier
14

Si la version de votre fichier est 3.7 et que vous obtenez l'erreur suivante:

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.

Voici la solution: -

(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

J'espère que cela résout le problème.

dPac
la source
4

Si vous utilisez linux / ubuntu , c'est peut-être évident, mais faites attention à vous lancer en tant que root, par exemple

docker-compose -v

Donne

docker-compose version 1.8.0, build unknown

contre

sudo docker-compose -v 

Donne

docker-compose version 1.17.1, build 6d101fb

Assurez-vous également que docker-compose et docker-machine sont à jour comme l' indique @lvthillo

Glen Thompson
la source
Cela devrait être la bonne réponse. Je suis sous Ubuntu, j'ai dû utiliser la commande SUDO pour travailler
brunoramonalmeida
sudo docker-compose -v me donne la version 1.8.0 de docker-compose, build inconnu
Julien
Est-ce avec sudo?
Glen Thompson
-1. Sudo est mauvais. Voici une alternative: docs.docker.com/install/linux/linux-postinstall/…
Ligemer
Bien ajouté, même si je ne dirais pas que c'est "mauvais". N'hésitez pas à modifier la réponse pour l'inclure comme un ajout.
Glen Thompson
2

Je l'avais fait docker-compose --versionavant d'implémenter la solution de lvthillo et je recevais toujours des versions obsolètes. Il s'est avéré que j'avais besoin de vider la liste de hachage que mon shell bash tenait. hash -r... j'espère que c'est utile pour quelqu'un d'autre

Brandon
la source
2

essayez de désinstaller l'ancienne version et de réinstaller.

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

devrait imprimer

docker-compose --version
docker-compose version 1.22.0, build 1719ceb
qwerty
la source
3
Pourquoi redémarrer la machine simplement parce que vous avez téléchargé un fichier?
Soren Bjornstad
1

Nous ne pouvons pas vous dire sans regarder l'erreur particulière d'abord la vérifier en exécutant cette commande

docker build . lorsque vous avez obtenu l'erreur, recherchez-la dans google dans mon cas, c'était l'erreur d'autorisation lorsque je l'ai essayé avec sudo, cela a fonctionné.

J'espère que cela vous aidera

user10538706
la source
0

Sur osx 10.12.6 sierra

Étapes pour la version 1.22 ou supérieure

J'ai eu un problème / incompatibilité spécifique où je ne voulais pas complètement mettre à niveau le docker. Je suis actuellement bloqué sur le docker 17.06.0-ce-mac18. Donc je voulais simplement mettre à jour docker-compose et rien d'autre.

Mes pas:

  • Identifiez l'emplacement de docker-compose: which docker-compose
  • Identifiez la version de docker-compose: docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • sauvegarde précédente docker-compose?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • remplacer par curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • si vous avez besoin de déterminer la dernière version, vérifiez simplement https://github.com/docker/compose/releases et remplacez la version ci-dessus par la dernière.
  • vérifier la version: docker-compose --version=docker-compose version 1.22.0, build f46880f
filaire00
la source