首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Compose服务名称不用作环境变量

问Docker Compose服务名称不用作环境变量
EN

Stack Overflow用户
提问于 2020-04-26 18:16:46
回答 1查看 769关注 0票数 0

我正在尝试使用docker-组合来设置Spring项目。

我使用spring云配置,所以我有一个configuration和一些服务。

目前,我的docker中有3项服务--come.yml

代码语言:javascript
复制
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中,我有以下设置

代码语言:javascript
复制
spring:
  cloud:
    config:
      uri: ${CONFIG_URI}

当我安装docker时,我看到网关服务正在尝试从http://config:8100获取配置。

代码语言:javascript
复制
 Fetching config from server at : http://config:8100

因此,变量传递给Spring,但是docker-组合并不用它的实际链接替换服务名称。非常奇怪的是,SPRING_DATASOURCE_URL环境变量在配置服务中得到正确的转换,从而连接到db服务。

EN

回答 1

Stack Overflow用户

发布于 2020-04-27 10:25:10

多亏了这个链接Docker - SpringConfig - Connection refused to ConfigServer,我终于解决了它

问题是服务试图过早地获取配置url。解决方案是在bootstrap.yml中设置此设置

代码语言:javascript
复制
spring:
  cloud:
    config:
      fail-fast: true
      retry:
        max-attempts: 20
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61445773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档