我必须使用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映像中。我仍然不知道确切的错误是什么以及如何解决它,但是是的,这是新的。
由于我在搜索错误时没有找到任何帮助,因此来到这里寻求帮助。
答案 0 :(得分:0)
如果指定了访问模式,则short syntax for volumes是(HOST:CONTAINER)
或(HOST:CONTAINER:ro)
。
如果主机路径包含冒号(:
)CONTAINER
被解释为访问模式。
在您的情况下,./mysql/db/entrypoint
是相对路径,泊坞窗将其扩展为完整路径。如果此完整路径包含冒号,则认为/docker-entrypoint-initdb.d/
是访问模式,它显然是无效的(允许值为ro
和rw
),因此会出错。
这可能不是您的情况,但我可以在Ubuntu 14.04.5 LTS上使用Docker 18.04.0-ce,构建3d479c0和docker-compose版本1.21.0,构建5920eb0来重现以上行为。
希望这会有所帮助。