web-dev-qa-db-fra.com

Montez un volume dans docker-compose. Comment est-il fait?

Si j'exécute cette cmd dans une console:

 docker run -it --rm --link rabbit --link elasticsearch -v "$PWD"/logstash:/config-dir logstash logstash -f /config-dir/logstash.conf

Ça marche bien. Dans le dossier ./logstash se trouve un logstash.conf. Mais maintenant j'essaye de mettre dans un docker-compose et la même chose ne fonctionne pas:

  logstash:
  image: logstash:latest
  links:
    - "elasticsearch:elasticsearch"
    - "rabbit:rabbit"
  volumes:
      - $PWD/logstash:/config_dir
  command:
    - "-f /config_dir/logstash.conf"

Mais je ne vois pas la différence entre les deux commandes. De l'aide? Comment se fait le montage en volume? Ou est la commande qui ne fonctionne pas? La réponse de logstash init est:

logstash_1        | {:timestamp=>"2016-07-06T15:43:06.663000+0000", :message=>"No config files found: / /config_dir/logstash.conf\nCan you make sure this path is a logstash config file?", :level=>:error}
rabbitmq_logstash_1 exited with code 1

Edit: J'ai finalement résolu le problème en supprimant la commande et en utilisant la commande par défaut de l'image d'origine, mais je ne comprends toujours pas le problème et comment la même commande est passée à docker et fonctionne mais si il est passé par docker-compose pas. Merci d'avance

14
Killrazor

Votre configuration ne fonctionne probablement pas car votre version de docker-compose n'exécute pas les extensions Shell lors de la création de votre conteneur. Cela signifie que docker compose essaie de trouver un chemin littéral $PWD/logstash au lieu de développer $PWD dans votre répertoire actuel. Les versions ultérieures de docker compose permettent l'expansion des variables d'environnement.

Docker-compose autorise les chemins relatifs cependant, grâce à l'utilisation de ./, qui fait référence au dossier dans lequel se trouve le fichier de composition, pas nécessairement votre pwd , il vous suffit donc de modifier votre fichier de composition pour qu'il soit:

volumes:
    - ./logstash:/config_dir
24
Will Barnwell