2025-05-23 16:33:38 +08:00
|
|
|
FROM python:3.11-slim-bookworm
|
|
|
|
|
|
2026-05-11 08:31:43 +05:30
|
|
|
ARG NEED_MIRROR=1
|
|
|
|
|
|
|
|
|
|
RUN if [ "$NEED_MIRROR" = 1 ]; then \
|
|
|
|
|
grep -rl 'deb.debian.org' /etc/apt/ | xargs sed -i 's|http[s]*://deb.debian.org|https://mirrors.tuna.tsinghua.edu.cn|g'; \
|
|
|
|
|
fi; \
|
2025-05-23 16:33:38 +08:00
|
|
|
apt-get update && \
|
|
|
|
|
apt-get install -y curl gcc && \
|
|
|
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-01-12 11:06:33 +08:00
|
|
|
ARG TARGETARCH
|
|
|
|
|
ARG TARGETVARIANT
|
|
|
|
|
|
|
|
|
|
RUN set -eux; \
|
|
|
|
|
case "${TARGETARCH}${TARGETVARIANT}" in \
|
|
|
|
|
amd64) DOCKER_ARCH=x86_64 ;; \
|
|
|
|
|
arm64) DOCKER_ARCH=aarch64 ;; \
|
|
|
|
|
armv7) DOCKER_ARCH=armhf ;; \
|
|
|
|
|
armv6) DOCKER_ARCH=armel ;; \
|
|
|
|
|
arm64v8) DOCKER_ARCH=aarch64 ;; \
|
|
|
|
|
arm64v7) DOCKER_ARCH=armhf ;; \
|
|
|
|
|
arm*) DOCKER_ARCH=armhf ;; \
|
|
|
|
|
ppc64le) DOCKER_ARCH=ppc64le ;; \
|
|
|
|
|
s390x) DOCKER_ARCH=s390x ;; \
|
|
|
|
|
*) echo "Unsupported architecture: ${TARGETARCH}${TARGETVARIANT}" && exit 1 ;; \
|
|
|
|
|
esac; \
|
|
|
|
|
echo "Downloading Docker for architecture: ${DOCKER_ARCH}"; \
|
|
|
|
|
curl -fsSL "https://download.docker.com/linux/static/stable/${DOCKER_ARCH}/docker-29.1.0.tgz" | \
|
|
|
|
|
tar xz -C /usr/local/bin --strip-components=1 docker/docker; \
|
|
|
|
|
ln -sf /usr/local/bin/docker /usr/bin/docker
|
2025-05-23 16:33:38 +08:00
|
|
|
|
|
|
|
|
COPY --from=ghcr.io/astral-sh/uv:0.7.5 /uv /uvx /bin/
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
2025-06-18 12:37:17 +08:00
|
|
|
COPY . .
|
2025-05-23 16:33:38 +08:00
|
|
|
|
2026-05-11 08:31:43 +05:30
|
|
|
RUN if [ "$NEED_MIRROR" = 1 ]; then export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"; else export UV_INDEX_URL="https://pypi.org/simple"; fi && \
|
|
|
|
|
uv pip install --system -r requirements.txt
|
2025-05-23 16:33:38 +08:00
|
|
|
|
|
|
|
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "9385"]
|