Fresh repository history for elektrine/elektrine-haraka hosted at https://git.elektrine.com/elektrine/elektrine-haraka.
41 lines
1.3 KiB
Docker
41 lines
1.3 KiB
Docker
FROM node:18-alpine
|
|
|
|
# Install build dependencies for native modules
|
|
RUN apk add --no-cache python3 make g++
|
|
|
|
ENV HARAKA_DKIM_DIR=/data/haraka/dkim
|
|
|
|
# Install system dependencies and Haraka globally.
|
|
# iconv must be global because Haraka is installed/executed globally.
|
|
RUN apk add --no-cache libarchive-tools openssl caddy redis && npm install -g Haraka toobusy-js iconv
|
|
|
|
# Create app directory
|
|
WORKDIR /app
|
|
|
|
# Copy package files
|
|
COPY package*.json ./
|
|
|
|
# Install dependencies
|
|
RUN npm ci --omit=dev
|
|
|
|
# Copy configuration and plugins
|
|
COPY config/ ./config/
|
|
COPY docker/ ./docker/
|
|
COPY plugins/ ./plugins/
|
|
COPY lib/ ./lib/
|
|
COPY scripts/ ./scripts/
|
|
|
|
# Create runtime directories. DKIM keys are normalized into per-domain directories at container start.
|
|
RUN mkdir -p ./config/dkim ./logs "$HARAKA_DKIM_DIR" && \
|
|
chmod 755 ./config ./plugins ./lib ./scripts ./logs ./config/dkim "$HARAKA_DKIM_DIR" && \
|
|
chmod +x ./scripts/*.sh ./scripts/*.js 2>/dev/null || true && \
|
|
find ./config/dkim -mindepth 1 -maxdepth 1 -type d -exec chmod 755 {} + 2>/dev/null || true && \
|
|
for f in ./config/dkim/*/private; do [ -f "$f" ] && chmod 644 "$f"; done; \
|
|
for f in ./config/dkim/*/selector; do [ -f "$f" ] && chmod 644 "$f"; done; \
|
|
true
|
|
|
|
# Expose SMTP ports
|
|
EXPOSE 25 587 8080
|
|
|
|
# Start Haraka role selected by HARAKA_ROLE
|
|
CMD ["/app/scripts/start-haraka.sh"]
|