You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署MWAA本地Airflow容器持续重启报KeyError故障排查

问题场景

在Windows操作系统中基于Docker+Ubuntu搭建本地Airflow环境,部署使用AWS官方提供的aws-mwaa-local-runner工具,该工具会自动创建2个容器,分别用于运行数据库服务与Airflow服务。

故障表现

Airflow容器抛出两类异常后进入持续重启循环:

  1. 初始化报错提示:
ERROR: You need to initialize the database. Please run airflow db init. Make sure the command is run using Airflow version 2.3.2.
  1. 数据库初始化/升级流程中抛出Alembic版本迁移栈追踪错误,最终触发KeyError: '75d5ed6c2b43'异常,完整栈追踪信息如下:
Traceback (most recent call last):
File "/usr/local/bin/airflow", line 8, in 
sys.exit(main())
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/__main__.py", line 38, in main
args.func(args)
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/cli/cli_parser.py", line 51, in command
return func(*args, **kwargs)
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/cli/commands/db_command.py", line 35, in initdb
db.initdb()
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/utils/session.py", line 71, in wrapper
return func(*args, session=session, **kwargs)
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/utils/db.py", line 648, in initdb
upgradedb(session=session)
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/utils/session.py", line 68, in wrapper
return func(*args, **kwargs)
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/utils/db.py", line 1449, in upgradedb
command.upgrade(config, revision=to_revision or 'heads')
File "/usr/local/lib/python3.7/site-packages/alembic/command.py", line 294, in upgrade
script.run_env()
File "/usr/local/lib/python3.7/site-packages/alembic/script/base.py", line 490, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.7/site-packages/alembic/util/pyfiles.py", line 97, in load_python_file
module = load_module_py(module_id, path)
File "/usr/local/lib/python3.7/site-packages/alembic/util/compat.py", line 182, in load_module_py
spec.loader.exec_module(module)
File "", line 728, in exec_module
File "", line 219, in _call_with_frames_removed
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/migrations/env.py", line 107, in 
run_migrations_online()
File "/usr/local/airflow/.local/lib/python3.7/site-packages/airflow/migrations/env.py", line 101, in run_migrations_online
context.run_migrations()
File "", line 8, in run_migrations
File "/usr/local/lib/python3.7/site-packages/alembic/runtime/environment.py", line 813, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.7/site-packages/alembic/runtime/migration.py", line 548, in run_migrations
for step in self._migrations_fn(heads, self):
File "/usr/local/lib/python3.7/site-packages/alembic/command.py", line 283, in upgrade
return script._upgrade_revs(revision, rev)
File "/usr/local/lib/python3.7/site-packages/alembic/script/base.py", line 365, in _upgrade_revs
revs = list(revs)
File "/usr/local/lib/python3.7/site-packages/alembic/script/revision.py", line 1040, in _iterate_revisions
total_space.remove(rev.revision)
KeyError: '75d5ed6c2b43'
已尝试排查操作
  • 执行docker exec -it aws-mwaa-local-runner-202_local-runner_1 /entrypoint.sh airflow db upgrade命令升级数据库,仍抛出相同KeyError: '75d5ed6c2b43'错误
  • 先后执行docker exec -it aws-mwaa-local-runner-202_local-runner_1 /entrypoint.sh airflow initdb、docker exec -it aws-mwaa-local-runner-202_local-runner_1 /entrypoint.sh airflow reset命令重置、初始化Airflow数据库,依旧复现该KeyError错误,容器持续重启问题未解决
解决方案

该故障根因为数据库持久化卷中残留了与当前Airflow 2.3.2版本不匹配的Alembic迁移版本记录,容器内执行的数据库重置、初始化命令不会清理挂载在宿主机上的持久化卷数据,因此迁移校验持续失败。按以下步骤操作即可修复:

  1. 进入aws-mwaa-local-runner项目根目录,停止所有运行中的相关容器:
docker-compose down
  1. 清理残留的旧持久化数据卷:
    • 若本地无其他需要保留的Docker卷数据,直接执行全量清理:
    docker volume prune -f
    
    • 若需要保留其他项目的Docker卷,先过滤出MWAA相关的数据库卷,再单独删除:
    docker volume ls | grep mwaa
    docker volume rm 上一步查询到的目标卷名
    
    注意:该操作会清空本地所有旧的Airflow元数据、历史任务记录
  2. 确认残留容器和旧卷清理完成后,重新构建镜像并启动服务:
./mwaa-local-env build-image
./mwaa-local-env start
  1. 启动后等待1-2分钟,待初始化流程自动跑完即可正常访问本地Airflow控制台,不会再出现重启循环和KeyError报错。

如果执行完上述步骤仍复现问题,检查本地拉取的aws-mwaa-local-runner仓库分支/tag是否与目标MWAA 2.3.2版本完全对应,不要使用main分支代码构建镜像,避免镜像内置的迁移脚本与版本不匹配。


内容的提问来源于stack exchange,提问作者Alan Mil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 21:36:42