當我運行碼頭集裝箱時,我想發送動態文件名作爲一些環境變量。如何添加動態文件到碼頭集裝箱
這是在容器中可訪問,所以它在我們'回聲'時打印它的值。
但ADD命令不添加該文件。
Dockerfile:
ADD $filename ./
echo ls # Not showing file
搬運工運行-e文件名= '/路徑/到/ file.extension'
當我運行碼頭集裝箱時,我想發送動態文件名作爲一些環境變量。如何添加動態文件到碼頭集裝箱
這是在容器中可訪問,所以它在我們'回聲'時打印它的值。
但ADD命令不添加該文件。
Dockerfile:
ADD $filename ./
echo ls # Not showing file
搬運工運行-e文件名= '/路徑/到/ file.extension'
嘗試使用volume代替:
$ echo "hello world" > somefile.txt
$ docker run -it --rm -v $PWD/somefile.txt:/data/somefile.txt alpine cat /data/somefile.txt
hello world
的Dockerfile列出了在運行「docker build」時發生的操作。在運行時無法傳入環境變量,因爲此時圖像已經建好:-)
ADD
在編譯(構建)時間期間運行。當你運行docker exec -e
,這是容器建成後。
您無法添加動態文件,因爲它已編譯。以前關於卷的命令是正確的,因爲您可以在exec
期間臨時提供這些文件,並讓應用程序選取它們。
要添加到馬克的答案。
如果您想使用docker-compose.yml文件(如果您計劃反覆運行容器,這是一個好主意)。
mysql:
image: mysql
volumes:
- /someLocalFolder/lib/mysql/:/var/lib/mysql
,你可以爲你喜歡這種方式,包括個人文件,這可以很方便的配置等
體積的方法是一個好主意,謝謝你添加儘可能多的卷。請注意,您可以通過'docker run --env'和'docker run --env-file'命令在運行時爲您的容器設置環境變量。有用的技術 - 特別有助於保持Docker鏡像中的env-local設置和密碼/其他祕密。 –
@ChrisJohnson我完全同意,並且使用環境變量由12 Factor網站(https://12factor.net/config)推薦。但是在這種情況下,試圖在Dockerfile中使用環境變量,只能在Docker構建期間支持某些內容。由於這個問題得到了回答,Docker現在支持構建參數,請參閱:https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables-build-arg –