繁体   English   中英

将 Java 与 Airflow 和 Docker 一起使用

[英]Use Java with Airflow and Docker

我有一个用例,我想通过 Airflow 运行 jar 文件,所有这些都必须存在于 Mac 上的 Docker 容器中。

我尝试单独安装 java 并且尝试将我的 JAVA_HOME(host) 安装到容器上。

这是我的 docker-compose.yaml:

airflow:
    image: 'puckel/docker-airflow:1.10.9'
    hostname: airflow
    container_name: airflow
    volumes:
      - ${PWD}/airflow/dags:/usr/local/airflow/dags
      - ${JAVA_HOME}:/usr/local/bin/java //FWD MOUNTING JAVA_HOME

这样,我在 /usr/local/bin/ 中获得了 java 目录,其中包含数据,但java -version返回Permission denied 将其更改为${JAVA_HOME}/bin/java:/usr/local/bin/java会返回exec format error

处理这个用例的正确方法是什么?

我认为您正在获得Permission denied ,因为您正在与用户airflow

您可以尝试以root身份运行它吗? (这是有风险的。不要在生产中使用 - 这只是一种临时解决方法)。 避免使用root用户!

airflow:
    image: 'puckel/docker-airflow:1.10.9'
    hostname: airflow
    container_name: airflow
    user: root
    volumes:
      - ${PWD}/airflow/dags:/usr/local/airflow/dags
      - ${JAVA_HOME}:/usr/local/bin/java

编辑:不要安装本地 java,而是考虑安装一个单独的:

airflow:
    build:
      context: .
      dockerfile: Dockerfile
    hostname: airflow
    container_name: airflow
    volumes:
      - ${PWD}/airflow/dags:/usr/local/airflow/dags

并在同一目录中添加Dockerfile

FROM puckel/docker-airflow:1.10.9
USER root
RUN mkdir -p /usr/share/man/man1
RUN apt-get update && apt-get install -y default-jdk && apt-get clean
USER airflow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM