Переменные приложения в Docker
Переменные приложения задают в окружении сервиса, и скрипт читает их при старте. Строка в описании службы попадает в os.environ и меняет ответ без пересборки образа, если код уже внутри шаблона.
Скрипт читает SITE
и отдаёт это слово телом
ответа на порту 8000:
import os
from http.server import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(os.environ['SITE'].encode())
if __name__ == '__main__':
HTTPServer(('0.0.0.0', 8000), Handler).serve_forever()
Код кладут в образ
при сборке.
Том для папки проекта
здесь не нужен -
урок про переменную,
а не про монтирование.
Файл Dockerfile:
FROM python:3.14
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]
Сервис app
собирается из точки,
публикует порты
и задаёт SITE
со значением demo.
Файл compose.yaml:
services:
app:
build: .
ports:
- "8080:8000"
environment:
SITE: demo
После подъёма в фоне
страница покажет слово
demo
без правки app.py.
Выполним запуск проекта:
docker compose up -d --build
Задайте сервису note переменную TAG со значением note и отдайте её текстом страницы на порту 8080.
Сверьте адрес localhost:8080 с заданным значением переменной.