[英]How to install java in an airflow container using docker-compose.yaml
[英]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.