是否可以在 CloudRun 服务上运行 2 个容器?

时间:2021-04-19 14:09:47

标签: docker google-cloud-platform deployment

我正在尝试部署一个基于深度学习的应用程序进行图像处理,该应用程序使用用户验证和 Postgres 数据库来存储结果。以下是我的应用所需的架构。

enter image description here

为了让它长期免费使用,我决定在 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 配置。有没有人尝试过类似的东西?

1 个答案:

答案 0 :(得分:1)

Google Cloud Run 支持每个服务一个容器。您几乎可以在一个容器中运行任何您想要的东西。运行两个容器需要两个服务。