Docker `docker-entrypoint-initdb` 没有链接

Docker `docker-entrypoint-initdb` not getting linked

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

FROM glats/alpine-lamp
ENV MYSQL_ROOT_PASSWORD=password

构建命令正常运行并完成,没有错误,然后当我尝试 运行 容器时,它也 运行 正常,链接卷与初始化脚本:

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

然而,当我登录到 运行ning 容器时,我没有看到任何 docker-entrypoint-initdb.d 目录,显然 init.sh 从来没有 运行s:

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

有谁知道为什么没有安装该卷?

你使用的Docker镜像中没有定义这样的逻辑,上图的entrypoint只是启动了MySQL和httpd,没有任何构建能力来自入口点的数据库。

如果您想使用 运行 初始化脚本 mysql-entrypoint 并构建您需要使用官方图像的数据库。

Initializing a fresh instance

When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions .sh, .sql and .sql.gz that are found in /docker-entrypoint-initdb.d.

还有运行宁容器,最好每个容器使用一个进程。你可以查看这个 docker-compose 文件,根据容器 "one process per container"

的规则 运行 堆栈