我正在尝试使用docker-组合来设置Spring项目。
我使用spring云配置,所以我有一个configuration和一些服务。
目前,我的docker中有3项服务--come.yml
version: '3'
services:
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'root' # TODO: Change this
MYSQL_USER: 'user'
MYSQL_PASS: 'password'
MYSQL_ROOT_HOST: '%'
volumes:
- "db:/opt/mysql/docker:rw"
ports:
- "3307:3306"
config:
image: config-server
restart: always
depends_on:
- db
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/ec_settings?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
ports:
- "8100:8100"
gateway:
image: gateway
restart: always
depends_on:
- config
environment:
- CONFIG_URI=http://config:8100
ports:
- '8081:8080'
volumes:
db: {}在网关微服务中,在bootstrap.yml中,我有以下设置
spring:
cloud:
config:
uri: ${CONFIG_URI}当我安装docker时,我看到网关服务正在尝试从http://config:8100获取配置。
Fetching config from server at : http://config:8100因此,变量传递给Spring,但是docker-组合并不用它的实际链接替换服务名称。非常奇怪的是,SPRING_DATASOURCE_URL环境变量在配置服务中得到正确的转换,从而连接到db服务。
发布于 2020-04-27 10:25:10
多亏了这个链接Docker - SpringConfig - Connection refused to ConfigServer,我终于解决了它
问题是服务试图过早地获取配置url。解决方案是在bootstrap.yml中设置此设置
spring:
cloud:
config:
fail-fast: true
retry:
max-attempts: 20https://stackoverflow.com/questions/61445773
复制相似问题