我有一種情況,我需要source
一個bash環境文件,它存放在一個單獨的卷(通過volumes_from
在docker-compose
中提取),當容器啓動時,所有未來的命令在該容器上運行將在該bash環境下執行(它運行一些腳本並設置從其他地方拉入的大量動態變量)。我使用卷而不是直接將此命令直接添加到映像的原因是因爲我需要包含的環境文件位於Dockerfile上下文之外,並且Dockerfiles不支持該文件。在容器啓動之前,我可以在單獨的泊塢窗卷中的文件中運行bash腳本嗎?
我嘗試將source /path/to/volume/envfile
行添加到根用戶的.bashrc
文件中,希望它在容器啓動時運行,但這不起作用。我假設這是因爲直到容器/外殼程序啓動並且已經運行命令(這是有道理的)之後才實際安裝這些卷。
有沒有人有任何想法,我可以如何完成這樣的事情?我接受其他方法,但是我不能在這裏改變的一件事就是移動Docker上下文中需要的文件,因爲這會破壞很多其他的東西。
我(略編輯)Dockerfile和碼頭工人,compose.yml文件:https://gist.github.com/joeellis/235d90799eb647ab00ec
編輯:而作爲一個測試,我想運行在容器上一個rake db:create:all
,像docker-compose run app rake db:create:all
這是返回一個錯誤我所需要的環境文件無法找到/加載。有趣的是,如果我將shell放入容器並運行命令,這一切似乎都很好。所以也許當一個容器通過run
得到一個命令時,它不一定會打開一個shell,而是使用其他的東西?
適合我工作。你的基本圖像和運行命令是什麼? – ISanych
@ISanych啊,很高興知道我在正確的軌道上,如果它適合你。編輯後的Dockerfile和docker-compose.yml文件 – joeellis