如何使用 docker-compose.yaml 在气流容器中安装 java

问题描述 投票:0回答:3

我正在使用这个 docker-compose.yaml 文件在 docker 容器上运行气流。

https://airflow.apache.org/docs/apache-airflow/2.0.2/docker-compose.yaml

我需要在其中一个容器中安装 JRE。如何添加指令以将 java 添加到 docker-compose.yaml 文件?

java docker-compose airflow
3个回答
6
投票

尝试以下操作:

在您还拥有 docker-compose.yml 的目录中创建以下 Dockerfile:

FROM apache/airflow:2.0.2

USER root

# Install OpenJDK-11
RUN apt update && \
    apt-get install -y openjdk-11-jdk && \
    apt-get install -y ant && \
    apt-get clean;

# Set JAVA_HOME
ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/
RUN export JAVA_HOME

USER airflow

WORKDIR /app

COPY requirements.txt /app

RUN pip install --trusted-host pypi.python.org -r requirements.txt

为了通过 apt 安装软件包,您必须切换到 root 用户。稍后,我们切换回用户气流。工作目录的规范以及通过requirements.txt安装python包可能不适用,具体取决于您的情况。

然后,在 docker-compose.yml 中,在

build: .
之后添加
&airflow-common

最后,使用

docker-compose up -d --build
构建管道。

有关更多信息,请查看此处:https://airflow.apache.org/docs/docker-stack/build.html#building-the-image


0
投票

您必须构建自己的气流图像。 在您的 Dockerfile 中,您必须安装气流并导出 JAVA_HOME。

Dockerfile 示例:

FROM apache/airflow:2.5.1
USER root
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
         openjdk-11-jre-headless \
  && apt-get autoremove -yqq --purge \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
USER airflow
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
RUN pip install --no-cache-dir apache-airflow-providers-apache-spark==2.1.3

构建命令示例:

docker build -t airflow-with-java .

成功构建镜像后,通过替换气流镜像来编辑 docker-compose:


x-airflow-common:
  &airflow-common
  image: ${AIRFLOW_IMAGE_NAME:-airflow-with-java}

更多信息您可以在这里查看:https://airflow.apache.org/docs/docker-stack/build.html


0
投票

我基本上用 Leandro 的答案解决了这个问题,但我需要更高的气流版本。

这是我的 Dockerfile:

FROM apache/airflow:2.9.1

# Install JDK
USER root
RUN apt-get update
RUN apt install -y default-jdk
RUN apt-get autoremove -yqq --purge
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
USER airflow
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

其他文件与原始答案中相同。

© www.soinside.com 2019 - 2024. All rights reserved.