From e2bb58a0345e2dff59cb53cb7a19b16d00f247e8 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Wed, 19 Feb 2025 12:25:44 +0800 Subject: [PATCH] feat(docker): Add Docker configuration for clangd-based C/C++ LSP servers --- docker/compose.yml | 20 ++++++++++++++++++++ docker/lsp/clangd/Dockerfile | 25 +++++++++++++++++++++++++ docker/lsp/clangd/servers.yml | 5 +++++ 3 files changed, 50 insertions(+) create mode 100644 docker/compose.yml create mode 100644 docker/lsp/clangd/Dockerfile create mode 100644 docker/lsp/clangd/servers.yml diff --git a/docker/compose.yml b/docker/compose.yml new file mode 100644 index 0000000..2554b8f --- /dev/null +++ b/docker/compose.yml @@ -0,0 +1,20 @@ +services: + lsp-c: + image: clangd:latest + build: + context: ./lsp/clangd + dockerfile: Dockerfile + container_name: lsp-c + restart: always + ports: + - "4594:3000" + + lsp-cpp: + image: clangd:latest + build: + context: ./lsp/clangd + dockerfile: Dockerfile + container_name: lsp-cpp + restart: always + ports: + - "4595:3000" diff --git a/docker/lsp/clangd/Dockerfile b/docker/lsp/clangd/Dockerfile new file mode 100644 index 0000000..4a24fc3 --- /dev/null +++ b/docker/lsp/clangd/Dockerfile @@ -0,0 +1,25 @@ +FROM alpine:latest as builder + +RUN apk add --no-cache git npm + +WORKDIR /app + +RUN git clone https://github.com/wylieconlon/jsonrpc-ws-proxy.git + +WORKDIR /app/jsonrpc-ws-proxy + +COPY servers.yml . + +RUN npm install && npm run prepare + +FROM alpine:latest + +RUN apk add --no-cache build-base clang-extra-tools nodejs + +WORKDIR /app/jsonrpc-ws-proxy + +COPY --from=builder /app/jsonrpc-ws-proxy . + +EXPOSE 3000 + +CMD ["node", "dist/server.js", "--port", "3000", "--languageServers", "servers.yml"] diff --git a/docker/lsp/clangd/servers.yml b/docker/lsp/clangd/servers.yml new file mode 100644 index 0000000..dc5e385 --- /dev/null +++ b/docker/lsp/clangd/servers.yml @@ -0,0 +1,5 @@ +langservers: + clangd: + - /usr/bin/clangd + - --log=verbose + - --background-index