mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 07:03:53 +08:00
55 lines
1.8 KiB
Docker
55 lines
1.8 KiB
Docker
FROM python:3.10.20-bookworm AS build
|
|
|
|
ENV UV_COMPILE_BYTECODE=1 \
|
|
UV_LINK_MODE=copy \
|
|
UV_HTTP_TIMEOUT=120 \
|
|
UV_HTTP_RETRIES=10 \
|
|
PATH=/app/.venv/bin:$PATH
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=ghcr.io/astral-sh/uv:0.11.28 /uv /uvx /bin/
|
|
|
|
COPY main/manager-api-fastapi/pyproject.toml main/manager-api-fastapi/uv.lock main/manager-api-fastapi/README.md ./
|
|
COPY main/manager-api-fastapi/app ./app
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv sync --frozen --no-dev --no-editable
|
|
|
|
FROM python:3.10.20-slim-bookworm
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PATH=/app/.venv/bin:$PATH \
|
|
APP_JAVA_RESOURCES_DIR=/opt/xiaozhi/java-resources \
|
|
APP_UPLOAD_DIR=/data/uploads \
|
|
APP_HOST=0.0.0.0 \
|
|
APP_PORT=8002 \
|
|
APP_TIMEZONE=Asia/Shanghai
|
|
|
|
WORKDIR /app
|
|
|
|
RUN groupadd --gid 10001 xiaozhi \
|
|
&& useradd --uid 10001 --gid xiaozhi --create-home --shell /usr/sbin/nologin xiaozhi
|
|
|
|
COPY --from=build --chown=10001:10001 /app/.venv ./.venv
|
|
COPY --from=build --chown=10001:10001 /app/app ./app
|
|
|
|
COPY main/manager-api-fastapi/scripts/container-entrypoint.sh /usr/local/bin/manager-api-entrypoint
|
|
COPY main/manager-api/src/main/resources/i18n /opt/xiaozhi/java-resources/i18n
|
|
COPY main/manager-api/src/main/resources/db /opt/xiaozhi/java-resources/db
|
|
|
|
RUN mkdir -p /data/uploads \
|
|
&& ln -s /data/uploads /app/uploadfile \
|
|
&& chown -R xiaozhi:xiaozhi /data/uploads /opt/xiaozhi \
|
|
&& chmod 0555 /usr/local/bin/manager-api-entrypoint
|
|
|
|
USER 10001:10001
|
|
EXPOSE 8002
|
|
VOLUME ["/data/uploads"]
|
|
STOPSIGNAL SIGTERM
|
|
|
|
HEALTHCHECK --interval=15s --timeout=3s --start-period=20s --retries=4 \
|
|
CMD ["python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8002/xiaozhi/health/live', timeout=2).read()"]
|
|
|
|
ENTRYPOINT ["/usr/local/bin/manager-api-entrypoint"]
|