我有点费劲地想把用 python 编写并由 flink 执行的光束管道容器化。根据官方文档,我认为修改现有容器镜像以使其与 Apache Beam Runners 兼容将是一个不错的选择。
我创建了这个 dockerfile,但现在我为如何添加 flink 以及如何使它们协同工作而苦恼。通过简单地在 dockerfile 中添加带有
beam_flink1.14_job_server
或 flink:1.14.6
图像的另一层是否可以工作?
FROM python:3.7-slim-buster
WORKDIR /pipeline
# Set the entrypoint to Apache Beam SDK worker launcher.
COPY --from=apache/beam_python3.7_sdk:2.38.0 /opt/apache/beam /opt/apache/beam
ENTRYPOINT [ "/opt/apache/beam/boot"]
# Install Java
RUN apt-get update \
&& apt-get update && apt-get install -y --no-install-recommends openjdk-11-jre
# Install Python dependencies
COPY requirements.txt ./
RUN python3.7 -m pip install --upgrade pip
RUN python3.7 -m pip install -r requirements.txt
# Set JAVA HOME
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV PATH="$JAVA_HOME/bin:$PATH"
# Copy Beam Pipeline
COPY config.json ./
COPY run_pipeline.py ./
CMD ["python3.7", "run_pipeline.py"]
我的 python 管道默认情况下在后台启动
apache/beam_java11_sdk:2.43.0
(我假设是由于 ReadFromKafka/WriteToKafka,它们不是 python 原生的)。这将通过在 dockerfile 中安装 java 来处理吗?
提前感谢您的帮助