将java与airflow和docker结合使用

o2gm4chl  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(373)

我有一个用例,我想通过airflow运行一个jar文件,所有这些文件都必须在mac上的docker容器中。
我尝试过单独安装java,也尝试过将javau home(主机)安装到容器上。
这是我的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 .
处理这个用例的正确方法是什么?

s3fp2yjn

s3fp2yjn1#

我想你会 Permission denied 因为你在用user运行docker 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,而不是安装本地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

相关问题