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
相关产品推荐
相关产品推荐

