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

Docker Compose中depends_on引用未声明服务:Datahub部署疑问

Datahub Docker Compose中mysql-setup服务配置位置说明
  • 你找不到mysql相关服务定义的核心原因:Datahub的Docker Compose部署采用了多文件拆分的方式,主docker-compose.yml仅包含核心业务服务,数据库、ES这类依赖服务的配置被拆分到配套的扩展文件中。
  • 具体来说,mysql-setup和mysql服务的配置默认存放在同目录下的docker-compose.override.yml文件中,这个文件会和主compose文件自动合并生效:
    • mysql-setup是一次性初始化任务,负责创建Datahub所需的数据库及基础表结构
    • mysql是实际运行的数据库容器,使用官方mysql:8.0镜像
  • 官方默认启动命令docker-compose up -d会自动加载同目录下的docker-compose.override.yml,因此这些依赖服务会被自动启动;如果单独只加载主docker-compose.yml,自然看不到这些服务定义。
  • docker-compose.override.yml中mysql相关配置的典型结构如下:
mysql:
    image: mysql:8.0
    container_name: datahub-mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-datahub}
      MYSQL_DATABASE: datahub
      MYSQL_USER: datahub
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-datahub}
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  mysql-setup:
    image: mysql:8.0
    container_name: datahub-mysql-setup
    command: >
      sh -c "
        until mysql -h mysql -u root -p${MYSQL_ROOT_PASSWORD:-datahub} -e 'SELECT 1'; do
          sleep 5;
        done;
        mysql -h mysql -u root -p${MYSQL_ROOT_PASSWORD:-datahub} -e 'CREATE DATABASE IF NOT EXISTS datahub;';
      "
    depends_on:
      - mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-datahub}
  • 如果需要手动指定文件启动,必须同时加载主文件和扩展文件:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:34:58