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