Код: Выделить всё
FROM python:3.9-alpine AS base
ENV PYROOT /pyroot
ENV PYTHONUSERBASE ${PYROOT}
ENV PATH=${PATH}:${PYROOT}/bin
RUN pip install pipenv
COPY Pipfile\* ./
RUN PIP_USER=1 pipenv install --system --deploy --ignore-pipfile
FROM python:3.9-alpine
ENV PYROOT /pyroot
ENV PYTHONUSERBASE ${PYROOT}
ENV PATH=${PATH}:${PYROOT}/bin
RUN addgroup -S myapp && adduser -S -G myapp user -u 1234
COPY --chown=myapp:user --from=base ${PYROOT}/ {PYROOT}/
RUN mkdir -p /usr/src/app/app
WORKDIR /usr/src/app
COPY --chown=myapp:user app ./app
COPY --chown=myapp:user main.py ./
USER user
CMD \["uvicorn", "main:app","--host", "0.0.0.0", "--port", "8080"\]
Код: Выделить всё
$ sudo docker build -t myapp:latest . && sudo docker run --name testapp -p 8080 myapp:latest
докер: ответ об ошибке от демона: не удалось создать задачу для контейнера: не удалось создать создать задачу прокладки: Ошибка создания среды выполнения OCI: Ошибка создания runc: невозможно запустить процесс контейнера: exec: "uvicorn": исполняемый файл не найден в $PATH: неизвестно.
Подробнее здесь: https://stackoverflow.com/questions/784 ... t-found-in