Как мне настроить тома для многозадачной службы баз данных в docker swarm? - PullRequest
0 голосов
/ 25 февраля 2020

Я новичок в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...