From cfca7e634238928cfded04c267c9d23d3b477a68 Mon Sep 17 00:00:00 2001 From: Charles N Wyble Date: Wed, 21 Jan 2026 19:19:37 -0500 Subject: [PATCH] Add LSP Dockerfiles for bash, docker, and marksman - bash-language-server: Prebuilt npm package (190MB) - docker-language-server: Multi-stage Go build (49.2MB) - marksman: Debian with libicu72 for .NET runtime (144MB) - All configured for Crush via stdio communication --- dockerfiles/bash-language-server/Dockerfile | 13 +++----- dockerfiles/docker-language-server/Dockerfile | 32 +++++++++++++++++++ dockerfiles/marksman/Dockerfile | 14 ++++++++ 3 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 dockerfiles/docker-language-server/Dockerfile create mode 100644 dockerfiles/marksman/Dockerfile diff --git a/dockerfiles/bash-language-server/Dockerfile b/dockerfiles/bash-language-server/Dockerfile index cdda738..0a28799 100644 --- a/dockerfiles/bash-language-server/Dockerfile +++ b/dockerfiles/bash-language-server/Dockerfile @@ -2,12 +2,9 @@ FROM node:22-alpine WORKDIR /app -COPY package.json package-lock.json* ./ +# Install prebuilt bash-language-server from npm +RUN npm install -g bash-language-server -RUN npm ci - -COPY . . - -RUN npm run build - -CMD ["node", "dist/index.js"] +# Set entrypoint +ENTRYPOINT ["bash-language-server"] +CMD ["start"] diff --git a/dockerfiles/docker-language-server/Dockerfile b/dockerfiles/docker-language-server/Dockerfile new file mode 100644 index 0000000..e00bd07 --- /dev/null +++ b/dockerfiles/docker-language-server/Dockerfile @@ -0,0 +1,32 @@ +# syntax=docker/dockerfile:1 + +ARG GO_VERSION="1.25" +ARG ALPINE_VERSION="3.22" + +FROM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS builder + +WORKDIR /src + +# Copy go files +COPY go.mod go.sum ./ + +# Download dependencies +RUN go mod download + +# Copy source code +COPY . . + +# Build of binary +RUN CGO_ENABLED=0 GOOS=linux go build -o docker-language-server ./cmd/docker-language-server + +# Runtime stage +FROM alpine:${ALPINE_VERSION} + +WORKDIR /app + +# Copy binary from builder +COPY --from=builder /src/docker-language-server /usr/local/bin/ + +# Set entrypoint to run LSP server +ENTRYPOINT ["docker-language-server"] +CMD ["start", "--stdio"] diff --git a/dockerfiles/marksman/Dockerfile b/dockerfiles/marksman/Dockerfile new file mode 100644 index 0000000..3376faa --- /dev/null +++ b/dockerfiles/marksman/Dockerfile @@ -0,0 +1,14 @@ +FROM debian:bookworm-slim + +WORKDIR /app + +# Install dependencies (wget and icu-libs for marksman) +RUN apt-get update && apt-get install -y wget libicu72 && \ + wget -O /usr/local/bin/marksman \ + https://github.com/artempyanykh/marksman/releases/download/2025-12-13/marksman-linux-x64 \ + && chmod +x /usr/local/bin/marksman && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +# Set entrypoint to run LSP server +ENTRYPOINT ["marksman"] +CMD ["server"]