部署在Google App Engine上的配置数据库不起作用

时间:2019-09-17 12:12:37

标签: google-app-engine google-cloud-platform google-cloud-sql metabase

在Gcloud中部署Metabase后,GAE应用网址显示错误页面。

我按照此链接https://www.cloudbooklet.com/install-metabase-on-google-cloud-with-docker-app-engine/上的所有说明在GAE上部署了配置数据库。

我尝试同时使用mysql和Postgres db,但结果始终是错误页面

这是我的App.yaml代码。

env: flex

manual_scaling:
   instances: 1

env_variables:
   MB_JETTY_PORT: 8080
   MB_DB_TYPE: postgres
   MB_DB_DBNAME: metabase
   MB_DB_PORT: 5432
   MB_DB_USER: root
   MB_DB_PASS: password
   MB_DB_HOST: 127.0.0.1

beta_settings:
   cloud_sql_instances: <sql_instance>=tcp:5432

这是我的dockerfile

FROM gcr.io/google-appengine/openjdk

EXPOSE 8080

ENV PORT 8080
ENV MB_PORT 8080
ENV MB_JETTY_PORT 8080
ENV MB_DB_PORT 5432
ENV METABASE_SQL_INSTANCE <sql_instance>=tcp:5432
ENV JAVA_OPTS "-XX:+IgnoreUnrecognizedVMOptions -Dfile.encoding=UTF-8 --add-opens=java.base/java.net=ALL-UNNAMED --add-modules=java.xml.bind"

ADD https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 ./cloud_sql_proxy
ADD http://downloads.metabase.com/v0.33.2/metabase.jar /metabase.jar

RUN chmod +x ./cloud_sql_proxy

CMD ./cloud_sql_proxy -instances=$METABASE_SQL_INSTANCE=tcp:$MB_DB_PORT & java -jar ./metabase.jar

以下是我在控制台日志上看到的错误

INFO metabase.driver :: Registered abstract driver :sql  ?

App Engine URL上的错误消息还显示以下内容,

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.

我尝试了所有可能找到的选项,请为我提供可行的解决方案。

1 个答案:

答案 0 :(得分:0)

首先,请按照Connecting from App Engine page上的说明进行操作。确保已启用SQL Admin API,并且所使用的服务帐户具有Cloud SQL Connect IAM角色。

第二,您不需要在docker容器中运行代理。当您在app.yml中指定它时,它允许您在172.17.0.1:<PORT>上对其进行访问。 (尽管如果您使用的是容器,我强烈建议您改用Cloud Run)。

最后,根据此Metabase setup instructions,您需要向容器提供环境变量,以指定要使用的数据库。这些环境变量的格式均为MB_DB_*

这是没有代理的dockerfile的样子:

FROM gcr.io/google-appengine/openjdk


ENV MB_JETTY_PORT 8080

ENV MB_DB_TYPE postgres
ENV MB_DB_HOST 172.17.0.1
ENV MB_DB_PORT 5432
ENV MB_DB_USER <your-username>
ENV MB_DB_PASS <your-password>
ENV MB_DB_DBNAME <your-database>

ENV JAVA_OPTS "-XX:+IgnoreUnrecognizedVMOptions -Dfile.encoding=UTF-8 --add-opens=java.base/java.net=ALL-UNNAMED --add-modules=java.xml.bind"

ENTRYPOINT java -jar ./metabase.jar

要获得奖励积分,您可以考虑使用distroless containergcr.io/distroless/java:11)作为基础(特别是如果您切换到Cloud Run)。