gpt4 book ai didi

mysql - 在 Docker 容器中运行 mysql 实例

转载 作者:行者123 更新时间:2023-11-29 00:04:35 25 4
gpt4 key购买 nike

我想在 Docker 中运行一个 mysql 容器。我使用的Dockerfile是官方repo中定义的Dockerfile [here] .我只用 2 行扩展了这个 Dockerfile,这样我就可以导入一个 init sql 文件,如下所示:

    ADD my-init-file.sql /my-init-file.sql 
CMD ["mysqld", "--init-file=/my-init-file.sql"]

我想将此实例作为守护进程运行,但是当我执行此命令时,来自 documentation :

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql

容器自动退出。我想将它作为守护进程运行,这样我就可以将另一个容器中的应用程序(如 wordpress 站点)链接到 mysql 数据库。

也许我遗漏了什么。谁能告诉我怎么做?

[编辑] 我忘了说我在启动容器后运行 docker logs my-container 并且没有错误:

Running mysql_install_db ...
Finished mysql_install_db

docker ps 显示没有正在运行的容器。我的猜测是命令执行成功但 mysqld 守护进程没有启动。

最佳答案

您的 Dockerfile 似乎没问题。不过,您的 init 文件可能有问题。如果 MySQL 终止,则容器将终止。

调试的第一步是查看日志:

docker logs some-mysql

无论容器是停止还是运行,您都可以使用它。希望您会看到一些明显的东西,比如您漏掉了一些分号。

如果日志没有帮助,接下来要尝试的是进入容器内部并亲眼看看发生了什么

docker run -e MYSQL_ROOT_PASSWORD=mysecretpassword -it mysql /bin/bash

这将在您的容器中为您提供一个 Bash shell。然后就可以运行了

mysqld --init-file=/my-init-file.sql

然后看看会发生什么。也许你的 init 文件中的某些东西告诉 MySQL 干净地退出,所以你没有得到任何日志但命令终止。

关于mysql - 在 Docker 容器中运行 mysql 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28127369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com