如果我在控制台中执行此cmd:
docker run -it --rm --link rabbit --link elasticsearch -v "$PWD"/logstash:/config-dir logstash logstash -f /config-dir/logstash.conf
运行正常。在./logstash文件夹里面有一个logstash.conf。 但是现在我正试图加入一个docker-compose,但同样不起作用:
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传递则不行。 提前致谢
答案 0 :(得分:22)
您的配置可能无法正常工作,因为您的docker-compose版本在创建容器时不会执行shell扩展。这意味着docker compose正在尝试查找文字路径$PWD/logstash
,而不是将$PWD
扩展到您当前的目录。更高版本的docker compose允许环境变量扩展。
Docker-compose does allow relative paths虽然使用./
引用了撰写文件所在的 文件夹,但不一定是你的pwd
, 所以你只需要将你的撰写文件更改为:
volumes:
- ./logstash:/config_dir