FROM alpine:3.21 AS swe-build
RUN apk add --no-cache build-base git
WORKDIR /src
RUN git clone https://github.com/aloistr/swisseph.git && \
    cd swisseph && \
    git checkout 59ac051b5a5812c684973ca0fcedb1c8c3e9c5dc && \
    make libswe.a
COPY server/swe-chart.c /src/swe-chart.c
RUN cc -O2 -I/src/swisseph /src/swe-chart.c -L/src/swisseph -lswe -lm -ldl -o /usr/local/bin/swe-chart

FROM node:22-alpine AS app-build
WORKDIR /app
RUN corepack enable
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
RUN pnpm install --frozen-lockfile --dangerously-allow-all-builds
COPY . .
RUN pnpm build && tar --exclude='./dist' --exclude='./node_modules' -czf /tmp/mias-source.tar.gz . && mv /tmp/mias-source.tar.gz dist/mias-source.tar.gz

FROM node:22-alpine
WORKDIR /app
ENV NODE_ENV=production \
    PORT=3000 \
    SWEPH_BIN=/usr/local/bin/swe-chart \
    SWEPH_EPHE_PATH=/opt/swisseph/ephe
COPY --from=app-build /app/dist ./dist
COPY server ./server
COPY --from=swe-build /usr/local/bin/swe-chart /usr/local/bin/swe-chart
COPY --from=swe-build /src/swisseph/ephe /opt/swisseph/ephe
COPY --from=swe-build /src/swisseph/LICENSE /opt/swisseph/LICENSE
EXPOSE 3000
CMD ["node", "server/index.mjs"]
