67 lines
1.6 KiB
Docker
67 lines
1.6 KiB
Docker
# ================================
|
||
# Compile Stage
|
||
# ================================
|
||
|
||
FROM debian:bookworm-slim AS compile
|
||
|
||
RUN <<EOF
|
||
apt update
|
||
apt install -y clang golang
|
||
apt clean
|
||
EOF
|
||
|
||
# TODO: consider removing if not needed
|
||
# COPY target/scripts/build/libpam-pgsql.sh .
|
||
# RUN bash libpam-pgsql.sh
|
||
|
||
WORKDIR /src/
|
||
COPY src .
|
||
|
||
# log
|
||
RUN clang -O2 -o /usr/local/bin/log /src/log/log.c
|
||
|
||
# accounts
|
||
WORKDIR /src/account-manager
|
||
RUN go build -o /usr/local/bin/accounts .
|
||
|
||
# ================================
|
||
# Build Stage
|
||
# ================================
|
||
|
||
FROM debian:bookworm-slim AS build
|
||
|
||
WORKDIR /
|
||
|
||
# Install dependencies
|
||
COPY target/scripts/build/packages.sh /build/
|
||
RUN /bin/bash /build/packages.sh && rm -r /build
|
||
|
||
# TODO: consider removing if not needed
|
||
# COPY --from=compile /pam-pgsql/.libs/pam_pgsql.so /pam-pgsql/.libs/pam_pgsql.la /usr/local/lib/security/
|
||
|
||
# Install compiled binaries
|
||
COPY --from=compile \
|
||
/usr/local/bin/log \
|
||
/usr/local/bin/accounts \
|
||
/usr/local/bin/
|
||
|
||
# Install helper scripts
|
||
COPY target/scripts/*.sh /usr/local/bin/
|
||
RUN chmod +x /usr/local/bin/*
|
||
COPY target/scripts/helpers /usr/local/bin/helpers
|
||
|
||
# Supervisor
|
||
COPY target/supervisor/supervisord.conf /etc/supervisor/supervisord.conf
|
||
COPY target/supervisor/conf.d/* /etc/supervisor/conf.d/
|
||
|
||
# Dovecot
|
||
COPY target/dovecot/*.inc target/dovecot/*.conf target/dovecot/*.ext /etc/dovecot/conf.d/
|
||
|
||
RUN <<EOF
|
||
useradd -u 5000 -d /home/jupiter -s /bin/bash -p "$(echo jupiter | openssl passwd -1 -stdin)" jupiter
|
||
EOF
|
||
|
||
EXPOSE 25/tcp 143/tcp 465/tcp 993/tcp
|
||
|
||
ENTRYPOINT ["/usr/bin/tini", "--"]
|
||
CMD ["supervisord", "-c", "/etc/supervisor/supervisord.conf"]
|