簡體   English   中英

vscode 開發容器環境變量不暴露給 docker-compose

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM