-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
37 lines (36 loc) · 1.23 KB
/
Dockerfile
File metadata and controls
37 lines (36 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
FROM rust:alpine AS builder
RUN apk add --update musl-dev pkgconf
WORKDIR /build
COPY Cargo.toml Cargo.lock ./
RUN --mount=type=cache,target=/usr/local/cargo/registry \
mkdir src && echo "fn main() {}" > src/main.rs && cargo build --release 2>/dev/null; rm -rf src
COPY templates/ templates/
COPY src/ src/
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/build/target \
cargo build --release \
&& cp target/release/mailserver /output \
&& strip /output
FROM alpine:3.21
RUN --mount=type=cache,target=/var/cache/apk \
apk add --update \
postfix \
dovecot \
dovecot-lmtpd \
dovecot-pop3d \
opendkim \
opendkim-utils \
openssl \
curl
COPY --from=builder /output /usr/local/bin/mailserver
COPY templates/config/ /app/templates/config/
COPY migrations/ /app/migrations/
COPY static/ /app/static/
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh \
&& mkdir -p /data/ssl /data/dkim /data/mail /data/db /var/spool/postfix \
&& addgroup -S vmail 2>/dev/null; adduser -S -D -H -G vmail -s /sbin/nologin vmail 2>/dev/null; \
postconf compatibility_level=3.6
EXPOSE 25 587 465 2525 143 993 110 995 8080
VOLUME ["/data"]
ENTRYPOINT ["/entrypoint.sh"]