簡體   English   中英

VSCode 遠程容器 - 未使用 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_proxyhttps_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 擴展)也可能需要以這種方式啟用代理訪問。

另請參閱:如何將環境變量傳遞給 Docker 容器?

在公司代理后面工作時,我在安裝擴展程序時也遇到了問題。 解決方案是讓容器訪問代理服務器並設置 HTTP proxy strict SSL:

"settings": {
    "http.proxy": "(your_proxy_host:port)",
    "http.proxyStrictSSL": false
},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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