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