visual-studio-code - 如何将实验语言服务器添加到 vscode 的 devcontainer?
问题描述
我正在为 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 提供商,您需要进行调整,但它们都应该是简单的更改。
最新版本可在以下链接中找到:
推荐阅读
- javascript - 提交时无法从 HTML 表单获取 jQuery 中的值
- javascript - 将 JavaScript 数字渲染为solidity ERC20 小数
- html - 一旦 HTML 文件托管在服务器上,我的 CSS 和图像就不会加载。为什么?
- javascript - Is it possible in javascript to pluck array based on it's contents?
- javascript - ES6 传递函数作为参数示例
- javascript - 在浏览器中使用 axios 处理重定向
- java - 方法/参数名称会影响堆栈上占用多少内存吗?
- rust - Rocket.rs 按子域路由
- python - 用于检索 Flask Restful 上所有数据的资源可选参数
- r - 如何使用 R 中的 geom_plot 改变数据点的颜色?