fork of https://github.com/sourcegraph/zoekt
1# syntax=docker/dockerfile:1.7
2FROM golang:1.26.2-alpine AS builder
3
4RUN apk add --no-cache ca-certificates
5
6ENV CGO_ENABLED=0
7WORKDIR /src
8
9# Cache dependency resolution separately from source changes.
10COPY go.mod go.sum ./
11RUN --mount=type=cache,target=/go/pkg/mod \
12 go mod download
13
14COPY . .
15ARG VERSION=dev
16RUN --mount=type=cache,target=/go/pkg/mod \
17 --mount=type=cache,target=/root/.cache/go-build \
18 mkdir -p /out && \
19 go build \
20 -trimpath \
21 -ldflags "-X github.com/sourcegraph/zoekt.Version=$VERSION" \
22 -o /out/ \
23 ./cmd/...
24
25FROM alpine:3
26
27RUN apk add --no-cache git ca-certificates bind-tools tini jansson wget
28
29COPY --chmod=755 install-ctags-alpine.sh /usr/local/bin/install-ctags-alpine.sh
30RUN /usr/local/bin/install-ctags-alpine.sh && rm /usr/local/bin/install-ctags-alpine.sh
31
32RUN addgroup -S zoekt && \
33 adduser -S -G zoekt -h /home/zoekt zoekt && \
34 mkdir -p /data/index /home/zoekt && \
35 chown -R zoekt:zoekt /data /home/zoekt
36
37COPY --from=builder /out/ /usr/local/bin/
38
39USER zoekt
40WORKDIR /home/zoekt
41
42ENV DATA_DIR=/data/index
43
44ENTRYPOINT ["/sbin/tini", "--"]
45CMD ["zoekt-webserver", "-index", "/data/index", "-pprof", "-rpc"]