環境變數
您可以使用以下選項之一,在容器中設定環境變數,而無需變更容器映像。
您應確認已在設定中勾選「終端機 > 整合式:繼承環境變數」,否則您設定的變數可能不會出現在整合式終端機中。此設定預設為勾選。
選項 1:新增個別變數
取決於您在 devcontainer.json
中參考的內容
-
Dockerfile 或映像檔:將
containerEnv
屬性新增至devcontainer.json
,以設定應套用於整個容器的變數;或新增remoteEnv
以設定 VS Code 和相關子程序 (終端機、工作、偵錯等) 的變數"containerEnv": { "MY_CONTAINER_VAR": "some-value-here", "MY_CONTAINER_VAR2": "${localEnv:SOME_LOCAL_VAR}" }, "remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path", "MY_REMOTE_VARIABLE": "some-other-value-here", "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}" }
如此範例所示,
containerEnv
可以參考本機變數,而remoteEnv
可以參考本機變數和現有的容器變數。
影片:在開發容器中修改 PATH
-
Docker Compose:由於 Docker Compose 內建支援更新容器範圍的變數,因此
devcontainer.json
中僅支援remoteEnv
"remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path", "MY_REMOTE_VARIABLE": "some-other-value-here", "MY_REMOTE_VARIABLE2": "${localEnv:SOME_LOCAL_VAR}" }
如此範例所示,
remoteEnv
可以參考本機變數和現有的容器變數。若要更新套用於整個容器的變數,請更新 (或 擴充) 您的
docker-compose.yml
,並針對適當的服務新增以下內容version: '3' services: your-service-name-here: environment: - YOUR_ENV_VAR_NAME=your-value-goes-here - ANOTHER_VAR=another-value # ...
如果您已建置容器並連線至容器,請從命令選取區 (F1) 執行「開發容器:重新建置容器」以套用變更。否則,請執行「開發容器:在容器中開啟資料夾...」以連線至容器。
選項 2:使用 .env 檔案
如果您有大量環境變數需要設定,可以使用 .env
檔案。
首先,在您的原始碼樹狀結構中的某處建立一個環境檔案。請考慮使用這個 .devcontainer/devcontainer.env
檔案
YOUR_ENV_VAR_NAME=your-value-goes-here
ANOTHER_ENV_VAR_NAME=your-value-goes-here
接下來,取決於您在 devcontainer.json
中參考的內容
-
Dockerfile 或映像檔:編輯
devcontainer.json
並新增.devcontainer.env
的路徑"runArgs": ["--env-file",".devcontainer/devcontainer.env"]
-
Docker Compose: 編輯
docker-compose.yml
並新增相對於 Docker Compose 檔案的.devcontainer.env
檔案路徑version: '3' services: your-service-name-here: env_file: devcontainer.env # ...
docker compose
會自動選取包含 docker-compose.yml
的資料夾中名為 .env
的檔案,但您也可以在其他位置建立一個。
如果您已建置容器並連線至容器,請從命令選取區 (F1) 執行「開發容器:重新建置容器」以套用變更。否則,請執行「開發容器:在容器中開啟資料夾...」以連線至容器。