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

Docker Compose使用--init-file初始化MySQL提示文件不存在如何解决?

问题原因分析
  • 你指定的--init-file命令参数语法本身没有错误,报错的核心原因是:你仅将SCHEMA.sql放在了宿主机的docker-compose同级目录,没有将该文件挂载到MySQL容器内部,容器内的根目录下根本不存在/SCHEMA.sql文件,因此MySQL进程读取失败。
两种解决方案

方案1:保留--init-file配置,补充挂载规则

直接在你的db服务配置中新增volumes字段,将宿主机的脚本映射到容器内对应的路径即可:

db:
  image: mysql:5.7
  ports:
    - "3306:3306"
  command: --init-file /SCHEMA.sql
  restart: always
  environment:
    MYSQL_DATABASE: shapeshop
    MYSQL_USER: admin
    MYSQL_PASSWORD: admin
    MYSQL_ROOT_PASSWORD: root
  networks:
    - backend
  # 新增下面的挂载配置
  volumes:
    - ./SCHEMA.sql:/SCHEMA.sql

方案2(更推荐):使用MySQL官方镜像内置的初始化机制

MySQL官方镜像默认支持自动执行/docker-entrypoint-initdb.d/目录下的所有.sql/.sh初始化脚本,无需手动指定--init-file参数,配置更简单不易出错:

  1. 删除原来的command: --init-file /SCHEMA.sql配置行
  2. 新增如下volumes配置:
volumes:
  - ./SCHEMA.sql:/docker-entrypoint-initdb.d/SCHEMA.sql
注意事项

如果之前已经启动过该MySQL服务,容器已经生成了持久化的数据库数据,初始化脚本只会在数据库数据目录为空的首次启动场景执行。修改配置后如果需要重新执行初始化脚本,可以先执行docker-compose down -v删除旧的关联数据卷,再重新启动服务即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 18:15:03