首页 > 解决方案 > docker-compose up 无效模式 /docker-entrypoint-initdb.d/ - 无法为服务数据库创建容器

问题描述

我必须使用 docker-compose up 来启动数据库。我们为此所需的一切都已经提供,并且适用于我的合作伙伴。同时我有以下问题。(我正在使用 Mac OS Catalina btw)每次我尝试使用 docker-compose up 时都会发生以下错误

码头工人组成

创建 ziegel24_database_1 ... 错误

错误:ziegel24_database_1 无法为服务数据库创建容器:无效模式:/docker-entrypoint-initdb.d/

错误:数据库无法为服务数据库创建容器:无效模式:/docker-entrypoint-initdb.d/ 错误:启动项目时遇到错误。

docker-compose.yml 如下

version: "3.1"
services:
  database:
    image: mysql:5.7
    volumes:
      - ./mysql/db/entrypoint:/docker-entrypoint-initdb.d/
    ports:
      - "3308:3306"
    environment:
      - "MYSQL_ROOT_PASSWORD=geheim"
      - "MYSQL_DATABASE=Ziegel24"

我已经检查过我的 docker compose 和 engine 是否是正确的版本。(Mysql 使用较新的版本,但由于 docker 创建了一个新数据库,它会提取我被告知所需的 sql 版本)

我也试图找到所说的 docker-entrypoint-initdb.d目录,但即使在我的整台计算机上运行 find 也没有给出结果,所以我猜整个目录不存在?

有什么方法可以手动下载它还是包含在我错误地没有安装的包中?

编辑 我已经意识到 docker-entrypoint-initdb.d 无论如何都不应该在我的计算机上,而是在 mysql:5.7 图像中。我仍然不知道确切的错误是什么以及如何解决它,但是是的,这是新的。

由于我在搜索错误时没有找到任何帮助,所以我来这里寻求帮助。

标签: mysqldockerdocker-compose

解决方案


卷的简短语法(HOST:CONTAINER)or(HOST:CONTAINER:ro)如果指定了访问模式。如果主机路径包含冒号 ( :)CONTAINER则被解释为访问模式。

在您的情况下./mysql/db/entrypoint是相对路径,docker 将其扩展为完整路径。如果此完整路径包含冒号,/docker-entrypoint-initdb.d/则认为访问模式明显无效(允许的值为roand rw),因此会出错。

这可能不是您的情况,但我可以在 Ubuntu 14.04.5 LTS 上使用 Docker 版本 18.04.0-ce、构建 3d479c0 和 docker-compose 版本 1.21.0、构建 5920eb0 重现上述行为。

希望这可以帮助。


推荐阅读