Я сталкиваюсь с ошибкой при попытке загрузить файл в конечную точку FastAPI, на локальном хосте он работает нормально, но я получаю сообщение об ошибке при запуске его в контейнере.
Я получаю ошибку:
File "/app/main.py", line 26, in say_hello
with open(file_path, "wb") as f:
^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: 'uploads/h.png'
Моя конечная точка загрузки:
@app.post("/letter")
async def say_hello(file: UploadFile = File(...)):
file_path = f"uploads/{file.filename}"
with open(file_path, "wb") as f:
f.write(await file.read())
return process_image(file_path)
Мой файл Docker:
# syntax=docker/dockerfile:1
ARG PYTHON_VERSION=3.12.3
FROM python:${PYTHON_VERSION}-slim as base
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /app
ARG UID=10001
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
appuser
# Set the permissions for all files
RUN chown -R appuser:appgroup /app
RUN --mount=type=cache,target=/root/.cache/pip \
--mount=type=bind,source=requirements.txt,target=requirements.txt \
python -m pip install -r requirements.txt
# Switch to the non-privileged user to run the application.
USER appuser
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Я пробовал установить разрешения для пользователя по умолчанию, добавив разрешение в Dockerfile, но ничего не изменилось:
# Set the permissions for all files
RUN chown -R appuser:appgroup /app
Подробнее здесь: https://stackoverflow.com/questions/785 ... er-fastapi