docker - Docker `docker-entrypoint-initdb` 未链接
问题描述
我正在尝试向其中添加一个init.sh
脚本,docker-entrypoint-initdb.d
以便我可以完成在 docker 容器中配置我的数据库。该脚本scripts
位于我所在的本地目录中的一个目录中Dockerfile
。Dockerfile
很简单:
FROM glats/alpine-lamp
ENV MYSQL_ROOT_PASSWORD=password
构建命令可以正常工作并且没有错误地完成,然后当我尝试运行容器时,它也可以正常运行,并带有带有 init 脚本的链接卷:
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 镜像中没有定义这样的逻辑,上述镜像的入口点只是启动 MySQL 和 httpd,并且没有任何从入口点构造数据库的能力。
如果您希望能够使用mysql-entrypoint运行 init 脚本并构建您需要使用官方镜像的数据库。
首次启动容器时,将使用提供的配置变量创建并初始化具有指定名称的新数据库。此外,它将执行扩展名为
.sh, .sql and .sql.gz
./docker-entrypoint-initdb.d
同时运行容器,最好每个容器使用一个进程。您可以根据容器“每个容器一个进程”的规则查看运行堆栈的docker-compose文件
推荐阅读
- python - Pandas & Datetime - 特定的小时顺序,但更改日期
- java - 如何在 Android Studio 项目的应用程序主题中嵌套按钮样式元素
- python - 绘制两个地图时,如何减少两个垂直图例之间的水平间距
- bots - 如何使用 Telethon 制作的电报机器人上的按钮
- go - 在 Go 中使用 http.Request 将 URL 参数转换为 JSON
- r - 在 expss 方法 apply_label 的参数处使用列表
- c# - C#上的图形试图在画布上画一条线
- html - 在 Bootstrap 5.0 中使用 d-flex 时宽度不正确
- python - 当多个机器人实例同时运行时,为什么我的 Discord 机器人开始出现故障?
- react-native - 反应本机中的删除功能