diff --git a/Docker/README.md b/Docker/README.md new file mode 100644 index 0000000..2ad4e89 --- /dev/null +++ b/Docker/README.md @@ -0,0 +1,64 @@ +# LSP Dockerfiles + +**Dockerfiles for Language Server Protocol (LSP) servers** - Containerized language servers for use with IDEs. + +## What is this? + +This sub repository provides **production-ready Docker containers** for 25+ Language Server Protocol (LSP) servers. + +### **How it works:** +1. **Docker containers** provide isolated, reproducible LSP server environments +3. **Zero local installation** - no need to install language servers on your system + +Perfect for: +- **Consistent development environments** across teams and machines +- **Clean system** - no language server pollution on your host +- **Reproducible builds** with pinned package versions +- **Easy switching** between language server versions + +##️ Supported Language Servers + +| Language | Server | Container | Version | +|----------|--------|-----------|---------| +| **Bash** | bash-language-server | `lspcontainers/bash-language-server` | ![Version](https://img.shields.io/badge/version-5.6.0-blue) | +| **C/C++** | clangd | `lspcontainers/clangd-language-server` | ![Version](https://img.shields.io/badge/version-20.1.8-blue) | +| **C#** | omnisharp | `lspcontainers/omnisharp-language-server` | ![Version](https://img.shields.io/badge/version-1.39.12-blue) | +| **CSS/SCSS/Less** | vscode-css-languageserver | `lspcontainers/css-language-server` | ![Version](https://img.shields.io/badge/version-4.10.0-blue) | +| **Deno** | deno-lsp | `lspcontainers/deno-language-server` | ![Version](https://img.shields.io/badge/version-2.4.2-blue) | +| **Docker** | dockerfile-ls | `lspcontainers/docker-language-server` | ![Version](https://img.shields.io/badge/version-0.14.0-blue) | +| **ESLint** | eslint-languageserver | `lspcontainers/eslint-language-server` | ![Version](https://img.shields.io/badge/version-latest-blue) | +| **Go** | gopls | `lspcontainers/gopls` | ![Version](https://img.shields.io/badge/version-0.19.1-blue) | +| **GraphQL** | graphql-language-service | `lspcontainers/graphql-language-server` | ![Version](https://img.shields.io/badge/version-3.5.0-blue) | +| **HTML** | html-languageserver | `lspcontainers/html-language-server` | ![Version](https://img.shields.io/badge/version-1.4.0-blue) | +| **JavaScript/TypeScript** | typescript-language-server | `lspcontainers/typescript-language-server` | ![Version](https://img.shields.io/badge/version-4.3.4-blue) | +| **JSON** | vscode-json-languageserver | `lspcontainers/json-language-server` | ![Version](https://img.shields.io/badge/version-4.10.0-blue) | +| **Lua** | lua-language-server | `lspcontainers/lua-language-server` | ![Version](https://img.shields.io/badge/version-3.14.0-blue) | +| **PHP** | intelephense | `lspcontainers/php-language-server` | ![Version](https://img.shields.io/badge/version-1.14.4-blue) | +| **PowerShell** | powershell-es | `lspcontainers/powershell-language-server` | ![Version](https://img.shields.io/badge/version-4.3.0-blue) | +| **Prisma** | prisma-language-server | `lspcontainers/prisma-language-server` | ![Version](https://img.shields.io/badge/version-6.9.1-blue) | +| **Python** | pylsp | `lspcontainers/python-lsp-server` | ![Version](https://img.shields.io/badge/version-1.12.0-blue) | +| **Python** | pyright | `lspcontainers/pyright-language-server` | ![Version](https://img.shields.io/badge/version-1.1.377-blue) | +| **Ruby** | solargraph | `lspcontainers/ruby-language-server` | ![Version](https://img.shields.io/badge/version-0.55.1-blue) | +| **Rust** | rust-analyzer | `lspcontainers/rust-analyzer` | ![Version](https://img.shields.io/badge/version-1.88.0-blue) | +| **Svelte** | svelte-language-server | `lspcontainers/svelte-language-server` | ![Version](https://img.shields.io/badge/version-0.17.16-blue) | +| **Tailwind CSS** | tailwindcss-language-server | `lspcontainers/tailwindcss-language-server` | ![Version](https://img.shields.io/badge/version-0.14.25-blue) | +| **Terraform** | terraform-ls | `lspcontainers/terraform-ls` | ![Version](https://img.shields.io/badge/version-0.36.5-blue) | +| **Vue** | volar | `lspcontainers/volar-language-server` | ![Version](https://img.shields.io/badge/version-1.8.11-blue) | +| **Vue** | vuels (legacy) | `lspcontainers/vue-language-server` | ![Version](https://img.shields.io/badge/version-0.8.5-blue) | +| **XML** | lemminx | `lspcontainers/xml-language-server` | ![Version](https://img.shields.io/badge/version-0.27.0-blue) | +| **YAML** | yaml-language-server | `lspcontainers/yaml-language-server` | ![Version](https://img.shields.io/badge/version-1.18.0-blue) | + + +##️ Architecture & Design + +### **Reproducible Builds** +All containers use **pinned package versions** for complete reproducibility: +- **Base images**: Specific Alpine/Debian versions +- **System packages**: Exact apk/apt package versions +- **Language packages**: Pinned npm, gem, pip, go module versions + +### **Minimal & Secure** +- **Alpine Linux base** for minimal attack surface +- **Multi-stage builds** where applicable +- **Non-root users** for security +- **Distroless principles** - only essential components diff --git a/Docker/servers/bashls/Dockerfile b/Docker/servers/bashls/Dockerfile new file mode 100644 index 0000000..21e234c --- /dev/null +++ b/Docker/servers/bashls/Dockerfile @@ -0,0 +1,17 @@ +FROM alpine:3.22.1 + +ARG VERSION=5.6.0 +LABEL version="${VERSION}" + +# using npm breaks shellcheck download of its binary from api.github.com +# running shellcheck -V forces it to download its binary during build +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + shellcheck=0.10.0-r2 \ + yarn=1.22.22-r1 \ + && yarn global add \ + shellcheck@3.1.0 \ + bash-language-server@${VERSION} \ + && shellcheck -V + +CMD [ "bash-language-server", "start" ] diff --git a/Docker/servers/clangd/Dockerfile b/Docker/servers/clangd/Dockerfile new file mode 100644 index 0000000..4745f65 --- /dev/null +++ b/Docker/servers/clangd/Dockerfile @@ -0,0 +1,10 @@ +FROM alpine:3.22.1 + +ARG VERSION=20.1.8 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + build-base=0.5-r3 \ + clang-extra-tools=${VERSION}-r0 + +CMD [ "clangd", "--background-index" ] diff --git a/Docker/servers/denols/Dockerfile b/Docker/servers/denols/Dockerfile new file mode 100644 index 0000000..d8922e7 --- /dev/null +++ b/Docker/servers/denols/Dockerfile @@ -0,0 +1,6 @@ +FROM denoland/deno:alpine-2.4.2 + +ARG VERSION=2.4.2 +LABEL version="${VERSION}" + +CMD [ "lsp" ] diff --git a/Docker/servers/dockerls/Dockerfile b/Docker/servers/dockerls/Dockerfile new file mode 100644 index 0000000..c21d9d8 --- /dev/null +++ b/Docker/servers/dockerls/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=0.14.0 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + dockerfile-language-server-nodejs@${VERSION} + +CMD [ "docker-langserver", "--stdio" ] diff --git a/Docker/servers/eslintls/Dockerfile b/Docker/servers/eslintls/Dockerfile new file mode 100644 index 0000000..efc5485 --- /dev/null +++ b/Docker/servers/eslintls/Dockerfile @@ -0,0 +1,26 @@ +FROM alpine:3.22.1 + +ARG VERSION=latest +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + git=2.49.1-r0 \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 + +WORKDIR /tmp + +RUN git clone --depth=1 https://github.com/Microsoft/vscode-eslint + +WORKDIR /tmp/vscode-eslint + +RUN npm install && npm run compile + +WORKDIR /tmp/vscode-eslint/server + +RUN npm install --production \ + && mv out /root/vscode-eslint-language-server \ + && mv package.json node_modules /root/vscode-eslint-language-server/ \ + && rm -rf /tmp/vscode-eslint + +CMD [ "/usr/bin/node", "/root/vscode-eslint-language-server/eslintServer.js", "--stdio" ] diff --git a/Docker/servers/gopls/Dockerfile b/Docker/servers/gopls/Dockerfile new file mode 100644 index 0000000..57116ca --- /dev/null +++ b/Docker/servers/gopls/Dockerfile @@ -0,0 +1,39 @@ +FROM alpine:3.22.1 + +ARG VERSION=0.19.1 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + bash=5.2.37-r0 \ + git=2.49.1-r0 \ + go=1.24.4-r0 \ + shadow=4.17.3-r0 \ + sudo=1.9.17_p1-r0 + +ENV GO111MODULE="on" + +RUN userdel guest \ + && groupdel users \ + && addgroup lspcontainers \ + && adduser -G lspcontainers -h /home/lspcontainers -D lspcontainers \ + && echo '%lspcontainers ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/lspcontainers + +USER lspcontainers + +ENV GOBIN="/home/lspcontainers/.bin" +ENV PATH="${GOBIN}:$PATH" + +RUN go install github.com/uudashr/gopkgs/v2/cmd/gopkgs@v2.1.2 \ + && go install github.com/ramya-rao-a/go-outline@9736a4bde949f321d201e5eaa5ae2bcde011bf00 \ + && go install github.com/cweill/gotests/gotests@v1.6.0 \ + && go install github.com/fatih/gomodifytags@v1.17.0 \ + && go install github.com/josharian/impl@v1.4.0 \ + && go install github.com/haya14busa/goplay/cmd/goplay@v1.0.0 \ + && go install github.com/go-delve/delve/cmd/dlv@v1.25.0 \ + && go install honnef.co/go/tools/cmd/staticcheck@2025.1.1 \ + && go install golang.org/x/tools/gopls@v${VERSION} + +COPY --chown=lspcontainers:lspcontainers \ + docker_entrypoint.sh /home/lspcontainers/docker_entrypoint.sh + +CMD [ "/home/lspcontainers/docker_entrypoint.sh" ] diff --git a/Docker/servers/gopls/docker_entrypoint.sh b/Docker/servers/gopls/docker_entrypoint.sh new file mode 100755 index 0000000..4cc3f89 --- /dev/null +++ b/Docker/servers/gopls/docker_entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eu pipefail + +LSPCONTAINERS_GROUP=$(id -g) +LSPCONTAINERS_USER=$(id -u) + +sudo usermod -u $LSPCONTAINERS_USER lspcontainers \ + && sudo groupmod -g $LSPCONTAINERS_GROUP lspcontainers || true \ + && exec "gopls" diff --git a/Docker/servers/graphql-lsp/Dockerfile b/Docker/servers/graphql-lsp/Dockerfile new file mode 100644 index 0000000..cddf775 --- /dev/null +++ b/Docker/servers/graphql-lsp/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=3.5.0 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + graphql-language-service-cli@${VERSION} + +CMD [ "graphql-lsp", "server" , "-m", "stream" ] diff --git a/Docker/servers/html/Dockerfile b/Docker/servers/html/Dockerfile new file mode 100644 index 0000000..995e2aa --- /dev/null +++ b/Docker/servers/html/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=1.4.0 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + vscode-html-languageserver-bin@${VERSION} + +CMD [ "html-languageserver", "--stdio" ] diff --git a/Docker/servers/intelephense/Dockerfile b/Docker/servers/intelephense/Dockerfile new file mode 100644 index 0000000..98c89be --- /dev/null +++ b/Docker/servers/intelephense/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=1.14.4 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + intelephense@${VERSION} + +CMD [ "intelephense", "--stdio" ] diff --git a/Docker/servers/jsonls/Dockerfile b/Docker/servers/jsonls/Dockerfile new file mode 100644 index 0000000..c03af3d --- /dev/null +++ b/Docker/servers/jsonls/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=4.10.0 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + vscode-langservers-extracted@${VERSION} + +CMD [ "vscode-json-language-server", "--stdio" ] diff --git a/Docker/servers/lemminx/Dockerfile b/Docker/servers/lemminx/Dockerfile new file mode 100644 index 0000000..3b7036e --- /dev/null +++ b/Docker/servers/lemminx/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:12.11-slim +# The binary requires gnu-libc and will not work on alpine + +ARG VERSION=0.27.0 +LABEL version="${VERSION}" + +WORKDIR /tmp + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update -y \ +&& apt-get install --yes --no-install-recommends -o APT::Install-Suggests=0 -o APT::Install-Recommends=0 \ + curl=7.88.1-10+deb12u12 \ + ca-certificates=20230311+deb12u1 \ + unzip=6.0-28 \ +&& update-ca-certificates \ +&& curl -sL -O https://github.com/redhat-developer/vscode-xml/releases/download/${VERSION}/lemminx-linux.zip \ +&& unzip lemminx-linux.zip \ +&& rm -rf lemminx-linux.zip \ +&& apt-get remove curl unzip -y \ +&& apt-get autoremove -y \ +&& apt-get clean -y \ +&& rm -rf /var/lib/apt/lists \ +&& mv lemminx-linux /root/ + +CMD [ "/root/lemminx-linux", "--stdio" ] diff --git a/Docker/servers/omnisharp/Dockerfile b/Docker/servers/omnisharp/Dockerfile new file mode 100644 index 0000000..d0d844b --- /dev/null +++ b/Docker/servers/omnisharp/Dockerfile @@ -0,0 +1,18 @@ +FROM debian:12.11-slim + +ARG VERSION=1.39.12 +LABEL version="${VERSION}" + +WORKDIR /tmp + +RUN apt-get update \ + && apt-get install curl=7.88.1-10+deb12u12 --no-install-recommends --yes \ + && apt-get reinstall ca-certificates=20230311+deb12u1 --yes \ + && update-ca-certificates \ + && curl -L -O https://github.com/OmniSharp/omnisharp-roslyn/releases/download/v${VERSION}/omnisharp-linux-x64.tar.gz \ + && tar -xf omnisharp-linux-x64.tar.gz -C /usr \ + && rm omnisharp-linux-x64.tar.gz \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +CMD [ "/usr/run", "--languageserver" ] diff --git a/Docker/servers/powershell_es/Dockerfile b/Docker/servers/powershell_es/Dockerfile new file mode 100644 index 0000000..1d36697 --- /dev/null +++ b/Docker/servers/powershell_es/Dockerfile @@ -0,0 +1,15 @@ +FROM mcr.microsoft.com/powershell:7.5-alpine-3.20 + +ARG VERSION=4.3.0 +LABEL version="${VERSION}" + +WORKDIR /srv + +RUN apk add --no-cache \ + curl=8.12.1-r0 \ + unzip=6.0-r14 \ + && curl -L -o PowerShellEditorServices.zip https://github.com/PowerShell/PowerShellEditorServices/releases/download/v${VERSION}/PowerShellEditorServices.zip \ + && unzip PowerShellEditorServices.zip \ + && rm -fr PowerShellEditorServices.zip + +CMD ["/usr/bin/pwsh", "-NoLogo", "-NoProfile", "-Command", "/srv/PowerShellEditorServices/Start-EditorServices.ps1 -BundledModulesPath /PowerShellEditorServices -LogPath /PowerShellEditorServices/logs.log -SessionDetailsPath /PowerShellEditorServices/session.json -FeatureFlags @() -AdditionalModules @() -HostName 'lspcontainers' -HostProfileId 'lspcontainers' -HostVersion 1.0.0 -Stdio -LogLevel Normal"] diff --git a/Docker/servers/prisma/Dockerfile b/Docker/servers/prisma/Dockerfile new file mode 100644 index 0000000..7a66cad --- /dev/null +++ b/Docker/servers/prisma/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=6.9.1 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + @prisma/language-server@${VERSION} + +CMD [ "prisma-language-server", "--stdio" ] diff --git a/Docker/servers/pylsp/Dockerfile b/Docker/servers/pylsp/Dockerfile new file mode 100644 index 0000000..5b9e338 --- /dev/null +++ b/Docker/servers/pylsp/Dockerfile @@ -0,0 +1,28 @@ +FROM alpine:3.22.1 as build + +ARG VERSION=1.12.0 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + build-base=0.5-r3 \ + python3=3.12.11-r0 \ + python3-dev=3.12.11-r0 \ + py3-pip=25.1.1-r0 \ + && python3 -m venv /venv + +WORKDIR /venv + +RUN /venv/bin/pip install "python-lsp-server[all]==${VERSION}" + + +FROM alpine:3.22.1 + +RUN apk add --no-cache python3=3.12.11-r0 py3-pip=25.1.1-r0 + +WORKDIR /venv + +COPY --from=build /venv . + +ENV PATH="/venv/bin:$PATH" + +CMD [ "/venv/bin/pylsp" ] diff --git a/Docker/servers/pyright/Dockerfile b/Docker/servers/pyright/Dockerfile new file mode 100644 index 0000000..455f79b --- /dev/null +++ b/Docker/servers/pyright/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=1.1.377 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + pyright@${VERSION} + +CMD [ "pyright-langserver", "--stdio" ] diff --git a/Docker/servers/rust_analyzer/Dockerfile b/Docker/servers/rust_analyzer/Dockerfile new file mode 100644 index 0000000..4ce6f2b --- /dev/null +++ b/Docker/servers/rust_analyzer/Dockerfile @@ -0,0 +1,9 @@ +ARG VERSION=1.88.0 + +FROM rust:${VERSION}-alpine3.22 + +LABEL version="${VERSION}" + +RUN rustup component add rust-analyzer + +CMD [ "rust-analyzer" ] diff --git a/Docker/servers/solargraph/Dockerfile b/Docker/servers/solargraph/Dockerfile new file mode 100644 index 0000000..5599ece --- /dev/null +++ b/Docker/servers/solargraph/Dockerfile @@ -0,0 +1,17 @@ +FROM alpine:3.22.1 + +ARG VERSION=0.55.1 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + g++=14.2.0-r6 \ + gcc=14.2.0-r6 \ + git=2.49.1-r0 \ + make=4.4.1-r3 \ + ruby=3.4.4-r0 \ + ruby-dev=3.4.4-r0 \ + zlib-dev=1.3.1-r2 \ + && gem install \ + solargraph -v ${VERSION} + +CMD [ "/usr/local/bundle/bin/solargraph", "stdio" ] diff --git a/Docker/servers/sumneko_lua/Dockerfile b/Docker/servers/sumneko_lua/Dockerfile new file mode 100644 index 0000000..5f2a50b --- /dev/null +++ b/Docker/servers/sumneko_lua/Dockerfile @@ -0,0 +1,8 @@ +FROM alpine:3.22.1 + +ARG VERSION=3.14.0 +LABEL version="${VERSION}" + +RUN apk add --update --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ lua-language-server=${VERSION}-r0 + +CMD [ "lua-language-server" ] diff --git a/Docker/servers/svelteserver/Dockerfile b/Docker/servers/svelteserver/Dockerfile new file mode 100644 index 0000000..a06ef36 --- /dev/null +++ b/Docker/servers/svelteserver/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=0.17.16 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + svelte-language-server@${VERSION} + +CMD [ "svelteserver", "--stdio" ] diff --git a/Docker/servers/tailwindcss/Dockerfile b/Docker/servers/tailwindcss/Dockerfile new file mode 100644 index 0000000..8524971 --- /dev/null +++ b/Docker/servers/tailwindcss/Dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.22.1 + +ARG VERSION=0.14.25 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + tailwindcss@4.1.11 \ + @tailwindcss/language-server@${VERSION} + +CMD ["tailwindcss-language-server", "--stdio"] diff --git a/Docker/servers/terraformls/Dockerfile b/Docker/servers/terraformls/Dockerfile new file mode 100644 index 0000000..e1ec355 --- /dev/null +++ b/Docker/servers/terraformls/Dockerfile @@ -0,0 +1,38 @@ +FROM alpine:3.22.1 AS build + +ARG VERSION=0.36.5 +ARG TF_LS_VERSION=${VERSION} +ARG TF_VERSION=1.12.2 +LABEL version="${VERSION}" + +RUN apk add --no-cache --virtual \ + build-deps \ + curl=8.14.1-r1 \ + gnupg=2.4.7-r0 + +WORKDIR /build + +RUN curl --proto '=https' \ + --tlsv1.2 -fsSLO https://releases.hashicorp.com/terraform-ls/${TF_LS_VERSION}/terraform-ls_${TF_LS_VERSION}_linux_amd64.zip \ + --next -fsSLO https://releases.hashicorp.com/terraform-ls/${TF_LS_VERSION}/terraform-ls_${TF_LS_VERSION}_SHA256SUMS \ + --next -fsSLO https://releases.hashicorp.com/terraform-ls/${TF_LS_VERSION}/terraform-ls_${TF_LS_VERSION}_SHA256SUMS.sig \ + --next -fsSLO https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip \ + --next -fsSLO https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_SHA256SUMS \ + --next -fsSLO https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_SHA256SUMS.sig \ + --next -s -o hashicorp.asc https://keybase.io/hashicorp/pgp_keys.asc \ + && gpg --import ./hashicorp.asc \ + && grep terraform-ls_${TF_LS_VERSION}_linux_amd64.zip terraform-ls_${TF_LS_VERSION}_SHA256SUMS > SHA256SUMS \ + && grep terraform_${TF_VERSION}_linux_amd64.zip terraform_${TF_VERSION}_SHA256SUMS > TERRAFORM_SHA256SUMS \ + && gpg --verify terraform-ls_${TF_LS_VERSION}_SHA256SUMS.sig terraform-ls_${TF_LS_VERSION}_SHA256SUMS \ + && gpg --verify terraform_${TF_VERSION}_SHA256SUMS.sig terraform_${TF_VERSION}_SHA256SUMS \ + && sha256sum -c SHA256SUMS \ + && sha256sum -c TERRAFORM_SHA256SUMS \ + && unzip -o terraform-ls_${TF_LS_VERSION}_linux_amd64.zip \ + && unzip -o terraform_${TF_VERSION}_linux_amd64.zip + +FROM alpine:3.22.1 + +COPY --from=build /build/terraform-ls /usr/bin/terraform-ls +COPY --from=build /build/terraform /usr/bin/terraform + +CMD [ "/usr/bin/terraform-ls", "serve" ] diff --git a/Docker/servers/tsserver/Dockerfile b/Docker/servers/tsserver/Dockerfile new file mode 100644 index 0000000..35bc380 --- /dev/null +++ b/Docker/servers/tsserver/Dockerfile @@ -0,0 +1,14 @@ +FROM alpine:3.22.1 + +ARG VERSION=4.3.4 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + typescript-language-server@${VERSION} \ + @vue/typescript-plugin@2.1.6 \ + typescript@5.5.4 + +CMD [ "typescript-language-server", "--stdio" ] diff --git a/Docker/servers/volar/Dockerfile b/Docker/servers/volar/Dockerfile new file mode 100644 index 0000000..6d45f14 --- /dev/null +++ b/Docker/servers/volar/Dockerfile @@ -0,0 +1,9 @@ +FROM alpine:3.22.1 + +ARG VERSION=1.8.11 +LABEL version="${VERSION}" + +RUN apk add --no-cache nodejs=22.16.0-r2 npm=11.3.0-r0 && \ + npm install -g @vue/language-server@${VERSION} + +CMD [ "vue-language-server", "--stdio" ] diff --git a/Docker/servers/vuels/Dockerfile b/Docker/servers/vuels/Dockerfile new file mode 100644 index 0000000..6f42b34 --- /dev/null +++ b/Docker/servers/vuels/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=0.8.5 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + vls@${VERSION} + +CMD [ "vls", "--stdio" ] diff --git a/Docker/servers/yamlls/Dockerfile b/Docker/servers/yamlls/Dockerfile new file mode 100644 index 0000000..71b1310 --- /dev/null +++ b/Docker/servers/yamlls/Dockerfile @@ -0,0 +1,12 @@ +FROM alpine:3.22.1 + +ARG VERSION=1.18.0 +LABEL version="${VERSION}" + +RUN apk add --no-cache \ + nodejs=22.16.0-r2 \ + npm=11.3.0-r0 \ + && npm install -g \ + yaml-language-server@${VERSION} + +CMD [ "yaml-language-server", "--stdio" ]