Docker compose: масштабировать оба сервиса - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть следующее docker-compose :

version: '2'
services:
    cryptohds:
        image: cryptohds:cryptohds-2.0.0-SNAPSHOT
        environment:
            - APP_SLEEP=10 # gives time for the database to boot before the application
            - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
            - SPRING_DATASOURCE_URL=jdbc:mysql://cryptohds-mysql:3306/cryptohds?useUnicode=true&characterEncoding=utf8&useSSL=false
            - SPRING_DATASOURCE_USERNAME=root
            - SPRING_DATASOURCE_PASSWORD=cryptohds
    cryptohds-mysql:
        extends:
            file: mysql.yml
            service: cryptohds-mysql

Что касается mysql.yml :

version: '2'
services:
    cryptohds-mysql:
        image: mysql:5.7.20
        environment:
            - MYSQL_USER=root
            - MYSQL_ROOT_PASSWORD=cryptohds
            - MYSQL_ALLOW_EMPTY_PASSWORD=yes
            - MYSQL_DATABASE=cryptohds
        ports:
            - 3306
        command: mysqld --lower_case_table_names=1 --skip-ssl --character_set_server=utf8 --explicit_defaults_for_timestamp

При масштабировании cryptohds они хорошо масштабируются, но все они используют один и тот же cryptohds-mysql .Я хочу масштабировать cryptohds , и каждый экземпляр имеет свой собственный cryptohds-mysql .

Как я могу этого достичь?Должны ли они быть двумя службами, которые разделяют сеть между ними, а затем масштабируют их индивидуально?Но в таком случае, как я могу использовать SPRING_DATASOURCE_URL?

UPDATE

Я на самом деле создал docker-compose, который делает то, что мне нужно, но он не динамический.Он специально создает 2 экземпляра каждого, и я хочу случайное число.Есть ли другой способ сделать это динамически?Или только по сценарию?

version: '2'
services:
    cryptohds:
        image: cryptohds:cryptohds-2.0.0-SNAPSHOT
        environment:
            - APP_SLEEP=10 # gives time for the database to boot before the application
            - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
            - SPRING_DATASOURCE_URL=jdbc:mysql://cryptohds-mysql:3306/cryptohds?useUnicode=true&characterEncoding=utf8&useSSL=false
            - SPRING_DATASOURCE_USERNAME=root
            - SPRING_DATASOURCE_PASSWORD=cryptohds
    cryptohds-mysql:
        extends:
            file: mysql.yml
            service: cryptohds-mysql
    cryptohds_1:
        image: cryptohds:cryptohds-2.0.0-SNAPSHOT
        environment:
            - APP_SLEEP=10 # gives time for the database to boot before the application
            - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
            - SPRING_DATASOURCE_URL=jdbc:mysql://cryptohds-mysql_1:3306/cryptohds?useUnicode=true&characterEncoding=utf8&useSSL=false
            - SPRING_DATASOURCE_USERNAME=root
            - SPRING_DATASOURCE_PASSWORD=cryptohds
    cryptohds-mysql_1:
        extends:
            file: mysql.yml
            service: cryptohds-mysql

1 Ответ

0 голосов
/ 26 апреля 2018

Чтобы контейнеры работали как отдельные группы, я бы рекомендовал определить их как отдельные "проекты" в docker-compose.В режиме роя эквивалентом будет развертывание отдельных «стеков».Имя проекта по умолчанию соответствует вашему текущему имени каталога.Вы можете переопределить это с помощью опции -p, например:

docker-compose -p cryptohds2 up
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...