# ============================================================ # Одноэтапный 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"]