mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 23:23:55 +08:00
feat: add FastAPI manager API compatibility baseline
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user