为各种环境配置 MySql,并通过 IntelliJ 部署到 Google App Engine



我正在使用IntelliJ IDE通过Maven开发Spring Boot服务,并使用Google Cloud Tools插件部署到App Engine Flexible。当我使用以下方法(连接到本地(并在本地运行应用程序时,它工作正常(在应用程序属性中(。

spring.datasource.url=jdbc:mysql://localhost:3309/test

但是,当我尝试使用以下方法(在应用程序属性中(部署到 GAE 时,

spring.datasource.url=jdbc:mysql://google/test?cloudSqlInstance=[cloud-sql-instance]&socketFactory=com.google.cloud.sql.mysql.SocketFactory

当尝试在上传到GAE之前构建项目时,它会抛出UnknownHostException:"google"。

问题:

  1. 如何为各种环境(dev (local(/qa(gae(/production(gae( ((创建不同的配置,并使用相应的环境值部署到这些环境?

  2. 从 IDE 执行生成时,它会验证数据库连接字符串(指向云 sql 实例(,如果无法访问该字符串,则会引发异常(但如果生成成功,它将来自 QA/Prod 环境(。如何解决此案?

对此的任何帮助将不胜感激。

提前谢谢。

你需要使用 Spring Profile。请阅读文档中的所有信息以获取广泛的解释。

简要:

弹簧配置文件提供了一种隔离应用程序部分的方法 配置并使其仅在某些环境中可用

现在,进入手头的问题。可以通过为您的开发引入"本地"配置文件并将"默认"配置文件保留在生产 (GAE( 中使用来解决。

应用程序属性

# this file is for the "default" profile that will be used when 
# no spring.profiles.active is defined. So consider this production config.
spring.datasource.url=jdbc:mysql://google/test?cloudSqlInstance=[cloud-sql-instance]&socketFactory=com.google.cloud.sql.mysql.SocketFactory

应用程序本地属性

# this file is for the "local" profile that will be used when 
# -Dspring.profiles.active=local is specified when running the application. 
# So consider this "local" development config
spring.datasource.url=jdbc:mysql://localhost:3309/test
# In this file you can also override any other property defined in application.properties, or add additional ones

现在,要在开发时运行应用程序,您必须在 IntelliJ 中指定的所有运行配置都在VM options-Dspring.profiles.active=local,或者如果您使用的是"Spring Boot"运行配置,您只需在Active Profiles字段中添加本地

在 GAE 上,根本不指定任何配置文件,将使用默认值。

相关内容

  • 没有找到相关文章

最新更新