docker-compose up invalid mode /docker-entrypoint-initdb.d/-无法为服务数据库创建容器

时间:2019-11-28 11:34:04

标签: mysql docker docker-compose

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

  

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映像中。我仍然不知道确切的错误是什么以及如何解决它,但是是的,这是新的。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

希望这会有所帮助。