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