在Gcloud中部署Metabase后,GAE应用程序URL显示错误页面。
我按照此链接上的所有说明 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
这是我的码头工人文件
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 ?
此外,应用引擎 URL 上的错误消息如下:
Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.
我尝试了我能找到的所有选项,请帮助我提供可行的解决方案。
首先,按照"从 App 引擎连接"页面上的说明进行操作。确保已启用 SQL 管理 API,并且正在使用的服务帐户具有Cloud SQL Connect
IAM 角色。
其次,无需在 docker 容器中运行代理。当您在 app.yml 中指定它时,它允许您在172.17.0.1:<PORT>
上访问它。(尽管如果您使用的是容器,我强烈建议您尝试 Cloud Run(。
最后,根据此元数据库设置说明,您需要向容器提供环境变量,以指定希望它使用的数据库。这些 env 变量都是格式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
对于奖励积分,您可以考虑使用无发行版容器(gcr.io/distroless/java:11
(作为基础(特别是如果您切换到Cloud Run(。