常用环境部署(五)——Docker部署airflow和Centos安装Python3.5
一、CentOS 7下安装Python3.51、安装python3.5可能使用的依赖yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel2、下载Pythoncd /datawget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz3、解压下载的安装包tar -zxvf Python-3.5.0.tgz4、配置编译sudo mkdir /data/python3 cd /data/Python-3.5.0 ./configure --prefix/data/python3 make make install5、备份旧版本python链接新版本python在/usr/bin中有python、python2、python2.7三个文件依次指向后者sudo mv python python.bak sudo ln -s /data/python3/bin/python3 /usr/bin/python6、修改yum配置文件sudo vi /usr/bin/yum将第一行指定的python2.7版本改为python(#!/usr/bin/python2.7 改为 #!/usr/bin/python)7、执行命令python可以看到python版本为3.5.0退出命令exit()二、Docker-compose部署airflow1、在服务器上新建目录/data/airflowmkdir -p /data/airflow2、在/data/airflow/目录下新建一个文件docker-compose.yml打开文件输入下面内容然后保存。# 下载地址 curl -LfO https://airflow.apache.org/docs/apache-airflow/2.2.5/docker-compose.yamlvim docker-compose.yml# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # License); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # Basic Airflow cluster configuration for CeleryExecutor with Redis and PostgreSQL. # # WARNING: This configuration is for local development. Do not use it in a production deployment. # # This configuration supports basic configuration using environment variables or an .env file # The following variables are supported: # # AIRFLOW_IMAGE_NAME - Docker image name used to run Airflow. # Default: apache/airflow:2.2.5 # AIRFLOW_UID - User ID in Airflow containers # Default: 50000 # Those configurations are useful mostly in case of standalone testing/running Airflow in test/try-out mode # # _AIRFLOW_WWW_USER_USERNAME - Username for the administrator account (if requested). # Default: airflow # _AIRFLOW_WWW_USER_PASSWORD - Password for the administrator account (if requested). # Default: airflow # _PIP_ADDITIONAL_REQUIREMENTS - Additional PIP requirements to add when starting all containers. # Default: # # Feel free to modify this file to suit your needs. --- version: 3 x-airflow-common: airflow-common # In order to add custom dependencies or upgrade provider packages you can use your extended image. # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml # and uncomment the build line below, Then run docker-compose build to build the images. image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.2.5} # build: . environment: airflow-common-env AIRFLOW__CORE__EXECUTOR: CeleryExecutor AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresqlpsycopg2://airflow:airflowpostgres/airflow AIRFLOW__CELERY__RESULT_BACKEND: dbpostgresql://airflow:airflowpostgres/airflow AIRFLOW__CELERY__BROKER_URL: redis://:redis:6379/0 AIRFLOW__CORE__FERNET_KEY: AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: true AIRFLOW__CORE__LOAD_EXAMPLES: true AIRFLOW__API__AUTH_BACKEND: airflow.api.auth.backend.basic_auth _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-} volumes: - ./dags:/opt/airflow/dags - ./logs:/opt/airflow/logs - ./plugins:/opt/airflow/plugins user: ${AIRFLOW_UID:-50000}:0 depends_on: airflow-common-depends-on redis: condition: service_healthy postgres: condition: service_healthy services: postgres: image: postgres:latest privileged: true environment: POSTGRES_USER: airflow POSTGRES_PASSWORD: airflow POSTGRES_DB: airflow volumes: - postgres-db-volume:/var/lib/postgresql/data healthcheck: test: [CMD, pg_isready, -U, airflow] interval: 5s retries: 5 restart: always redis: image: redis:latest expose: - 6379 healthcheck: test: [CMD, redis-cli, ping] interval: 5s timeout: 30s retries: 50 restart: always airflow-webserver: : *airflow-common command: webserver ports: - 8080:8080 healthcheck: test: [CMD, curl, --fail, http://localhost:8080/health] interval: 10s timeout: 10s retries: 5 restart: always depends_on: : *airflow-common-depends-on airflow-init: condition: service_completed_successfully airflow-scheduler: : *airflow-common command: scheduler healthcheck: test: [CMD-SHELL, airflow jobs check --job-type SchedulerJob --hostname $${HOSTNAME}] interval: 10s timeout: 10s retries: 5 restart: always depends_on: : *airflow-common-depends-on airflow-init: condition: service_completed_successfully airflow-worker: : *airflow-common command: celery worker healthcheck: test: - CMD-SHELL - celery --app airflow.executors.celery_executor.app inspect ping -d celery$${HOSTNAME} interval: 10s timeout: 10s retries: 5 environment: : *airflow-common-env # Required to handle warm shutdown of the celery workers properly # See https://airflow.apache.org/docs/docker-stack/entrypoint.html#signal-propagation DUMB_INIT_SETSID: 0 restart: always depends_on: : *airflow-common-depends-on airflow-init: condition: service_completed_successfully airflow-triggerer: : *airflow-common command: triggerer healthcheck: test: [CMD-SHELL, airflow jobs check --job-type TriggererJob --hostname $${HOSTNAME}] interval: 10s timeout: 10s retries: 5 restart: always depends_on: : *airflow-common-depends-on airflow-init: condition: service_completed_successfully airflow-init: : *airflow-common entrypoint: /bin/bash # yamllint disable rule:line-length command: - -c - | function ver() { printf %04d%04d%04d%04d $${1//./ } } airflow_version$$(gosu airflow airflow version) airflow_version_comparable$$(ver $${airflow_version}) min_airflow_version2.2.0 min_airflow_version_comparable$$(ver $${min_airflow_version}) if (( airflow_version_comparable min_airflow_version_comparable )); then echo echo -e \033[1;31mERROR!!!: Too old Airflow version $${airflow_version}!\e[0m echo The minimum Airflow version supported: $${min_airflow_version}. Only use this or higher! echo exit 1 fi if [[ -z ${AIRFLOW_UID} ]]; then echo echo -e \033[1;33mWARNING!!!: AIRFLOW_UID not set!\e[0m echo If you are on Linux, you SHOULD follow the instructions below to set echo AIRFLOW_UID environment variable, otherwise files will be owned by root. echo For other operating systems you can get rid of the warning with manually created .env file: echo See: https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#setting-the-right-airflow-user echo fi one_meg1048576 mem_available$$(($$(getconf _PHYS_PAGES) * $$(getconf PAGE_SIZE) / one_meg)) cpus_available$$(grep -cE cpu[0-9] /proc/stat) disk_available$$(df / | tail -1 | awk {print $$4}) warning_resourcesfalse if (( mem_available 4000 )) ; then echo echo -e \033[1;33mWARNING!!!: Not enough memory available for Docker.\e[0m echo At least 4GB of memory required. You have $$(numfmt --to iec $$((mem_available * one_meg))) echo warning_resourcestrue fi if (( cpus_available 2 )); then echo echo -e \033[1;33mWARNING!!!: Not enough CPUS available for Docker.\e[0m echo At least 2 CPUs recommended. You have $${cpus_available} echo warning_resourcestrue fi if (( disk_available one_meg * 10 )); then echo echo -e \033[1;33mWARNING!!!: Not enough Disk space available for Docker.\e[0m echo At least 10 GBs recommended. You have $$(numfmt --to iec $$((disk_available * 1024 ))) echo warning_resourcestrue fi if [[ $${warning_resources} true ]]; then echo echo -e \033[1;33mWARNING!!!: You have not enough resources to run Airflow (see above)!\e[0m echo Please follow the instructions to increase amount of resources available: echo https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#before-you-begin echo fi mkdir -p /sources/logs /sources/dags /sources/plugins chown -R ${AIRFLOW_UID}:0 /sources/{logs,dags,plugins} exec /entrypoint airflow version # yamllint enable rule:line-length environment: : *airflow-common-env _AIRFLOW_DB_UPGRADE: true _AIRFLOW_WWW_USER_CREATE: true _AIRFLOW_WWW_USER_USERNAME: ${_AIRFLOW_WWW_USER_USERNAME:-airflow} _AIRFLOW_WWW_USER_PASSWORD: ${_AIRFLOW_WWW_USER_PASSWORD:-airflow} user: 0:0 volumes: - .:/sources airflow-cli: : *airflow-common profiles: - debug environment: : *airflow-common-env CONNECTION_CHECK_MAX_COUNT: 0 # Workaround for entrypoint issue. See: https://github.com/apache/airflow/issues/16252 command: - bash - -c - airflow flower: : *airflow-common command: celery flower ports: - 5555:5555 healthcheck: test: [CMD, curl, --fail, http://localhost:5555/] interval: 10s timeout: 10s retries: 5 restart: always depends_on: : *airflow-common-depends-on airflow-init: condition: service_completed_successfully volumes: postgres-db-volume:# 按下Esc :wq1把这两个参数改成下面下个选择postgres的latest版本privilegedtrue就是提升权限image: postgres:latest privileged: true2在这里你用docker-compose config -q是会一个警告的为了不报这个警告官网也推荐了以下这个方式mkdir -p ./dags ./logs ./plugins echo -e AIRFLOW_UID$(id -u) .env3接执行即可可以查看到.env.env是隐藏文件的内容是有AIRFLOW_UID0初始化docker-compose up airflow-init3、docker-compose后台启动airflowdocker-compose -f docker-compose.yaml up -d4、默认是8080端口注意不要和Tomcat冲突了浏览器访问http://IP:8080 默认账号airflow 默认密码airflow

相关新闻

Flutter 本地存储

Flutter 本地存储

文章目录Flutter 本地存储SharedPreferences添加依赖获取实例写入读取删除清空SQLite添加依赖定义数据库定义数据模型DAO(数据访问对象)使用文件存储添加依赖常用目录文件操作目录操作Flutter 本地存储 SharedPreferences 类型:键值对适应场景:存放简单…

2026/8/1 19:21:34 阅读更多 →
Hermes Agent 架构解析——底层如何工作

Hermes Agent 架构解析——底层如何工作

23. Hermes Agent 架构解析——底层如何工作 要看懂一个 Agent 框架,先看它的骨架。本篇带你从入口点到子系统,理清 Hermes Agent 的内部结构和数据流,在代码库中快速定位自己。 系统全景:多个入口,一个核心 Hermes…

2026/8/1 19:21:34 阅读更多 →
河南省第一届职业技能大赛网络安全项目A模块公开新题

河南省第一届职业技能大赛网络安全项目A模块公开新题

A-8数据库加固任务环境说明:(Linux)系统:用户名root,密码123456删除默认数据库(test);改变默认MySql管理员用户为:SuperRoot;使用MySql内置MD5加密函数加密用户user1的密码为(Pssw0rd1!);赋予user1用户对数据库所有表只有select、…

2026/8/1 19:21:34 阅读更多 →

最新新闻

猫抓浏览器扩展:三步轻松下载网页视频的完整指南

猫抓浏览器扩展:三步轻松下载网页视频的完整指南

猫抓浏览器扩展:三步轻松下载网页视频的完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存网页上的精彩视频而烦恼…

2026/8/1 20:05:07 阅读更多 →
Python爬虫实战:B站弹幕数据采集与解析全流程详解

Python爬虫实战:B站弹幕数据采集与解析全流程详解

1. 项目概述:从B站弹幕数据说起最近在分析一些视频内容时,发现弹幕数据是个非常有意思的观察窗口。它不仅仅是屏幕上飘过的文字,更是观众情绪、关注点、甚至文化梗的实时映射。无论是想研究某个热门话题的舆论走向,还是分析一部剧…

2026/8/1 20:05:07 阅读更多 →
如何用3分钟搞定全网歌曲歌词?163MusicLyrics终极歌词解决方案

如何用3分钟搞定全网歌曲歌词?163MusicLyrics终极歌词解决方案

如何用3分钟搞定全网歌曲歌词?163MusicLyrics终极歌词解决方案 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为找不到合适的歌词而烦恼吗?还…

2026/8/1 20:05:07 阅读更多 →
Lean量化交易引擎完整指南:从零构建专业级算法交易系统

Lean量化交易引擎完整指南:从零构建专业级算法交易系统

Lean量化交易引擎完整指南:从零构建专业级算法交易系统 【免费下载链接】Lean Lean Algorithmic Trading Engine by QuantConnect (Python, C#) 项目地址: https://gitcode.com/GitHub_Trending/le/Lean Lean量化交易引擎是QuantConnect开发的开源算法交易平…

2026/8/1 20:05:07 阅读更多 →
MATLAB数据导出CSV全攻略:从基础函数到海量数据处理

MATLAB数据导出CSV全攻略:从基础函数到海量数据处理

1. 从数据到文件:为什么CSV是MATLAB数据导出的首选在数据分析、仿真和科研的日常里,我们常常在MATLAB里完成核心计算,得到一堆宝贵的矩阵、表格或结构体。但故事往往不会在MATLAB的命令窗口里结束。你需要把结果交给同事、导入到数据库、用其…

2026/8/1 20:05:07 阅读更多 →
终极指南:如何高效使用Python命令行工具突破百度网盘下载限制

终极指南:如何高效使用Python命令行工具突破百度网盘下载限制

终极指南:如何高效使用Python命令行工具突破百度网盘下载限制 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download 在数字时代,百度网盘作为国内主流的云存储服务&#xff0c…

2026/8/1 20:04:07 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →