我们的目录包含 dags
和 plugins
子目录。我们已经尝试了一个小时来使 Dockerfile
正常工作:
...
# Set AIRFLOW_HOME
ENV AIRFLOW_HOME="/root/airflow"
# Create airflow directory to populate it with dags
RUN mkdir -vp $AIRFLOW_HOME
## Import dags
ADD dags '${AIRFLOW_HOME}/dags'
ADD plugins '${AIRFLOW_HOME}/plugins'
...
无论我们尝试什么,都不会在指定路径下创建 dags
和 plugins
子目录。直到我们这样做:
ADD dags ${AIRFLOW_HOME}'/dags'
ADD plugins ${AIRFLOW_HOME}'/plugins'
I.E.从字符串括号下删除了 ${AIRFLOW_HOME}
......为什么会这样?你能解释一下我们做错了什么吗?
答案 0 :(得分:1)
主要错误是ADD源文件夹必须相对于docker文件上下文路径,所以不能使用绝对路径:
第二个错误是你不能将环境变量传递给一些docker命令,所以你必须使用ARG
。
这里有一个例子:
ARG AIRFLOW_HOME /root/airflow
WORKDIR ${AIRFLOW_HOME}
## Import dags
ADD dags {{dags target folder under WORKDIR}}
ADD plugins {{plugins target folder under WORKDIR}}
并记住将 dags
和 plugins
源文件夹放在 docker 上下文路径下。