[英]vscode dev container environment variables not exposing to docker-compose
[英]VSCode Remote Container - extensions not installing on dev container using docker-compose
我無法使用“遠程 - 容器”在開發容器中安裝擴展。 我不知道這是錯誤,我的配置不正確,還是預期的行為。 下面是我當前的配置,這兩個文件都位於項目的根文件夾中。
docker-compose.yml
version: "3.7"
services:
api:
image: node:12
restart: always
ports:
- ${API_PORT}:3000
volumes:
- .:/usr/app
- /usr/app/node_modules
working_dir: /usr/app
command: bash -c "yarn && yarn dev"
.devcontainer.json
{
"dockerComposeFile": "docker-compose.yml",
"service": "api",
"workspaceFolder": "/usr/app",
"extensions": [
"eamodio.gitlens",
"formulahendry.auto-rename-tag",
"coenraads.bracket-pair-colorizer-2",
"kumar-harsh.graphql-for-vscode",
"esbenp.prettier-vscode",
"ms-vscode.vscode-typescript-tslint-plugin",
"visualstudioexptteam.vscodeintellicode"
]
}
.devontainer.json
中列出的擴展列表是我想要安裝在開發容器中的擴展列表。 任何幫助表示贊賞!
根據Visual Studio Code 文檔,這兩個文件需要位於工作區根目錄中的.devcontainer
目錄中。
在公司代理后面工作時,我仍然遇到安裝擴展的問題。 解決方案是讓容器訪問代理服務器:
如果您在本地機器上使用 Cntlm 之類的authenticating
代理,請將其配置為偵聽172.17.0.1
(Docker 接口)。 然后為容器定義http_proxy
和https_proxy
環境變量。 例如,在devcontainer.json
:
"containerEnv": {
"http_proxy": "http://172.17.0.1:3128",
"https_proxy": "http://172.17.0.1:3128"
}
或者在docker-compose.yaml
services:
devcontainer:
environment:
http_proxy: http://172.17.0.1:3128
https_proxy: http://172.17.0.1:3128
或者配置docker-compose.yaml
使容器使用主機網絡:
services:
devcontainer:
network_mode: host
然后,您可以將與主機上使用的相同的代理變量傳遞到容器中。 例如,在docker-compose.yaml
:
services:
devcontainer:
environment:
http_proxy: $http_proxy
https_proxy: $https_proxy
如果您使用的不是本地代理,而是網絡內部的遠程代理,則無論容器的網絡配置(主機或默認)如何,您都可以執行后者。
此答案僅適用於您的網絡環境需要使用代理服務器的情況。
根據“在容器內開發”的“已知限制”......
本地代理設置不會在容器內重用,這可能會阻止擴展工作,除非配置了適當的代理信息(例如具有適當代理信息的全局 HTTP_PROXY 或 HTTPS_PROXY 環境變量)。
我可以通過在 'devcontainer.json': "--net=host", "--env=https_proxy=(your_proxy_host:port)"
中附加到runArgs
來設置代理環境變量。
或者,如果代理不需要主機訪問,您可以將 append 設置為“.devcontainer/Dockerfile”:
ENV https_proxy=(your_proxy_host:port)
從您的應用程序進行網絡訪問(不僅僅是 vscode 擴展)也可能需要以這種方式啟用代理訪問。
在公司代理后面工作時,我在安裝擴展程序時也遇到了問題。 解決方案是讓容器訪問代理服務器並設置 HTTP proxy strict SSL:
"settings": {
"http.proxy": "(your_proxy_host:port)",
"http.proxyStrictSSL": false
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.