Код на хосте в Docker
Правка файла на хосте
сразу видна в контейнере,
потому что каталог проекта
смонтирован в /app.
Том связывает папку
на диске с рабочим каталогом
внутри копии на python:3.14.
Образ готовый,
сборка не нужна.
Файл app/page.txt
хранит слово hello.
Скрипт app/app.py
слушает 0.0.0.0
на порту 8000
и на каждый запрос
читает этот файл заново:
hello
Обработчик открывает
page.txt
при запросе,
а не держит слово
в памяти процесса:
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
with open('page.txt', 'rb') as page:
self.wfile.write(page.read())
if __name__ == '__main__':
HTTPServer(('0.0.0.0', 8000), Handler).serve_forever()
Запись тома использует
переменную текущего каталога
в кавычках,
чтобы путь не ломался
при пробелах в имени папки.
Слева -
$PWD/app,
справа -
/app.
Сервис app
публикует порты
8080
и 8000,
запуск идёт
через python
и app.py.
Файл compose.yaml:
services:
app:
image: python:3.14
ports:
- "8080:8000"
volumes:
- "$PWD/app:/app"
working_dir: /app
command: ["python", "app.py"]
После подъёма в фоне
адрес localhost:8080
покажет hello.
Правка app/page.txt
достаточна для нового текста
после обновления страницы.
Текст самого скрипта
процесс уже прочитал
при старте.
Выполним запуск проекта:
docker compose up -d
Опишите сервис note на python:3.14 с томом $PWD/app:/app и ответом note на порту 8080.
Измените слово в смонтированном page.txt и обновите страницу в браузере.