visual-studio-code - 如何将实验语言服务器添加到 vscode 的开发容器中?

标签 visual-studio-code

我正在为 Windows 上的 VSCode 中的 terraform 工作做一个非常基本的 devcontainer。每次我启动它或重建容器以供使用时,它都会提示我安装实验语言服务器,我最终会在其中选择最新的标签 (v0.0.9)。

我在默认 settings.json 文件中配置了以下设置

{
    "terraform.languageServer.enabled": true
}

我的 .devcontainer/devcontainer.json 是从 Azure terraform 容器中获取并最小化的。
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or the definition README at
// https://github.com/microsoft/vscode-dev-containers/tree/master/containers/docker-existing-dockerfile
{
    // See https://aka.ms/vscode-remote/devcontainer.json for format details.
    "name": "DevOps Projects IaC With Terraform",
    "context": "..",
    "dockerFile": "Dockerfile",
    "runArgs": [ 
        "-v", "${env:USERPROFILE}/.ssh:/root/.ssh-localhost:ro", 
        "-v", "${env:USERPROFILE}/.aws:/root/.aws:ro"
    ],

    "postCreateCommand": "mkdir -p ~/.ssh && cp -r ~/.ssh-localhost/* ~/.ssh && chmod 700 ~/.ssh && chmod 600 ~/.ssh/*",

    // Add the IDs of any extensions you want installed in the array below.
    "extensions": ["mauve.terraform"]
}

如何将实验语言服务器包含到我的构建/开发容器配置中?

最佳答案

为了我自己的目的,我一直试图找出这个问题的答案。我今天决定要弄清楚,我相信我可以使用它(安装 terraform、LSP 和 AWS 提供商)

# Terraform, LSP and AWS Provider
ENV TERRAFORM_VERSION=0.12.24
ENV TERRAFORM_LSP_VERSION=0.0.10
ENV TERRAFORM_AWS_PROVIDER_VERSION=2.59.0

RUN wget -c https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip \
    && unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip \
    && mv terraform /usr/local/bin \
    && wget -c https://releases.hashicorp.com/terraform-provider-aws/${TERRAFORM_AWS_PROVIDER_VERSION}/terraform-provider-aws_${TERRAFORM_AWS_PROVIDER_VERSION}_linux_amd64.zip \
    && unzip terraform-provider-aws_${TERRAFORM_AWS_PROVIDER_VERSION}_linux_amd64.zip \
    && mv terraform-provider-aws_v${TERRAFORM_AWS_PROVIDER_VERSION}* /usr/local/bin \
    && echo "provider \"aws\" {}" >> /usr/local/bin/providers.tf \
    && wget -c https://github.com/juliosueiras/terraform-lsp/releases/download/v${TERRAFORM_LSP_VERSION}/terraform-lsp_${TERRAFORM_LSP_VERSION}_linux_amd64.tar.gz -O - | tar -zx \
    && mv terraform-lsp /usr/local/bin \
    && rm terraform*.zip

因为我将它安装到/usr/local/bin 并且我正在创建一个 containerUser无法安装这些组件,我需要将以下内容添加到 settings我的 devcontainer.json 的部分
        "terraform.indexing": {
            "enabled": false
        },
        "terraform.languageServer": {
            "enabled": true,
            "installCommonProviders": false,
            "pathToBinary": "/usr/local/bin"
        },

显然,如果您想要其他提供商,或者将其安装在其他地方,或者不同版本的 terraform、LSP 或 AWS 提供商,则需要进行调整,但它们都应该是简单的更改。

最新版本可以在以下链接中找到:
  • Terraform
  • Terraform LSP
  • AWS Provider
  • Other Providers
  • 关于visual-studio-code - 如何将实验语言服务器添加到 vscode 的开发容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59904101/

    相关文章:

    docker - 使用 Google AI Platform Notebook 实例,如何从我的本地计算机通过 ssh 连接到 jupyterlab 容器?

    visual-studio-code - VSCode NPM Script Explorer 可以在运行脚本之前获取 .nvmrc 吗?

    visual-studio-code - 当 VSCode 设置为 Git 编辑器时中止交互式 rebase

    python - 如何配置 pylint/python 来检查 MicroPython 语法?

    visual-studio-code - 是否可以在 Visual Studio Code 中将文本切换为删除线文本?

    reactjs - React 文档的 VSCode 主题

    node.js - 错误 : Cannot find module, Nodemon 崩溃

    javascript - 如何使用 vscode 设置 jest typescripts 测试以在 Debug模式下运行

    c++ - 无法在 Visual Studio Code 中调试 C++ 代码

    javascript - 从导入的 js 对象文件返回到它在 Visual Studio Code 中被 CMD + 单击的文件