backend.Dockerfile 980 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. FROM python:3.11-slim AS dependencies
  2. ENV PYTHONDONTWRITEBYTECODE=1 \
  3. PYTHONUNBUFFERED=1 \
  4. APP_DIR=/app
  5. WORKDIR /app
  6. RUN apt-get update \
  7. && apt-get install --no-install-recommends -y \
  8. gcc \
  9. libc6-dev \
  10. libgomp1 \
  11. linux-libc-dev \
  12. && rm -rf /var/lib/apt/lists/*
  13. COPY requirements.txt ./requirements.txt
  14. RUN pip install --no-cache-dir -r requirements.txt \
  15. && apt-get purge -y gcc libc6-dev linux-libc-dev \
  16. && apt-get autoremove -y \
  17. && rm -rf /var/lib/apt/lists/*
  18. FROM dependencies AS migrator
  19. COPY app/ ./app/
  20. COPY migrations/ ./migrations/
  21. COPY alembic.ini ./alembic.ini
  22. CMD ["alembic", "-c", "alembic.ini", "upgrade", "head"]
  23. FROM dependencies AS runtime
  24. RUN pip uninstall -y alembic
  25. COPY app/ ./app/
  26. COPY datafactory/ ./datafactory/
  27. COPY wsgi.py gunicorn_config.py ./
  28. RUN mkdir -p /app/logs /data/upload /data/archive
  29. EXPOSE 5500
  30. CMD ["gunicorn", "--config", "gunicorn_config.py", "wsgi:application"]