Files
kumomta/docker/kumod/Dockerfile.scratch
T
2024-03-01 13:42:39 -07:00

55 lines
1.8 KiB
Docker

FROM alpine:latest as builder
WORKDIR /work
RUN apk --no-cache add rust cargo g++ openssl openssl-dev clang \
ca-certificates bash linux-headers make clang-libclang \
rustfmt
RUN update-ca-certificates
ENV OPENSSL_STATIC=yes \
PKG_CONFIG_ALLOW_CROSS=true \
PKG_CONFIG_ALL_STATIC=true \
RUSTFLAGS="-C target-feature=-crt-static --cfg tokio_unstable"
COPY . .
RUN bash ./get-deps.sh
RUN adduser \
--disabled-password \
--gecos "" \
--home "/var/spool/kumod" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "1000" \
"kumod"
RUN --mount=type=ssh \
--mount=type=cache,target=/root/.cargo/registry \
--mount=type=cache,target=/root/.cargo/git \
--mount=type=cache,target=/work/target \
set -e ; \
make build BUILD_OPTS="--target x86_64-alpine-linux-musl --release" ; \
TRIPLE=x86_64-alpine-linux-musl/ ./assets/install.sh ; \
cp /opt/kumomta/share/minimal-init.lua /opt/kumomta/etc/policy/init.lua ; \
cp /opt/kumomta/share/minimal-tsa_init.lua /opt/kumomta/etc/policy/tsa_init.lua
FROM scratch
COPY --from=builder /etc/passwd /etc/passwd
COPY --from=builder /etc/group /etc/group
COPY --from=builder /etc/ssl/certs /etc/ssl/certs
WORKDIR /opt/kumomta/sbin
ENV PATH=/opt/kumomta/sbin:${PATH}
COPY --from=builder /opt/kumomta /opt/kumomta
COPY --from=builder --chown=kumod:kumod --chmod=2770 /var/log/kumomta /var/log/kumomta
COPY --from=builder --chown=kumod:kumod --chmod=2770 /var/spool/kumomta /var/spool/kumomta
COPY --from=builder /lib/ld-musl*.so* /lib/libssl*.so* /lib/libcrypto*.so* /lib/libz*.so* /usr/lib/libstdc*.so* /usr/lib/libgcc*.so* /lib/libc.musl* /usr/lib/libm*.so* /lib/
EXPOSE 25/tcp
EXPOSE 587/tcp
EXPOSE 465/tcp
EXPOSE 2525/tcp
EXPOSE 2026/tcp
ENV PATH="/opt/kumomta/sbin:$PATH"
CMD ["/opt/kumomta/sbin/kumod", "--user", "kumod"]