Ошибка шаблона GCP Flex: параметры py не заданы в файле envsetup … ошибка ожидания контейнера: неожиданный EOF

# #python #google-cloud-platform #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. Тебе случайно не удалось это исправить?

Ответ №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=""