我是靠谱客的博主 陶醉康乃馨,最近开发中收集的这篇文章主要介绍docker create_使用Docker-compose部署一个Airflow项目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

e6d83ae73fdc8234d48649340e625fc8.png

之前一直在本机使用Kubernetes部署Airflow项目,K8S很好,但对于小项目来说,不需要"杀鸡用牛刀",一般使用Docker-compose就行,这几天将一个Airflow项目改造适配后,使用Docker-compose部署到了腾讯云服务器。

Fork了一份puckel/docker-airflow的Airflow Dockerfile镜像文件,做了很多调整和修改,比如将Debian apt源换成清华的apt源,将PyPI官方PIP源换成豆瓣的PIP源等等,修改完后的Dockerfile放在benbendemo/docker-airflow仓库的develop分支下面。

主要修改内容如下,详细介绍请见develop分支README.md文件。

1. Add airflow-common-library-master utility
2. Update the default settings in airflow.cfg
3. Use Tsinghua Debian mirror to replace default Debian apt-get source, see apt-source.list
4. Add an email-templates for airflow to automatically send alert email and success email
5. Use Douban PIP mirror to replace default PIP source, see pip.conf
6. As for Dockerfile, i have added some more Debian apt packages and Python pip packages
7. In script/airflow_create_user.py, there are two ways to create airflow login user when RBAC enabled.Oh forget to inform that it's defaulted to enable RBAC in airflow.cfg

本地Build镜像测试成功后,我将其提交到Docker Hub仓库benbendemo/docker-airflow,并且设置了Automatical Build,以后只要提交git push修改develop分支的Dockerfile文件,Hub仓库就会自动Build一次版本。这样,每次使用docker pull bebendemo/docker-airflow:latest就可以拿到最新的版本。

eb3321daacde16d7d49b1792fd38510b.png

Airflow镜像搞定之后,需要安装dag文件,从我的私有仓库里拉取stockdata_dag文件,使用docker-compose up -d部署docker-compose.yml文件里定义的服务。

6df1b478930a0f7f2a3fb1b5a01a757d.png

重点介绍一下docker-compose.yml文件里的内容,是从puckel提供的docker-compose-LocalExecutor.yml基础上修改得来。

version: '3.0'
services:
    postgres:
        image: postgres:11.4
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow
        logging:
            options:
                max-size: 10m
                max-file: "3"
        labels:
            - "stockdata.postgres"
            - "stockdata"

    webserver:
        image: benbendemo/docker-airflow:latest
        restart: always
        depends_on:
            - postgres
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow
            - LOAD_EX=n
            - EXECUTOR=Local
            - SCHEDULE_INTERVAL=00 20 * * *
            - STOCKDATA_AIRFLOW_EMAIL_LIST=xxxx@163.com
            - K_DATA_CODE=600810
        logging:
            options:
                max-size: 10m
                max-file: "3"
        volumes:
            - ./dags:/usr/local/airflow/dags
            # - ./plugins:/usr/local/airflow/plugins
            - ./config/pip.conf:/etc/pip.conf
            - ./script/airflow_create_user.py:/usr/local/airflow/airflow_create_user.py
            - ./dags/stockdata_master/stockdata/requirements.txt:/requirements.txt
        ports:
            - "30810:8080"
        command: >
            webserver
        # user: root
        healthcheck:
            test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
            interval: 30s
            timeout: 30s
            retries: 3
        labels:
            - "stockdata.webserver"
            - "stockdata"

定义了postgres和webserver两个服务,webserver依赖postgres启动后才可以运行;其它内容我不细说,如果你的docker-compose版本与yml文件里不一致,直接修改version参数的版本即可;如果部署后发现Airflow task运行时无法写文件,添加user: root参数即可,puckle在Dockerfile里定义好了容器启动后默认使用airflow用户。

进入容器创建Airflow用户test,登录http://johnlyhello.club:10089,即可访问该Airflow服务,由于进行了权限控制,test用户只能浏览页面,没有任何页面操作权限。

872d4d54ba1d942f89c2db599b430f5c.png

软件开发是一个细腻的手艺活,这番部署之后,离一个真正面向客户发布的产品还有重要的几步要走,先记录为Todo事项,以后再来完善它。

Todo事项:
1.站点开启SSL服务
2.将webserver和scheduler分拆成两个容器部署
3.Flask app+Bootstrap前端页面

参考资料

Overview of Docker Compose​docs.docker.com
2de237c1c09db6885590a528400bf8f7.png
Docker Compose 配置文件详解​www.jianshu.com
0d14e7445320e2f25b4ee0c86000af97.png

微信公众号:dxy-nuanliu

原文网址:

https://bigbigben.com/2020/03/11/docker-compose-airfow-stockdata/​bigbigben.com

最后

以上就是陶醉康乃馨为你收集整理的docker create_使用Docker-compose部署一个Airflow项目的全部内容,希望文章能够帮你解决docker create_使用Docker-compose部署一个Airflow项目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部