Клиент в приложении в Docker
Клиентская библиотека redis ставится в образ приложения и открывает соединение по этому адресу.
Пакет на PyPI
называется redis,
его ставят через pip install
на этапе сборки.
Пароль совпадает
с параметром сервиса db
и равен demo.
Список зависимостей
лежит в requirements.txt:
redis
Сначала копируют файл
зависимостей,
выполняют установку,
затем кладут app.py.
Для копирования
берут COPY,
а не ADD.
Содержимое Dockerfile:
FROM python:3.14
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]
Скрипт читает адрес
из окружения
и проверяет связь
командой ping
клиента:
import os
import redis
host = os.environ["REDIS_HOST"]
port = int(os.environ["REDIS_PORT"])
client = redis.Redis(
host=host,
port=port,
password="demo",
)
print(client.ping())
Описание проекта
не меняет сервер db
и переменные у app.
Файл compose.yaml:
services:
db:
image: redis:8
command: ["--requirepass", "demo"]
volumes:
- dbdata:/data
app:
build: .
environment:
REDIS_HOST: db
REDIS_PORT: "6379"
volumes:
dbdata:
Успешный ответ
печатает True.
Выполним пересборку
и запуск:
docker compose up -d --build
Добавьте в шаблон сервиса note установку пакета redis по requirements.txt и проверку связи с сервером db.
Пересоберите проект и отметьте в логах сервиса note положительный ответ проверки связи.