Docker`docker-entrypoint-initdb`未链接

问题描述 投票:0回答:1

我正在尝试将init.sh脚本添加到docker-entrypoint-initdb.d,以便可以在Docker容器中完成我的数据库的配置。脚本位于scripts所在的本地目录中的Dockerfile目录中。 Dockerfile很简单:

FROM glats/alpine-lamp
ENV MYSQL_ROOT_PASSWORD=password

build命令可以正常运行并且没有错误,然后,当我尝试运行容器时,它也可以运行良好,并且带有初始化脚本的链接卷:

docker run -d --name mydocker -p 8080:80 -it mydocker \
-v ~/Docker/scripts:/docker-entrypoint-initdb.d

但是,当我登录到正在运行的容器时,我看不到任何docker-entrypoint-initdb.d目录,并且显然init.sh从未运行:

/ # ls /
bin       etc       media     proc      sbin      tmp
dev       home      mnt       root      srv       usr
entry.sh  lib       opt       run       sys       var

有人知道为什么不装载该卷吗?

docker init alpine docker-volume
1个回答
0
投票

[您正在使用的Docker映像中没有定义这样的逻辑,以上映像的entrypoint只是启动MySQL和httpd,并且没有从入口点构造数据库的能力。

如果您希望能够使用mysql-entrypoint运行初始化脚本并构建数据库,则需要使用正式映像。

Initializing a fresh instance

[首次启动容器时,指定的名称将创建并使用提供的名称进行初始化配置变量。此外,它将执行带有在中找到的扩展名.sh, .sql and .sql.gz/docker-entrypoint-initdb.d

也正在运行容器,每个容器最好使用一个进程。您可以查看此docker-compose文件,该文件根据容器“每个容器一个进程”的规则运行堆栈

© www.soinside.com 2019 - 2024. All rights reserved.