我觉得我在这里转转,所以,请忍受我。我想将Spring Boot应用程序部署到App Engine,但与Google提供的简单示例不同,我需要数据库,这意味着需要凭据。我正在Google App Engine的Standard上运行Java 11。
我设法通过以下方法使我的应用程序成功连接application.properties:
spring.datasource.url=jdbc:postgresql://google/recruiters_wtf?cloudSqlInstance=recruiters-wtf:europe-west2:recruiters-wtf&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=the_user&password=monkey123
Run Code Online (Sandbox Code Playgroud)
问题是我不想将任何凭据提交到存储库,因此,这是不可接受的。我可以使用环境变量,但随后必须在app.yaml文件中定义它们。我要么保留app.yaml部署所需的未提交的文件(这很麻烦),要么提交它,然后回到第一层,向存储库提交凭据。
既然Google App Engine显然无法以任何其他方式定义环境变量(与Heroku不同),这是否意味着在不使用某些不安全/麻烦的做法的情况下就不可能将Spring Boot应用程序部署到App Engine并使其连接到数据库?我觉得我在这里缺少什么。
CI / CD的最后一步是使用gcloud应用程序部署进行部署,但是我无法使用环境变量来提交app.yaml,那么如何通过传递env变量的云构建来部署app.yaml?
这是我的cloudbuild.yaml
steps:
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "1800s"
Run Code Online (Sandbox Code Playgroud)