Я новичок в Docker и хочу сделать мини-проект с Docker Swarm. Я построил docker изображение с моим Django приложением. В dockerfile я добавил файлы проекта, перенес все модели, а затем запустил сервер. Теперь пришло время подготовить базу данных SQL для django в качестве новой службы в стеке. Сейчас я использую только одну копию реплики из образа MariaDB. В нем есть переменные, необходимые для настройки базы данных, и смонтирован один локальный том для хранения данных на компьютере, на котором работает контейнер. В настройках django я изменил бэкэнд БД на mysql, а хост БД на имя службы базы данных. На данный момент все работает хорошо.
Но что, если я хочу иметь больше реплик механизма БД? Как мне поступить с хранилищем данных с разных узлов? Если я использую текущую конфигурацию, данные, хранящиеся на первом узле, не будут такими же, как на втором узле.
И вот вопрос: как мне настроить том в compose-файле, чтобы все задачи использовали одинаково data.
Я читаю некоторые блоги и дискуссии, где многие говорят, что docker swarm - не хороший оркестратор для работы с БД, но так ли это на самом деле?.
Текущий compose-файл:
version: "3"
services:
django-site:
image: questionsite:maria
ports:
- 8080:8080
deploy:
replicas: 1
depends_on:
- database
networks:
- site
database:
image: mariadb:latest
ports:
- 3306:3306
networks:
- site
deploy:
replicas: 1
environment:
MYSQL_HOST: "database"
MYSQL_DATABASE: 'djangosite'
MYSQL_USER: 'xxxx'
MYSQL_PASSWORD: 'xxxxxx'
MYSQL_ROOT_PASSWORD: 'xxxxx'
MYSQL_ROOT_HOST: "%"
MYSQL_PORT: "3306"
volumes:
- db_loc:/var/lib/mysql
networks:
site:
external: true
volumes:
db_loc:
driver: local