forked from
tangled.org/knot-docker
Community maintained Docker config for the spindle server
1from golang:1.24-alpine as builder
2env KNOT_REPO_SCAN_PATH=/home/git/repositories
3env CGO_ENABLED=1
4
5workdir /app
6run apk add git gcc musl-dev
7run git clone https://tangled.sh/@tangled.sh/core .
8run go build -o /usr/bin/knot -ldflags '-s -w -extldflags "-static"' ./cmd/knot
9
10from alpine:edge
11expose 5555
12expose 22
13
14label org.opencontainers.image.title='knot'
15label org.opencontainers.image.description='data server for tangled'
16label org.opencontainers.image.source='https://tangled.sh/@tangled.sh/knot-docker'
17label org.opencontainers.image.url='https://tangled.sh'
18label org.opencontainers.image.vendor='tangled.sh'
19label org.opencontainers.image.licenses='MIT'
20
21copy rootfs .
22run chmod -R 755 /etc/s6-overlay
23run apk add shadow s6-overlay execline openssl openssh git curl
24run useradd -s /bin/nologin -d /home/git git && openssl rand -hex 16 | passwd --stdin git
25run mkdir -p /home/git/repositories && chown -R git:git /home/git/repositories
26copy --from=builder /usr/bin/knot /usr/bin
27run mkdir /app && chown -R git:git /app
28
29healthcheck --interval=60s --timeout=30s --start-period=5s --retries=3 \
30 cmd curl -f http://localhost:5555 || exit 1
31
32entrypoint ["/init"]
33