Docker组成:扩展两种服务



我有以下 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

实际上,我已经建立了一个可以完成我需要的码头组合,但这不是动态的。它专门创建了每个的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

将容器作为完全独立的组运行,我建议将它们定义为docker-compose中的单独"项目"。在Swarm模式下,等效物将部署单独的"堆栈"。项目名称默认为您当前目录名称。您可以使用-p选项(例如:

(覆盖它。
docker-compose -p cryptohds2 up

最新更新