FROM node:22-bookworm AS build

ARG ACE_STEP_UI_COMMIT
RUN test -n "$ACE_STEP_UI_COMMIT"
RUN apt-get update \
    && apt-get install -y --no-install-recommends git python3 make g++ \
    && rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/fspecii/ace-step-ui.git /src \
    && cd /src \
    && git checkout --detach "$ACE_STEP_UI_COMMIT"
COPY patch-source.mjs /tmp/patch-source.mjs
RUN node /tmp/patch-source.mjs /src
RUN cd /src \
    && npm ci \
    && npm run build
RUN cd /src/server \
    && npm ci \
    && npm run build \
    && npm prune --omit=dev

FROM node:22-bookworm-slim AS runtime

RUN apt-get update \
    && apt-get install -y --no-install-recommends nginx curl ca-certificates ffmpeg \
    && rm -rf /var/lib/apt/lists/*
COPY --from=build /src/dist /usr/share/nginx/html
COPY --from=build /src/server/dist /app/server/dist
COPY --from=build /src/server/node_modules /app/server/node_modules
COPY --from=build /src/server/package.json /app/server/package.json
COPY --from=build /src/server/public /app/server/public
COPY --from=build /src/server/audio-editor /app/server/audio-editor
COPY nginx.conf /etc/nginx/nginx.conf
COPY entrypoint.sh /usr/local/bin/ace-step-ui-entrypoint
RUN chmod 0755 /usr/local/bin/ace-step-ui-entrypoint \
    && mkdir -p /data/audio /data/datasets/uploads

EXPOSE 3000 3001
ENTRYPOINT ["/usr/local/bin/ace-step-ui-entrypoint"]
