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

运行docker-compose up启动Apache Airflow时遇镜像仓库名称格式错误

解决Docker Compose启动Apache Airflow时的镜像名格式错误

问题分析

你遇到的invalid reference format: repository name must be lowercase错误,核心原因是Docker强制要求镜像仓库名必须全小写。当前你的docker-compose.yaml配置存在两个关键问题:

  1. 依赖了不存在的airflow-mysql镜像,且未启用自定义镜像构建逻辑;
  2. 配置仍保留默认的PostgreSQL数据库连接,未完成MySQL的切换。

解决方案步骤

1. 调整镜像构建配置

修改x-airflow-common段的镜像设置,启用本地构建逻辑:

x-airflow-common:
  &airflow-common
  # 注释原镜像引用,启用本地构建
  # image: $${AIRFLOW_IMAGE_NAME:-airflow-mysql}
  build: .
  # 其余配置保持不变

修改后,Docker Compose会自动使用当前目录的Dockerfile构建镜像,镜像名默认采用小写的项目目录名(airflow-mysql),完全符合Docker的命名规范。

2. 替换数据库服务为MySQL

删除原postgres服务,添加MySQL服务,并更新Airflow的数据库连接配置:

services:
  # 替换原postgres服务为mysql
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: airflow
      MYSQL_DATABASE: airflow
      MYSQL_USER: airflow
      MYSQL_PASSWORD: airflow
    volumes:
      - mysql-db-volume:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "airflow", "-pairflow"]
      interval: 10s
      retries: 5
      start_period: 5s
    restart: always

  # 其余服务(redis、airflow-webserver等)保持不变

同时更新airflow-common-env中的数据库连接字符串:

environment:
  &airflow-common-env
  AIRFLOW__CORE__EXECUTOR: CeleryExecutor
  # 替换为MySQL连接字符串
  AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: mysql+pymysql://airflow:airflow@mysql/airflow
  AIRFLOW__CELERY__RESULT_BACKEND: db+mysql://airflow:airflow@mysql/airflow
  # 其余环境变量保持不变

3. 更新卷配置

将原PostgreSQL卷替换为MySQL卷:

volumes:
  mysql-db-volume:

4. 构建并启动服务

执行以下命令完成镜像构建和服务启动:

# 构建自定义Airflow镜像
docker-compose build

# 启动所有服务
docker-compose up

额外说明

Mac系统路径中的大写目录(如Users、Denzel)不会影响Docker的挂载和运行,无需修改系统目录;你的Dockerfile已经包含MySQL provider依赖,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:30:53