有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将Java与Airflow和Docker结合使用

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

我尝试过单独安装java,也尝试过将java_HOME(主机)安装到容器上

这是我的码头工人。亚马尔:

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

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


共 (1) 个答案

  1. # 1 楼答案

    我认为您得到了Permission denied,因为您正在使用用户airflow运行docker

    你能试着把它作为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