РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcPyDvVn 11 of 22 menu
◀ ▶

Каталог зависимостей в Docker

Каталог .venv закрывают отдельным томом, иначе папка с хоста затирает пакеты из образа. Том $PWD/app:/app подменяет весь /app, включая .venv из слоя сборки.

Шаблон создаёт окружение и ставит пакеты на этапе образа. Файл app/Dockerfile:

FROM python:3.14 WORKDIR /app COPY requirements.txt . RUN python -m venv .venv \ && .venv/bin/pip install -r requirements.txt COPY app.py . ENV PATH="/app/.venv/bin:$PATH" CMD ["python", "app.py"]

Скрипт app/app.py слушает 0.0.0.0 на 8000 и отдаёт hello:

from http.server import BaseHTTPRequestHandler, HTTPServer class Handler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.end_headers() self.wfile.write(b'hello') if __name__ == '__main__': HTTPServer(('0.0.0.0', 8000), Handler).serve_forever()

В app/requirements.txt список пакетов пуст - установка всё равно создаёт каталог в образе:

<+html+> <-html->

Второй том без имени слева держит /app/.venv отдельно от папки проекта. Без этой строки пустой .venv с хоста скрывает каталог из образа. Файл compose.yaml:

services: app: build: ./app ports: - "8080:8000" volumes: - "$PWD/app:/app" - /app/.venv

Подъём с пересборкой поднимет сервис с кодом с диска и пакетами из образа. Выполним запуск проекта:

docker compose up -d --build

Соберите сервис note с установкой pip в образе и двумя томами, чтобы каталог .venv не затирался с хоста.

Откройте localhost:8080 и проверьте ответ hello.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить