【问题标题】:Spring Profiles in connection String连接字符串中的 Spring Profiles
【发布时间】:2020-03-30 07:53:17
【问题描述】:

我正在使用 Spring BootDocker。我正在使用 connectionService.java 返回 connection 来执行某些任务。这个连接字符串有jdbc:mysql://localhost/databaseName?autoReconnect=true&useSSL=false。如果我正在运行应用程序,则它运行良好,但如果我构建 docker 映像,则此连接字符串应替换为 jdbc:mysql://docker-mysql/databaseName?autoReconnect=true&useSSL=false。因为 docker-image 的配置是 docker-mysql 而不是 localhost

ConnectionService.java

@Service
public class ConnectionService {
    public Connection createConnection() throws SQLException {
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/databaseName?autoReconnect=true&useSSL=false", "root", "root");
        return connection;
    }
}

Docker-compose

version: '3'

services:
  docker-mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=databaseName
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
    ports:
      - 3307:3306

  app:
    image: app:latest
    ports:
      - 8080:8080
    depends_on:
      - docker-mysql
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://docker-mysql/databaseName?autoReconnect=true&useSSL=false
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=root

错误:马上。我遇到了错误通信链接故障。 我怎么能做到这一点,相同的代码适用于运行应用程序以及构建 docker 映像时。

【问题讨论】:

    标签: java spring-boot docker spring-mvc


    【解决方案1】:

    您在 Docker-compose 中设置了 SPRING_DATASOURCE_URL 环境变量,但不要在您的 ConnectionService 中使用它。

    也许,您可以使用 Spring 中的 System.getEnv() 或 @Value 注解。

    修改你的 ConnectionService 类:

    @Value("${spring.datasource.url}")
    private String datasourceUrl;
    
    Connection connection = DriverManager.getConnection(datasourceUrl, "root", "root");
    

    【讨论】:

    • 更新了我的答案。
    • 这适用于 docker-image 但我如何也可以将相同的代码用于“运行应用程序”?
    • 你可以在你的 application.yml/properties 中设置它所以,当你在本地机器上运行时,该值将从你的配置文件中读取,当你在 docker 中运行时,环境变量会覆盖它.
    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2014-03-31
    • 2017-04-24
    • 1970-01-01
    • 2015-12-31
    • 2013-03-23
    相关资源
    最近更新 更多