forked from tangled.org/core
this repo has no description

docker: update to unified binary deployment

hanna 67887f7c 325bca2e

Changed files
+8 -21
docker
rootfs
etc
s6-overlay
s6-rc.d
knotserver
run
ssh
sshd_config.d
+6 -19
docker/Dockerfile
···
FROM docker.io/golang:1.24-alpine3.21 AS build
ENV CGO_ENABLED=1
+
WORKDIR /usr/src/app
+
COPY go.mod go.sum ./
RUN apk add --no-cache gcc musl-dev
-
-
WORKDIR /usr/src/app
-
-
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -v \
-
-o /usr/local/bin/knotserver \
+
-o /usr/local/bin/knot \
-ldflags='-s -w -extldflags "-static"' \
-
./cmd/knotserver && \
-
go build -v \
-
-o /usr/local/bin/keyfetch \
-
./cmd/keyfetch && \
-
go build -v \
-
-o /usr/local/bin/repoguard \
-
./cmd/repoguard
+
./cmd/knot
FROM docker.io/alpine:3.21
···
head -c 32 /dev/random | base64 | tr -dc 'a-zA-Z0-9' | passwd git --stdin && \
mkdir /app && mkdir /home/git/repositories
-
COPY --from=build /usr/local/bin/knotserver /usr/local/bin
-
COPY --from=build /usr/local/bin/keyfetch /usr/local/libexec/tangled-keyfetch
-
COPY --from=build /usr/local/bin/repoguard /home/git/repoguard
+
COPY --from=build /usr/local/bin/knot /usr/local/bin
COPY docker/rootfs/ .
-
RUN chown root:root /usr/local/libexec/tangled-keyfetch && \
-
chmod 755 /usr/local/libexec/tangled-keyfetch
-
EXPOSE 22
EXPOSE 5555
-
ENTRYPOINT ["/bin/sh", "-c", "chown git:git /home/git/repoguard && chown git:git /app && chown git:git /home/git/repositories && /init"]
+
ENTRYPOINT ["/bin/sh", "-c", "chown git:git /app && chown git:git /home/git/repositories && /init"]
+1 -1
docker/rootfs/etc/s6-overlay/s6-rc.d/knotserver/run
···
#!/command/with-contenv ash
-
exec s6-setuidgid git /usr/local/bin/knotserver
+
exec s6-setuidgid git /usr/local/bin/knot server
+1 -1
docker/rootfs/etc/ssh/sshd_config.d/tangled_sshd.conf
···
PasswordAuthentication no
Match User git
-
AuthorizedKeysCommand /usr/local/libexec/tangled-keyfetch -git-dir /home/git/repositories
+
AuthorizedKeysCommand /usr/local/bin/knot keys -o authorized-keys
AuthorizedKeysCommandUser nobody