2016-07-06 109 views
4

如果我執行這個cmd在控制檯:在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。 但現在我想放在一個碼頭工人,撰寫和同樣不工作:

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-compose傳遞則不行。 在此先感謝

回答

11

您的配置可能不起作用,因爲在創建容器時,docker-compose不會執行shell擴展。這意味着碼頭工人正試圖找到一個文字路徑$PWD/logstash而不是將$PWD擴展到您的當前目錄。

泊塢窗,構成does allow relative paths不過,通過使用./,它引用文件夾撰寫文件中,不一定是你的pwd所以你只需要改變一下撰寫的文件是:

volumes: 
    - ./logstash:/config_dir 
+0

沒辦法:(同樣的錯誤,我懷疑命令,因爲錯誤消息將另一個斜槓「找不到配置文件:/ /config_dir/logstash.conf。這是什麼第一個斜槓? – Killrazor

+0

'。/ dir'是你如何在你的'pwd'上引用一個目錄,如果你使用'.dir',它會查找一個目錄名稱.dir –

+0

愚蠢的問題,但是是泊塢窗撰寫文件在同一目錄中的logstash文件夾? –

相關問題