Все еще я решил использовать виртуальную среду В контейнере Docker, поскольку это имеет смысл для меня изолировать приложение и его зависимости от ОС, аналогичное тому, что вы делаете в среде разработки без контейнеров. >: < /p>
Код: Выделить всё
FROM docker.io/library/ubuntu:24.04
ENV APPENV=/appenv
ENV PYTHONPATH=/app
WORKDIR /app
# OS + python packages
RUN apt-get update && \
apt-get install -y --no-install-recommends python3.12 python3-virtualenv curl\
&& rm -rf /var/lib/apt/lists/*
RUN virtualenv ${APPENV} -p python3.12 && \
. ${APPENV}/bin/activate && \
pip install pip --upgrade
# entrypoint.sh will run the /bin/activate
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
# app python dependencies
COPY requirements.txt requirements.txt
RUN . ${APPENV}/bin/activate && \
${APPENV}/bin/pip3.12 install -r requirements.txt
EXPOSE 8000
COPY ./app /app
ENTRYPOINT ["entrypoint.sh"]
CMD ["fastapi", "run"]
#! /usr/bin/env sh
. /appenv/bin/activate
exec "$@"
< /code>
Тем не менее, мне не удастся воспроизводить возможную проблему, которую решает виртуальная среда в контейнере Docker. < /p>
Есть ли способ доказать Это преимущества использования виртуальной среды в контейнере Docker перевешивают сложность Dockerfile?
Подробнее здесь: https://stackoverflow.com/questions/794 ... -cause-iss
Мобильная версия