将一个卷挂载到docker-compose中。 它是如何完成的?

如果我在控制台执行这个命令:

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

它运行良好。 在./logstash文件夹里有一个logstash.conf。 但现在我正在试图把一个docker写作,同样不起作用:

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

但是我看不出两个命令之间的区别。 一些帮助? 如何进行卷装? 或者是不起作用的命令? logstash init的响应是:

 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 

编辑:我终于通过删除命令和使用原始图像的默认命令来解决问题,但我仍然不明白的问题,以及如何将相同的命令传递给docker工作,但如果它通过docker-compose别。 提前致谢

您的configuration可能不起作用,因为在创build容器时,docker-compose不会执行shell扩展。 这意味着$PWD/logstash compose试图find一个文字path$PWD/logstash而不是将$PWD扩展到你的当前目录。

尽pipeDocker-compose 允许使用相对path ,通过使用./引用compose文件所在文件夹,不一定是你的pwd所以你只需要将你的合成文件改为:

 volumes: - ./logstash:/config_dir