GCP Flex 模板错误:未在 envsetup 文件中设置 py 选项...错误等待容器:意外 EOF

Posted

技术标签:

【中文标题】GCP Flex 模板错误:未在 envsetup 文件中设置 py 选项...错误等待容器:意外 EOF【英文标题】:GCP Flex Template Error: py options not set in envsetup file ... error waiting for container: unexpected EOF 【发布时间】:2021-11-25 02:42:48 【问题描述】:

尝试将 dataflow flex 模板运行器与自定义 python 容器映像一起使用。

FROM gcr.io/dataflow-templates-base/python3-template-launcher-base

ARG WORKDIR=/dataflow/template
RUN mkdir -p $WORKDIR
WORKDIR $WORKDIR

COPY . .

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="$WORKDIR/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="$WORKDIR/pipeline_preprocess_preprocess_table.py"

RUN pip install -U -r ./requirements.txt

使用以下命令构建/运行容器:

gcloud builds submit --gcs-log-dir $GCSLOGDIR --tag $TEMPLATE_IMAGE .

gcloud dataflow flex-template build $TEMPLATE_PATH --image "$TEMPLATE_IMAGE" --sdk-language "PYTHON" --metadata-file $METADATA_FILE --network $NETWORK --subnetwork $SUBNETWORK --project $PROJECT --worker-region $REGION --service-account-email $SERVICE_ACCOUNT_EMAIL

gcloud dataflow flex-template run "<pipeline-name>-`date +%Y%m%d-%H%M%S` " --template-file-gcs-location $TEMPLATE_PATH --parameters <parameter_name>=<parameter_value>...repeat_for_ea --region "$REGION" --project ut-dws-udrc-dev --setup-file setup.py

管道使用直接运行器和数据流运行器在本地运行。不知道发生了什么。非常感谢任何帮助。

【问题讨论】:

你有没有机会解决这个问题? 【参考方案1】:

所以我们必须解决这个问题。 https://cloud.google.com/dataflow/docs/guides/templates/configuring-flex-templates 的文档在说谎,所有环境变量都需要定义,尽管它们可以为空。我们的Dockerfile 有这个:

ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/app/entrypoint.py"
ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="/app/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_OPTIONS=""
ENV FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES=""
ENV FLEX_TEMPLATE_PYTHON_SETUP_FILE=""

【讨论】:

以上是关于GCP Flex 模板错误:未在 envsetup 文件中设置 py 选项...错误等待容器:意外 EOF的主要内容,如果未能解决你的问题,请参考以下文章

将 GCP App Engine 限制为仅使用 1 个单元的 app engine flex core

iFrame 未在 Flex 弹出窗口中加载

flex-box 中的行换行未在 Safari 中换行

flex 布局中的图像未在 chrome 上保持纵横比

在 IE11 中,当单击其子元素之一时,焦点事件未在具有显示 flex 的可聚焦父 HTML 元素上触发

GCP Deployment Manager 模板是不是需要架构文件?