Установка зависимостей в Docker
Установка зависимостей выполняет pip по этому файлу во время сборки образа.
Даже при пустом списке
шаг pip install с флагом
-r и путём
requirements.txt
отрабатывает без ошибки
и готовит место под пакеты
внутри шаблона.
Сначала в образ попадает
только requirements.txt,
затем идёт установка,
и уже после - app.py.
Так слой с пакетами не
пересобирается при каждой
правке кода сервера.
Файл шагов такой:
FROM python:3.14
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]
Скрипт app.py слушает
0.0.0.0 и отдаёт
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()
Содержимое requirements.txt
без сторонних пакетов:
Сервис app по-прежнему
собирается из точки и публикует
порт 8080 на компьютере
к порту 8000 в копии.
Файл compose.yaml
не меняет имя готового образа:
services:
app:
build: .
ports:
- "8080:8000"
После пересборки страница
на localhost:8080
покажет hello.
Выполним запуск с пересборкой:
docker compose up -d --build
Добавьте в шаблон сервиса note шаг установки pip по requirements.txt перед копированием app.py.
Пересоберите проект и убедитесь, что ответ на порту 8080 не изменился.