通过Dockerfile部署airflow容器

部署airflow容器讲究轻量化

分三个模块

1、部署airflow

2、安装rest-api插件

3、设置airflow的时钟与系统时钟同步

先拉取一个airflow的基础镜像

rest-api插件的安装包下载到本地服务器,详情可以参考

https://www.cnblogs.com/braveym/p/12069514.html

airflow的系统时间与宿主机的同步具体需要修改的内容可以参考

https://www.cnblogs.com/braveym/p/12664808.html

 其中Shanghai这个文件是宿主机的上海时区文件

编辑Dockerfile文件

FROM puckel/docker-airflow
RUN nohup airflow webserver>>$AIRFLOW_HOME/airflow-webserver.log 2>&1 &
RUN nohup airflow scheduler>>$AIRFLOW_HOME/airflow-scheduler.log 2>&1 &

#配置rest-api插件
RUN  pip install flask_jwt_extended -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
RUN cd /usr/local/airflow
RUN mkdir -p  plugins/templates/rest_api_plugin
COPY airflow-rest-api-plugin-1.0.3/plugins/rest_api_plugin.py /usr/local/airflow/plugins
COPY airflow-rest-api-plugin-1.0.3/plugins/templates/rest_api_plugin/index.html /usr/local/airflow/plugins/templates/rest_api_plugin

#配置AirFlow系统时钟与宿主机同步
COPY  timezone.py /usr/local/lib/python3.7/site-packages/airflow/utils/
COPY sqlalchemy.py /usr/local/lib/python3.7/site-packages/airflow/utils/
copy master.html /usr/local/lib/python3.7/site-packages/airflow/www/templates/admin/
RUN cd /etc
#RUN mv localtime localtime_bak
#RUN  cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY Shanghai /etc/localtime

在Dockerfile文件的目录下执行,创建一个airflow的镜像

sudo docker build -t="airflow" .

 

启动一个airflow的容器

docker run --net=bridge --name AirFlow1  -e MYSQL_IP_PORT="192.168.189.140:3306/airflow" -e MYSQL_USERNAME="root" -e MYSQL_PASSWORD="Admin123*" -v /usr/local/airflow/dags:/usr/local/airflow/dags -v /usr/local/airflow/airflowSql:/usr/local/airflow/airflowSql  -v /usr/local/airflow/airflow.cfg:/usr/local/airflow/airflow.cfg -id -p 8082:8080  --privileged=true   airflow

打开浏览器

由于我这里截图需要点时间,所以看到的是不同的时间,时间上是一样的

原文地址:https://www.cnblogs.com/braveym/p/13503549.html