我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用Docker快速搭建Airflow+MySQL详细步骤

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用Docker快速搭建Airflow+MySQL详细步骤

为了使用 Docker 安装 Apache Airflow 2.9.3 并配置 mysql 数据库并确保数据持久化,我们可以使用 Docker Compose。以下是详细步骤:

步骤 1:创建项目目录

在你的工作目录中创建一个新目录来存放所有相关的配置文件和脚本。

mkdir airflow-mysql
cd airflow-mysql

步骤 2:创建 docker-compose.yml 文件

在项目目录中创建一个名为 docker-compose.yml 的文件,内容如下:

version: '3.7'
services:
  mysql:
    image: mysql:8.0.27
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: airflow
      MYSQL_USER: airflow
      MYSQL_PASSWORD: airflowpassword
      MYSQL_CHARSET: utf8mb4
      MYSQL_COLLATION: utf8mb4_general_ci
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
  airflow-webserver:
    image: apache/airflow:2.9.3
    environment:
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: mysql+mysqldb://airflow:airflowpassword@mysql:3306/airflow
      AIRFLOW__CORE__FERNET_KEY: 'YOUR_FERNET_KEY'
      AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
      AIRFLOW__WEBSERVER__RBAC: 'true'
    depends_on:
      - mysql
    ports:
      - "8080:8080"
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    command: ["bash", "-c", "airflow db init && airflow users create -r Admin -u admin -p admin -e admin@example.com -f Admin -l User && airflow webserver"]
  airflow-scheduler:
    image: apache/airflow:2.9.3
    environment:
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: mysql+mysqldb://airflow:airflowpassword@mysql:3306/airflow
      AIRFLOW__CORE__FERNET_KEY: 'YOUR_FERNET_KEY'
      AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
      AIRFLOW__WEBSERVER__RBAC: 'true'
    depends_on:
      - mysql
    volumes:
      - ./dags:/opt/airflow/dags
      - ./logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    command: ["bash", "-c", "airflow scheduler"]
volumes:
  mysql_data:

请注意,YOUR_FERNET_KEY 需要替换为一个实际的 Fernet 密钥,可以通过以下命令生成:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

步骤 3:创建目录结构

为 Airflow 的 DAGs、日志和插件创建目录:

mkdir -p dags logs plugins
chmod -R 777 dags logs plugins

步骤 4:启动 Docker Compose

在项目目录中运行以下命令来启动所有服务:

docker-compose up -d

步骤 5:检查服务状态

你可以使用以下命令查看正在运行的容器:

docker-compose ps

步骤 6:访问 Airflow Web UI

打开浏览器并访问 http://localhost:8080,你应该能够看到 Airflow 的登录页面。使用以下默认凭据登录:

  • 用户名:admin
  • 密码:admin

解释

服务定义

  • mysql: 使用 MySQL 8.0.27 镜像,设置数据库名称、用户和密码,并将数据持久化到 mysql_data 卷中。
  • airflow-webserver: 使用 Airflow 2.9.3 镜像,配置连接 MySQL 的连接字符串,初始化数据库并创建管理员用户,然后启动 Airflow Webserver。
  • airflow-scheduler: 使用 Airflow 2.9.3 镜像,配置连接 MySQL 的连接字符串,并启动 Airflow Scheduler。

数据持久化

  • MySQL 数据通过 Docker 卷 mysql_data 持久化。
  • Airflow 的 DAGs、日志和插件通过绑定挂载到主机的目录 ./dags./logs./plugins

其他配置

环境变量说明

  • AIRFLOW__CORE__EXECUTOR: LocalExecutor 表示使用本地执行器。
  • AIRFLOW__CORE__SQL_ALCHEMY_CONN: 设置 Airflow 连接 MySQL 的连接字符串。格式为 mysql+mysqldb://<username>:<password>@<host>:<port>/<database>
  • AIRFLOW__CORE__FERNET_KEY: 用于加密连接密码的密钥。可以通过 python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" 生成这个密钥。
  • AIRFLOW__CORE__LOAD_EXAMPLES: 设置为 false 表示不加载示例 DAGs,以保持环境干净。
  • AIRFLOW__WEBSERVER__RBAC: 启用基于角色的访问控制。

Docker Compose 配置说明

  • depends_on: 确保 MySQL 服务在 Airflow 服务之前启动。
  • volumes: 用于持久化数据和共享文件。MySQL 数据存储在 mysql_data 卷中;Airflow 的 DAGs、日志和插件分别绑定挂载到主机的 ./dags./logs./plugins 目录。
  • command: 定义容器启动时要运行的命令。对于 airflow-webserver 服务,首先初始化数据库并创建管理员用户,然后启动 Airflow Webserver。对于 airflow-scheduler 服务,启动 Airflow Scheduler。

确保持久化

持久化数据是确保服务重启后数据不会丢失的关键。我们使用 Docker 卷来持久化 MySQL 数据,并使用绑定挂载来持久化 Airflow 的 DAGs、日志和插件。

启动和管理容器

启动容器

docker-compose up -d

查看容器状态

docker-compose ps

查看日志

docker-compose logs -f

停止和删除容器

docker-compose down

进一步配置和优化

安全性

更改默认密码
默认的管理员密码为 admin,建议在第一次登录后立即更改密码。

使用环境变量保护敏感信息
避免将敏感信息直接写入 docker-compose.yml 文件,可以使用 Docker Secrets 或环境变量来保护敏感信息。

资源限制

根据你的硬件资源,可以在 docker-compose.yml 中为容器设置资源限制:

airflow-webserver:
  ...
  deploy:
    resources:
      limits:
        cpus: '0.50'
        memory: '512M'
  ...

日志管理

确保日志文件不会无限制地增长,可以在 docker-compose.yml 中配置日志选项:

airflow-webserver:
  ...
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "3"
  ...

备份和恢复

定期备份 MySQL 数据库和 Airflow 配置,以防止数据丢失。你可以使用 cron jobs 或其他备份工具来实现这一点。

扩展性

如果需要扩展到多个节点,可以考虑使用 CeleryExecutor 或 KubernetesExecutor。CeleryExecutor 需要额外的配置和 Redis/RabbitMQ 作为消息队列。

示例 DAG 创建

dags 目录中创建一个简单的示例 DAG 文件,例如 example_dag.py

from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime, timedelta
default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}
with DAG(
    'example_dag',
    default_args=default_args,
    description='A simple example DAG',
    schedule_interval=timedelta(days=1),
    start_date=datetime(2023, 1, 1),
    catchup=False,
) as dag:
    t1 = BashOperator(
        task_id='print_date',
        bash_command='date',
    )
    t2 = BashOperator(
        task_id='sleep',
        bash_command='sleep 5',
    )
    t1 >> t2

这将创建一个简单的 DAG,包含两个任务:打印当前日期和等待 5 秒。

监控和日志

Airflow 提供了丰富的监控和日志功能,可以帮助你跟踪任务的执行状态和性能。

Airflow Web UI
通过 Web UI 查看 DAG 和任务的状态、日志和图形化表示。

日志文件
查看容器内的日志文件,了解更多详细信息。

docker-compose logs airflow-webserver
docker-compose logs airflow-scheduler

更新和升级

定期更新 Airflow 和相关依赖项,以确保获得最新的功能和安全补丁。

更新 Docker 镜像

docker pull apache/airflow:2.9.3
docker-compose up -d

更新 MySQL 镜像

docker pull mysql:8.0.27
docker-compose up -d

结论

通过这些步骤,你可以成功地使用 Docker 和 MySQL 部署和配置 Apache Airflow 2.9.3

验证 Docker 容器是否成功启动,可以使用一系列命令来检查容器的状态和日志。以下是一些常用的命令和步骤:

1. 检查容器状态

使用 docker ps 命令查看正在运行的容器:

docker ps

这个命令会列出所有正在运行的容器,包括它们的容器 ID、名称、状态等。

如果要查看所有容器(包括停止的),可以使用 -a 选项:

docker ps -a

2. 查看容器日志

查看特定容器的日志可以帮助你了解容器是否正常启动,并排除潜在的错误。使用 docker logs 命令:

docker logs <container_id_or_name>

你还可以使用 -f 选项来实时跟踪日志输出:

docker logs -f <container_id_or_name>

3. 使用 Docker Compose 验证

如果你使用的是 Docker Compose,可以使用以下命令查看所有服务的状态:

docker logs -f <container_id_or_name>

查看所有服务的日志:

docker-compose logs

实时查看日志:

docker-compose logs -f

4. 具体示例

假设你有一个名为 airflow-webserver 的容器,以下是如何验证它是否成功启动的步骤:

检查容器状态

docker ps

你应该看到类似以下的输出:

CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS         PORTS                    NAMES
abc123def456   apache/airflow:2.9.3    "/entrypoint.sh airf…"   2 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp   airflow-webserver

如果容器状态是 Up,表明容器正在运行。

查看容器日志

docker logs airflow-webserver

你应该看到 Airflow Webserver 的启动日志,确认没有错误信息。

实时跟踪日志

docker logs -f airflow-webserver

实时查看容器的输出,确保没有任何问题。

使用 Docker Compose 验证

docker-compose ps

你应该看到类似以下的输出:

   Name                     Command               State                                  Ports
-----------------------------------------------------------------------------------------------------------
airflow-mysql_mysql_1      docker-entrypoint.sh mysqld      Up             3306/tcp
airflow-mysql_webserver_1  /entrypoint.sh airflow w ...     Up (healthy)   0.0.0.0:8080->8080/tcp
airflow-mysql_scheduler_1  /entrypoint.sh airflow s ...     Up

查看所有服务的日志

docker-compose logs

实时查看所有服务的日志

docker-compose logs -f

5. 健康检查

一些 Docker 镜像提供了健康检查功能,可以通过 docker ps 命令中的 STATUS 列查看健康状态。如果镜像支持健康检查,你会看到类似 Up (healthy) 的状态。

6. 访问 Web UI

最终,你可以通过浏览器访问相应的服务 URL 以验证服务是否正常运行。例如,对于 Airflow Webserver,你可以访问 http://localhost:8080,如果能够看到 Airflow 的登录页面,说明 Webserver 已经成功启动。

总结

通过这些命令和步骤,可以有效地验证 Docker 容器是否成功启动,并通过查看日志和状态排除潜在的错误。

到此这篇关于使用Docker快速搭建Airflow+MySQL详细步骤的文章就介绍到这了,更多相关Docker 搭建Airflow MySQL内容请搜索编程网(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.lsjlt.com)!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用Docker快速搭建Airflow+MySQL详细步骤

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用Docker快速搭建Airflow+MySQL详细步骤

目录步骤 1:创建项目目录步骤 2:创建 docker-compose.yml 文件步骤 3:创建目录结构步骤 4:启动 Docker Compose步骤 5:检查服务状态步骤 6:访问 Airflow Web UI确保持久化启动和管理容器
使用Docker快速搭建Airflow+MySQL详细步骤
2024-09-25

在Docker快速部署Node.js应用的详细步骤

一、前言 可能还有一些同学不了解docker这个项目,docker是由go语言编写的,一个快速部署的轻量级虚拟技术项目,他允许开发人员将自己的程序和运行环境一起打包,制作成一个docker的image(镜像),这样部署到服务器上,也只需要下
2022-06-04

使用vscode搭建javaweb项目的详细步骤

我个人是很喜欢VsCode的,开源免费、功能全面,所以为了方便,我把我几乎所有的运行都集成到了VsCode上来,JavaWeb也不例外,下面这篇文章主要给大家介绍了关于使用vscode搭建javaweb项目的相关资料,需要的朋友可以参考下
2022-11-13

使用Docker快速搭建Nginx+PHP-FPM+MySQL+phpMyAdmin环境

环境介绍操作系统:centos 7.6docker版本:19.03.8ip地址:192.168.31.34本文将介绍如何使用单机部署Nginx+PHP-FPM环境拉取镜像dockerpullgaciaga/nginx-vts:latestd
2023-01-31

使用Docker搭建MySQL主从数据库的方法步骤

目录1. 准备主服务器2. 准备从服务器3. 启动主从同步4. 实现主从同步5. 停止和重置很多人对主从数据库有一个误区,把多个mysql搭建在同一个服务器上,性能提升是不是很有限?这个理念是错误的,数据库的性能瓶颈主要是在IO和CPU负载
2023-01-11

编程热搜

目录