44 lines
1.2 KiB
Docker
44 lines
1.2 KiB
Docker
# ============================================================
|
|
# Этап 1: Сборка
|
|
# ============================================================
|
|
FROM erlang:28-alpine AS builder
|
|
|
|
RUN apk add --no-cache \
|
|
git curl make gcc musl-dev \
|
|
rust cargo openssl-dev libsodium-dev
|
|
|
|
WORKDIR /app
|
|
COPY rebar.config ./
|
|
RUN rebar3 lock || true
|
|
RUN rebar3 get-deps
|
|
|
|
COPY include/ include/
|
|
COPY src/ src/
|
|
|
|
# Копируем sys.config из src/config/ в config/
|
|
COPY src/config/sys.config ./config/sys.config
|
|
|
|
RUN rebar3 as prod release
|
|
RUN rebar3 as prod tar
|
|
RUN mkdir -p /app/release && \
|
|
tar -xzf _build/prod/rel/eventhub/eventhub-*.tar.gz -C /app/release
|
|
|
|
# ============================================================
|
|
# Этап 2: Финальный образ
|
|
# ============================================================
|
|
FROM alpine:3.20
|
|
|
|
RUN apk add --no-cache openssl libstdc++ libgcc ncurses-libs libsodium
|
|
COPY --from=builder /app/release /app
|
|
COPY --from=builder /usr/lib/libcrypto.* /usr/lib/
|
|
COPY --from=builder /usr/lib/libssl.* /usr/lib/
|
|
|
|
RUN mkdir -p /app/data && chmod 777 /app/data
|
|
|
|
WORKDIR /app
|
|
EXPOSE 8080 8081 8445 8446
|
|
|
|
ENV RELX_REPLACE_OS_VARS=true
|
|
ENV MNESIA_DIR=/app/data
|
|
|
|
CMD ["/app/bin/eventhub", "foreground"] |