将一个卷挂载到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