运行云上的本地数据流 运行
Running dataflow locally on Cloud Run
我正在尝试为流数据流自动进行功能测试。然而,流式数据流正在监听一个位于我们项目之外的发布子主题,我们无权访问发布消息以执行测试。
当我手动测试我的数据流时,我只是在本地 运行 它连接到我们可以控制发布消息的内部 pubsub 主题。
所以我想为我们的功能测试自动化同样的行为。
以下是我对此的想法,
- 运行 云中容器上的本地数据流(收听内部主题)运行
- 通过向内部主题发布消息开始功能测试
- 等待几秒钟,检查消息是否被处理到 BigQuery
对于第 1 步,我编写了以下 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 运行 控制台并尝试使用此图像创建服务。
为此,我收到以下错误,
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 运行 希望我提及服务可以侦听的端口。但是我的数据流并不是真正的网络应用程序,我没有在其中启动网络服务器。
关于如何解决这个问题有什么想法吗?
如果您没有 Web 应用程序在给定的 $PORT 编号上侦听 HTTP,则该应用程序不适合云 运行。
我正在尝试为流数据流自动进行功能测试。然而,流式数据流正在监听一个位于我们项目之外的发布子主题,我们无权访问发布消息以执行测试。 当我手动测试我的数据流时,我只是在本地 运行 它连接到我们可以控制发布消息的内部 pubsub 主题。 所以我想为我们的功能测试自动化同样的行为。 以下是我对此的想法,
- 运行 云中容器上的本地数据流(收听内部主题)运行
- 通过向内部主题发布消息开始功能测试
- 等待几秒钟,检查消息是否被处理到 BigQuery
对于第 1 步,我编写了以下 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 运行 控制台并尝试使用此图像创建服务。 为此,我收到以下错误,
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 运行 希望我提及服务可以侦听的端口。但是我的数据流并不是真正的网络应用程序,我没有在其中启动网络服务器。
关于如何解决这个问题有什么想法吗?
如果您没有 Web 应用程序在给定的 $PORT 编号上侦听 HTTP,则该应用程序不适合云 运行。