Docker化Wordpress+Selenium+PHP Composer环境测试重定向localhost问题
问题根因
这不是测试代码的BUG,也不是Docker网络配置错误,问题出在WordPress站点的核心配置项:
- WordPress初始化安装时,会默认把
siteurl和home两个全局配置存在数据库中,用来指定全站的跳转、资源加载的根域名 - 你之前没有显式指定安装参数时,这两个配置默认是
localhost,所以只要触发登录校验、权限跳转等逻辑,WordPress都会强制重定向到localhost开头的地址,而Selenium容器内的localhost指向自身,自然无法访问到WordPress容器的服务
可行解决方案
你补充的wordpress-cli自动安装方案是标准正确解法,核心逻辑就是安装时显式指定--url=wordpress,把站点根域名设为Docker-compose内的服务名wordpress,同网络下的所有容器(包括Selenium)都可以通过这个域名访问到WordPress服务,后续所有的站内重定向都会基于http://wordpress生成,不会再跳转到localhost。
也可以选择另外两种备选方案修复:
- 手动修改数据库
wp_options表,把siteurl和home两个字段的值改为http://wordpress - 在WordPress的
wp-config.php中新增两行配置强制指定站点域名:
define( 'WP_HOME', 'http://wordpress' ); define( 'WP_SITEURL', 'http://wordpress' );
额外注意事项
- 你之前测试最后一步抛出
ERR_CONNECTION_REFUSED是因为登录失败后会话无效,触发重定向到http://localhost/wp-login.php无法访问导致的,修复站点域名配置后这个问题会自动消失 - 这套配置完全可以复现Github Actions的测试流程,因为Github Actions的服务容器间也是通过服务名作为域名互相访问的,和Docker-compose的网络逻辑一致
内容的提问来源于stack exchange,提问作者Alvin
相关产品推荐
相关产品推荐

