docker: Fix missing /tmp directory

This caused issues in various areas where Pat (and/or dependencies)
relied on os.TempDir() store temporary files. E.g. when running `pat
updateforms`.

We can't do this inside the build container, as there is no way of
specifying file permissions when doing COPY --from. The solution
(inspired by the distroless images) is to ADD a pre-prepared tarball
with the correct file permissions.

`mkdir -m 01777 tmp && tar --owner=root --group=root -cf tmp.tar tmp`
This commit is contained in:
Martin Hebnes Pedersen 2024-02-19 20:13:20 +01:00
parent 9fe80af692
commit b518889437
2 changed files with 2 additions and 0 deletions

BIN
.docker/tmp.tar Normal file

Binary file not shown.

View file

@ -10,6 +10,8 @@ FROM scratch
LABEL org.opencontainers.image.source=https://github.com/la5nta/pat
LABEL org.opencontainers.image.description="Pat - A portable Winlink client for amateur radio email"
LABEL org.opencontainers.image.licenses=MIT
# Make sure we have a /tmp directory with the correct permissions (01777)
ADD .docker/tmp.tar /
COPY --from=builder /etc/ssl/certs /etc/ssl/certs
COPY --from=builder /src/pat /bin/pat
USER 65534:65534