![](/img/trans.png)
[英]Docker-compose not passing environment variables to docker container
[英]vscode dev container environment variables not exposing to docker-compose
我的docker-compose.yml
看起來像這樣
version: "3.8"
services:
vscode:
volumes:
- ..:/workspace:cached
- $SSH_AUTH_SOCK:/ssh-agent
- /var/run/docker.sock:/var/run/docker.sock
environment:
- SSH_AUTH_SOCK=/ssh-agent
問題是vscode不想給出任何可能性來做相當於docker-compose run --env...
所以我只剩下
WARNING: The SSH_AUTH_SOCK variable is not set. Defaulting to a blank string.
有什么方法可以讓我在不使用.env
文件或類似文件的情況下將我的變量從我的主機公開到 dev 容器?
根據文檔,通過容器從主機公開環境變量
您可以將環境變量從 shell 直接傳遞到具有“環境”鍵的服務容器,方法是不給它們一個值,就像
docker run -e VARIABLE...
一樣:
web: environment: - DEBUG
容器中
DEBUG
變量的值取自運行 Compose 的 shell 中相同變量的值。
關於SSH_AUTH_SOCK
你應該看看SSH Agent forwarding inside docker compose container 。
對,問題是即使這樣做,環境變量也沒有被正確暴露。
使用變量DEBUG
的簡單服務。
services:
test:
image: busybox
command: ["echo", "${DEBUG}"]
environment:
- DEBUG
在不導出變量的情況下使用它,它不起作用,output 中會顯示警告。
# running the service
docker-compose up
# WARNING: The DEBUG variable is not set. Defaulting to a blank string.
# Starting d-compose-env_test_1 ... done
# Attaching to d-compose-env_test_1
# test_1 |
# d-compose-env_test_1 exited with code 0
現在在運行它之前在主機上導出變量,它可以工作,打印變量的值。
# exporting the variable
export DEBUG=test
# running the service
docker-compose up
# Recreating d-compose-env_test_1 ... done
# Attaching to d-compose-env_test_1
# test_1 | test
# d-compose-env_test_1 exited with code 0
我昨天在 github 上打開了一個問題。 結果是,如果您使用 WSL ,則需要通過 ~/.profile 或 ~/.bash_profile 導出此變量。
我們正在使用非交互式登錄 shell 來探測 WSL 中的環境變量並將它們用作“本地”變量。
https://github.com/microsoft/vscode-remote-release/issues/5806
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.