FROM node:18.16.0-alpine as webapp-build RUN apk update && apk add bash RUN npm i -g pnpm RUN mkdir -p /app WORKDIR /app COPY ./package.json /app COPY ./pnpm-lock.yaml /app RUN pnpm install COPY ./webapp /app/webapp COPY ./index.html /app COPY ./public /app/public COPY ./*.js /app COPY ./*.json /app RUN pnpm webapp:build:only FROM python:3.12.3-bookworm as server-aio RUN apt-get update && apt-get install -y git libpq-dev gcc COPY ./requirements.txt /tmp/requirements.txt RUN pip install --no-cache-dir --upgrade -r /tmp/requirements.txt WORKDIR /app COPY ./felicity /app/felicity RUN rm -rf /app/felicity/templates/static/* COPY --from=webapp-build /app/dist /app/felicity/templates/static # RUN cd /app/felicity && alembic upgrade head ENV PYTHONPATH=/app CMD ["gunicorn", "felicity.main:felicity", "--bind", "0.0.0.0:8000", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker"] FROM python:3.12.3-bookworm as server-api RUN apt-get update && apt-get install -y git libpq-dev gcc COPY ./requirements.txt /tmp/requirements.txt RUN pip install --no-cache-dir --upgrade -r /tmp/requirements.txt WORKDIR /app COPY ./felicity /app/felicity RUN rm -rf /app/felicity/templates/static/* # RUN cd /app/felicity && alembic upgrade head ENV PYTHONPATH=/app CMD ["gunicorn", "felicity.main:felicity", "--bind", "0.0.0.0:8000", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker"] FROM nginx:latest as nginx-static RUN mkdir /app COPY --from=webapp-build /app/dist /app FROM caddy:2-alpine as caddy-static RUN mkdir /app COPY --from=webapp-build /app/dist /app