【问题标题】:docker-compose up invalid mode /docker-entrypoint-initdb.d/ - cannot create container for service databasedocker-compose up 无效模式 /docker-entrypoint-initdb.d/ - 无法为服务数据库创建容器
【发布时间】:2019-11-28 11:34:04
【问题描述】:

我必须使用 docker-compose up 来启动数据库。我们需要的一切都已经提供,并且适用于我的合作伙伴。同时我有以下问题。 (顺便说一句,我正在使用 Mac OS Catalina) 每次我尝试使用 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 和引擎是否是正确的版本。 (Mysql 使用较新的版本,但由于 docker 创建了一个新数据库,它会提取我被告知所需的 sql 版本)

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

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

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

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

【问题讨论】:

  • 可以显示/mysql/db/entrypoint的内容吗?你想在这里运行什么?
  • 那里有一个ziegel24.sql.gz 文件。据我所知,整个事情应该只是启动一个数据库

标签: mysql docker docker-compose


【解决方案1】:

如果指定了访问模式,short syntax for volumes(HOST:CONTAINER)(HOST:CONTAINER:ro)。 如果主机路径包含冒号 (:),CONTAINER 被解释为访问模式。

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

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

希望这会有所帮助。

【讨论】:

  • 冒号场景发生在我身上。 TY
  • 对我来说更微妙:“~/.ssh:/root/ssh:ro”。末尾的空格会打印成错误消息,但必须使用一些文本编辑器才能看到它。
猜你喜欢
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 2020-06-12
  • 2019-01-12
  • 1970-01-01
相关资源
最近更新 更多