ARG GOLANG_IMAGE=golang:1.26.1-alpine ARG DEBIAN_IMAGE=debian:bookworm-slim FROM ${GOLANG_IMAGE} AS builder WORKDIR /app/backend RUN apk add --no-cache git ca-certificates tzdata COPY backend/go.mod backend/go.sum ./ RUN go mod download COPY backend/ ./ RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /app/lsworker ./cmd/lsworker FROM ${DEBIAN_IMAGE} RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ gosu \ iproute2 \ iptables \ redsocks \ tzdata \ && rm -rf /var/lib/apt/lists/* RUN groupadd -g 1000 sub2api && \ useradd -u 1000 -g sub2api -m -s /bin/sh sub2api WORKDIR /app COPY --from=builder /app/lsworker /app/lsworker COPY deploy/ls-bin/language_server_linux_* /tmp/ls-bin/ COPY deploy/ls-bin/cert.pem /app/ls/extensions/antigravity/dist/languageServer/ ARG TARGETARCH RUN mkdir -p /app/ls/extensions/antigravity/bin /run/lsworker && \ if [ "${TARGETARCH:-amd64}" = "arm64" ]; then \ cp /tmp/ls-bin/language_server_linux_arm /app/ls/extensions/antigravity/bin/language_server_linux_arm; \ else \ cp /tmp/ls-bin/language_server_linux_x64 /app/ls/extensions/antigravity/bin/language_server_linux_x64; \ fi && \ chmod +x /app/lsworker /app/ls/extensions/antigravity/bin/language_server_linux_* && \ chown -R sub2api:sub2api /app /run/lsworker && \ rm -rf /tmp/ls-bin COPY deploy/lsworker-entrypoint.sh /app/lsworker-entrypoint.sh RUN chmod +x /app/lsworker-entrypoint.sh EXPOSE 18081 ENTRYPOINT ["/app/lsworker-entrypoint.sh"]