Mac系统Docker运行Cypress 10.9时出现服务器验证失败错误
解决Docker Cypress无法访问本地非容器化Apache的问题
核心原因:Docker容器内的
localhost指向容器自身的回环地址,而非Mac主机的localhost。你在容器终端ping通的localhost是容器内部的地址,和运行Apache的Mac主机不是同一个环境。解决方案1:使用Docker内置的主机别名
将CYPRESS_BASE_URL的值改为http://host.docker.internal(Apache在80端口,默认可省略端口号)。这个别名是Docker for Mac专门提供的,用于让容器直接访问Mac主机上的服务。可以直接在docker-compose.yml中指定该值:
version: '3' services: e2e: build: context: . dockerfile: Dockerfile environment: CYPRESS_BASE_URL: http://host.docker.internal CYPRESS_USERNAME: $CYPRESS_USERNAME CYPRESS_PASSWORD: $CYPRESS_PASSWORD volumes: - ./:/e2e或者保持环境变量传入,将
CYPRESS_BASE_URL的值设为http://host.docker.internal后再执行容器命令。解决方案2:确认Apache的监听地址
检查Apache的配置文件(如httpd.conf或000-default.conf),确保监听地址是0.0.0.0:80而非仅127.0.0.1:80。如果Apache只绑定主机的回环地址,即使容器通过host.docker.internal访问,也无法建立连接。修改配置后重启Apache:
sudo apachectl restart解决方案3:检查Mac防火墙设置
进入Mac「系统设置」→「网络」→「防火墙」,确认允许Apache(或httpd)接收传入连接,同时确保Docker应用拥有网络访问权限,避免防火墙拦截容器对主机80端口的请求。
内容的提问来源于stack exchange,提问作者ray805
相关产品推荐
相关产品推荐

