我正在尝试部署一个基于深度学习的应用程序进行图像处理,该应用程序使用用户验证和 Postgres 数据库来存储结果。以下是我的应用所需的架构。
为了让它长期免费使用,我决定在 GCP 中使用 CloudRun 无服务器服务部署它。下面的shell脚本是用来部署的,基本上就是在Docker registry上构建docker镜像,然后部署为服务。
# Build container image
gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/$APP_NAME
# Deploying to Cloud Run
gcloud run deploy ${SERVICE_NAME} --image gcr.io/$(gcloud config get-value project)/$APP_NAME --platform=managed --region=${REGION} --allow-unauthenticated
#Update for CloudSQL connection
gcloud run services update ${SERVICE_NAME} \
--platform=managed \
--region=${REGION}\
--add-cloudsql-instances $INSTANCE_CONNECTION_NAME \
--set-env-vars CLOUD_SQL_CONNECTION_NAME=$INSTANCE_CONNECTION_NAME,DB_USER=$DB_USER,DB_PASS=$DB_PASS,DB_NAME=$DB_NAME
构建服务后,下一步可能是为用户验证设置 keycloak 容器,如下所示。
- image: >-
quay.io/keycloak/keycloak:latest
ports:
- name: tcp
containerPort: 8443
env:
- name: DB_VENDOR
value: postgres
- name: DB_ADDR
value: <IP_ADDRESS>
- name: DB_DATABASE
value: <DB_NAME>
- name: DB_SCHEMA
value: public
- name: DB_USER
value: postgres
- name: DB_PASSWORD
value: postgres
- name: KEYCLOAK_USER
value: admin
- name: KEYCLOAK_PASSWORD
value: admin
但是,这似乎不适用于 Cloud Run 配置。有没有人尝试过类似的东西?
答案 0 :(得分:1)
Google Cloud Run 支持每个服务一个容器。您几乎可以在一个容器中运行任何您想要的东西。运行两个容器需要两个服务。