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 && \
31 rm /usr/local/bin/install-ctags-alpine.sh \
32 /usr/local/bin/universal-optscript
33
34RUN addgroup -S zoekt && \
35 adduser -S -G zoekt -h /home/zoekt zoekt && \
36 mkdir -p /data/index /home/zoekt && \
37 chown -R zoekt:zoekt /data /home/zoekt
38
39COPY --from=builder /out/ /usr/local/bin/
40
41USER zoekt
42WORKDIR /home/zoekt
43
44ENV DATA_DIR=/data/index
45
46ENTRYPOINT ["/sbin/tini", "--"]
47CMD ["zoekt-webserver", "-index", "/data/index", "-pprof", "-rpc"]