Memcached
Чтобы продемонстрировать наш пример, мы будем использовать локальный экземпляр Memcached в качестве сервера кэширования. Чтобы запустить локальный сервер Memcached, мы используем docker-образ Memcached, что значительно снижает наши усилия по настройке.
Давайте подготовим файл docker-compose, который выглядит следующим образом:
version: '3.8'
services:
web:
# Берем Dockerfile из каталога app
build: app
# Запускаем тестовый сервер
command: python manage.py runserver 0.0.0.0:8000
# куда будут помещены данные из каталога app
volumes:
- ./app/:/usr/src/app/
# Открываем порт 8000 внутри и снаружи
ports:
- 8000:8000
# Файл содержащий переменные для контейнера
env_file:
- .env
# Дожидаемся запуска контейнера db
depends_on:
- db
- memcached
db:
image: postgres:15
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=book_django
- POSTGRES_PASSWORD=pass_book_django
- POSTGRES_DB=book_django
memcached:
image: memcached:1.6.21
ports:
- 11211:11211
volumes:
postgres_data:
Также изменим наш файл с переменными .env:
DEBUG = True
SECRET_KEY = 'django-insecure-xxxxxxxxxxxx'
DJANGO_ALLOWED_HOSTS = '127.0.0.1'
CSRF_TRUSTED_ORIGINS = 'http://127.0.0.1'
CACHES_BACKEND = 'django.core.cache.backends.memcached.PyMemcacheCache'
CACHES_LOCATION = 'memcached:11211'
INTERNAL_IPS = '127.0.0.1'
SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=book_django
SQL_USER=book_django
SQL_PASSWORD=pass_book_django
SQL_HOST=db
SQL_PORT=5432
DATABASE=postgres
Выполним билд и запуск наших контейнеров еще раз:
docker-compose up -d --build
Мы видим что контейнер c memcached успешно запущен, также мы можем посмотреть это используя Docker Desktop:
Можем перейти на наш сайт по адресу http://127.0.0.1:8000/ и убедиться что он работает и нет никаких ошибок:
Таким образом мы подключили кэш-сервер Memcached в нашем проекте.
В следующем разделе мы начнем подготовку проекта к деплою, добавив сервер приложений Gunicorn и веб-сервер NGINX.