0%

centos7 使用 docker 部署 airflow

1. 检查docker及docker compose

1) 检查docker版本号

1
sudo docker --version

输出:

1
Docker version 26.1.4, build 5650f9b

因为我的这个版本中的docker是包含docker compose的, 就不需要单独安装 docker-compose 了

1
2
3
4
5
6
7
8
9
10
11
# 下载Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装
docker-compose --version

2) 安装docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker

# 将当前用户添加到docker组,避免每次使用sudo
sudo usermod -aG docker $USER

2. 安装 airflow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建Airflow目录
mkdir -p ~/airflow
cd ~/airflow

# 初始化Airflow环境
# airflow 的 docker-compose.yaml 文件可以去官网查看对应版本, 替换链接中版本号即可
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.2/docker-compose.yaml'

# 创建必要的目录
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env

# 初始化数据库
docker-compose up airflow-init

# 启动Airflow所有服务
docker-compose up -d

# 检查启动是否成功
docker ps

airflow所需内存最小4GB, 若服务器内存过小则很大概率启动失败

常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 进入airflow工作目录
cd ~/airflow

# 停止所有服务
docker compose down

# 查看日志
docker compose logs -f airflow-webserver

# 进入airflow容器
docker compose exec airflow-webserver bash

# 重启服务
docker compose restart

# 运行服务
odcker compose up -d

**若是docker版本低, 单独安装了docker-compose的话上方所有的 docker compose 需替换为 docker-compose **

3. 防火墙放开端口

1
2
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
  1. 若8080端口被占用则两种解决思路

    • 杀掉现存8080端口

      1
      2
      3
      4
      5
      # 查找占用8080端口的进程
      netstat -tulpn | grep 8080

      # 根据查找到的进程ID(PID)终止进程
      kill -9 <PID>
    • 修改 airflow-webserver 主机映射端口

      1
      2
      # 编辑docker-compose.yaml, nano可替换为 vi/vim
      sudo nano ~/airflow/docker-compose.yaml

      找到 webserver 部分的端口映射

      1
      2
      3
      4
      5
      services:
      webserver:
      # ... 其他配置
      ports:
      - "8080:8080" # 将这里的第一个8080改为其他未占用的端口,如8081:8080

      修改后保存文件,然后重新启动

      1
      2
      3
      4
      5
      6
      docker compose down

      docker compose up -d

      sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent # 替换为修改的端口号
      sudo firewall-cmd --reload
  2. 若是云服务器则无需执行所有带 firewall-cmd 的命令, 需要在安全组中添加入站端口, 端口填写修改的端口号, 添加完成后待 airflow-webserver 启动成功后使用浏览器访问 http://公网ip:端口号 默认登录账号为 airflow airflow

  3. 若是本地虚拟机则使用 ip addr 查看 ens33 的局域网ip地址, 待 airflow-webserver 启动成功后在主机使用浏览器访问 http://ip:端口号 默认登录账号为 airflow airflow

4. 修改账号密码

image-20250814142433888

image-20250814142537017