backend.Dockerfile.eai 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. FROM docker.m.daocloud.io/library/python:3.11-slim AS dependencies
  2. ENV PYTHONDONTWRITEBYTECODE=1 \
  3. PYTHONUNBUFFERED=1 \
  4. PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ \
  5. APP_DIR=/app
  6. WORKDIR /app
  7. RUN sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.sources \
  8. && apt-get update \
  9. && apt-get install --no-install-recommends -y gcc libc6-dev libgomp1 linux-libc-dev \
  10. && rm -rf /var/lib/apt/lists/*
  11. COPY requirements.txt ./requirements.txt
  12. RUN pip install --no-cache-dir -r requirements.txt \
  13. && apt-get purge -y gcc libc6-dev linux-libc-dev \
  14. && apt-get autoremove -y \
  15. && rm -rf /var/lib/apt/lists/*
  16. FROM dependencies AS migrator
  17. COPY app/ ./app/
  18. COPY migrations/env.py migrations/script.py.mako ./migrations/
  19. COPY migrations/versions/[0-9]*.py ./migrations/versions/
  20. COPY alembic.ini ./alembic.ini
  21. CMD ["alembic", "-c", "alembic.ini", "upgrade", "head"]
  22. FROM dependencies AS runtime
  23. RUN pip uninstall -y alembic
  24. COPY app/ ./app/
  25. COPY datafactory/ ./datafactory/
  26. COPY wsgi.py gunicorn_config.py ./
  27. RUN mkdir -p /app/logs /data/upload /data/archive
  28. EXPOSE 5500
  29. CMD ["gunicorn", "--config", "gunicorn_config.py", "wsgi:application"]