MediaWiki Docker容器无法访问MySQL Docker容器

4
我试图创建两个Docker容器,一个包含MySQL数据库,另一个包含Apache/PHP和MediaWiki。我正在使用Docker Hub上最新的MySQL和MediaWiki镜像。
我使用以下命令创建这2个容器:
docker container run -d --name mediawiki --restart always -p 8080:80 mediawiki
docker container run -d --name mw-mysql -v mw-mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="Sup3rS3cret" -p 3306:3306 --restart always mysql

我不确定是否需要映射MySQL端口(3306),因为那是默认的。我也相当肯定没有任何东西在80端口上监听,所以我可能也不需要将其映射到8080。

我还创建了一个网络,并将两个容器添加到该网络中:

docker network create mediawiki
docker network connect mediawiki mediawiki
docker network connect mediawiki mw-mysql

在运行Docker的主机上,我可以启动mysql客户端并连接到运行在mw-mysql中的MySQL数据库。如果我登录到mediawiki容器中,我可以ping mw-mysql容器。

镜像已经成功下载和创建,但是当我浏览http://localhost:8080/访问MediaWiki网站并开始配置MediaWiki时,它无法连接到数据库。

我有以下服务器:"mw-mysql"、"my-mysql.mediawiki"、"localhost"、"127.0.0.1"以及用户ID "root" 和上面的超级秘密密码。

我被难住了。我也是Docker的新手。我一定是做了什么愚蠢的事情,但我就是看不出来。欢迎提出任何建议。


你试过 mw-mysql:3306 吗? - flamberge552
我以前对Docker一无所知。然后因为一些可疑的原因丢失了数据库,于是放弃了Docker... - IRA1777
@GabrielCiordas我将其添加到Docker容器命令的末尾,但仍然收到相同的错误消息。在MediaWiki设置的“连接数据库”页面上,我输入了以下内容: 数据库类型:MariaDB、MySQL或兼容性数据库 数据库主机:mw-mysql 数据库名称:my_wiki 数据库用户名:root 数据库密码:Sup3rS3cret我甚至尝试将"default-authentication-plugin=mysql_native_password"添加到/etc/mysql/my.cnf文件中,并重新启动mw-mysql容器中的MySQL服务。什么都不起作用。 - Tomasthanes
即使你不知道如何解决上述问题,你有没有关于如何弄清楚MediaWiki和MySQL之间发生了什么的建议?我可以连接到MySQL容器并启用常规日志(但没有输出)。我打算使用mysqlbinlog命令切换到binlog,将binlog文件转换为ASCII格式,并通过管道传输给more。欢迎所有建议! - Tomasthanes
1
@Tomasthanes 你是否已经解决了这个问题? - doberkofler
显示剩余2条评论
1个回答

0
我在mediawiki上遇到了一个类似的错误:它更像是通过重新配置mw-config来升级数据库,但这次你需要从你的LocalSettings.php当前配置文件中提供$wgUpgradeKey。
我重新运行了mw-config http://server-name:8080/mw-config,并提供了$wgUpgradeKey,这样就重新生成了新的LocalSettings.php(与之前的LocalSettings.php相同)。
要查看LocalSettings,请在容器中打开一个bash shell并导航到/var/www/html。
docker compose exec mediawiki /bin/bash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接