我的方案是遵循如何使用shell腳本設置在dockerfile環境變量動態值
我需要添加「項目」文件夾泊塢窗容器的生產版本,但對於開發版本我想掛載投影容器的本地容量文件夾 例如。
ADD project /var/www/html/project
生產
發展什麼,如果我整個項目文件夾複製到容器的發展則項目文件夾中的任何改變都會add命令後層的泊塢窗廢除高速(我可以在開發複製的虛擬文件夾)。開發Docker鏡像需要時間。
我想用同樣的搬運工文件兩個環境
爲了實現我在泊塢窗文件,其中$ PROJECT_DIR是環境變量
設置在泊塢窗文件中的環境變量像
ENV PROJECT_DIR project
使用ADD $PROJECT_DIR /var/www/html/project
或ENV CONFIG_FILE_PATH dummy-folder
將正確的文件夾添加到容器,但它需要我每次更改docker文件。建設搬運工圖像像
docker build -t myproject --build-arg "BUILD_TYPE=PROD" --build-arg "PROJECT_DIR=project" .
爲變量BUILD_TYPE和PROJECT_DIR相關時,我也可以通過「集結ARG」參數,我想設置基於BUILD_TYPE CONFIG_FILE_PATH變量。這將防止我忘記更改一個參數的情況。
對於設置我寫下面的腳本 「set_config_path.sh」
if [ $BUILD_TYPE="PROD" ]; then PROJECT_DIR="project"; else PROJECT_DIR="dummy-folder"; fi
我然後運行dockerfile腳本使用
RUN . /root/set_project_folder.sh
這樣做,set_project_folder.sh可以編寫腳本的PROJECT_DIR變量訪問BUILD_TYPE變量,但PROJECT_DIR未在Docker文件中反映出來
- 以m爲單位運行set_project_folder.sh Ÿ本地機器的終端,該PROJECT_DIR變量發生變化,但它不與dockerfile
工作反正是有,我們可以環境變量從子shell腳本e.g「set_config_path.sh」在上述問題的變化?
如果可能的話,它可以在許多用例用來做搬運工建立動態
難道我做錯了什麼嗎?
或
是否有另一個很好的方法來實現這一目標?
謝謝你好,你的解決方案將爲條件下工作,我把上這個問題,對不起,我忘了提及其他條件。我也想使用「BUILD_TYPE」變量來複制生產版本的一些文件夾,但不能用於開發版本。我會更新我的問題也包括這一點 –