7

我无法使用“远程 - 容器”在开发容器中安装扩展。我不知道这是错误,我的配置不正确,还是预期的行为。下面是我当前的配置,这两个文件都位于项目的根文件夹中。

码头工人-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是我想要安装在开发容器中的扩展列表。任何帮助表示赞赏!

4

1 回答 1

7

根据Visual Studio Code 文档,这两个文件需要位于工作区根目录中的一个目录中。 .devcontainer

在公司代理后面工作时,我仍然遇到安装扩展的问题。解决方案是让容器访问代理服务器:

如果您authenticating在本地机器上使用像 Cntlm 这样的代理,请将其配置为侦听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

如果您不使用本地代理,而是使用网络内部的远程代理,则无论容器的网络配置(主机或默认)如何,都可以执行后者。

于 2020-05-07T15:36:00.803 回答