在Cloud Run上本地运行数据流

时间:2020-10-12 20:34:14

标签: google-cloud-dataflow google-cloud-run

我正在尝试针对流数据流自动执行功能测试。但是,流数据流正在侦听位于项目外部的pub子主题,在该子主题中,我们无权访问用于执行测试的发布消息。 当我手动测试数据流时,我只是在本地运行它,然后连接到我们内部的pubsub主题,在这里我们可以控制发布消息。 因此,我想针对我们的功能测试自动执行相同的行为。 以下是我对此的想法,

  1. 在Cloud Run中的容器上本地运行数据流(侦听内部主题)
  2. 通过向内部主题发布消息开始功能测试
  3. 等待几秒钟,然后检查是否已将邮件处理到BigQuery

对于step1,我编写了以下docker文件(为简单起见,一些命令已被排除在外),

# Use the official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.8-slim

# Allow statements and log messages to immediately appear in the Knative logs
ENV PYTHONUNBUFFERED True

#Install git
RUN apt-get update \
    && apt-get install -y git

# Make ssh dir
RUN mkdir /root/.ssh/

# Copy over private key, and set permissions

#Change directory and clone git repo

#Set working directory and authenticate service account

# Install dependencies
RUN pip install -r requirements.txt

# Run dataflow locally
CMD ["python", "main.py", "deploy", "local"]

然后,我构建了在Container Registry中创建该图像的图像。 然后,我进入了云运行控制台,并尝试使用该映像创建服务。 我收到以下错误,

Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information. Logs URL: https://console.cloud.google.com/logs/viewer?project=xxxxxxxx&resource=cloud_run_revision/service_name/consume-sales-order-functional-test/revision_name/consume-sales-order-functional-test-00002-vib&advancedFilter=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22consume-sales-order-functional-test%22%0Aresource.labels.revision_name%3D%22consume-sales-order-functional-test-00002-vib%22

我知道我收到此错误,可能是因为Cloud run希望我提到一个可以监听服务的PORT。但是我的数据流实际上不是一个不启动Web服务器的Web应用程序。

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

如果您没有Web应用程序在给定的$ PORT编号上侦听HTTP,则该应用程序不适合Cloud Run。