38 lines
1.3 KiB
Docker
38 lines
1.3 KiB
Docker
# ============================================================
|
|
# Одноэтапный Dockerfile (сборка и рантайм в одном образе)
|
|
# ============================================================
|
|
FROM erlang:28-alpine
|
|
|
|
# Устанавливаем инструменты для сборки и runtime-зависимости
|
|
RUN apk add --no-cache \
|
|
# для сборки
|
|
git curl make gcc musl-dev \
|
|
rust cargo openssl-dev libsodium-dev \
|
|
# для рантайма
|
|
openssl libstdc++ libgcc ncurses-libs
|
|
|
|
# Рабочая директория
|
|
WORKDIR /app
|
|
|
|
# Копируем конфигурацию и исходники
|
|
COPY rebar.config ./
|
|
COPY include/ include/
|
|
COPY src/ src/
|
|
COPY src/config/sys.config ./config/sys.config
|
|
|
|
# Собираем зависимости и релиз
|
|
RUN rebar3 get-deps && \
|
|
rebar3 as prod release
|
|
|
|
# Создаём директорию для данных
|
|
RUN mkdir -p /app/data && chmod 777 /app/data
|
|
|
|
# Настраиваем порты
|
|
EXPOSE 8080 8081 8445 8446
|
|
|
|
# Переменные окружения
|
|
ENV RELX_REPLACE_OS_VARS=true
|
|
ENV MNESIA_DIR=/app/data
|
|
|
|
# Запускаем приложение из собранного релиза
|
|
CMD ["/app/_build/prod/rel/eventhub/bin/eventhub", "foreground"] |