FROM python:3.12-slim WORKDIR /app COPY server/requirements.txt ./server/ RUN pip install --no-cache-dir -r server/requirements.txt COPY server/ ./server/ EXPOSE 8000 # --preload imports the app once in the master (so create_all runs a single time) # before forking workers, preventing a table-creation race on first startup. CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "--preload", \ "-b", "0.0.0.0:8000", "--workers", "2", "server.app:app"]