Docker容器无法加载CSS文件问题求助
问题排查与解决步骤
针对你遇到的styling.css加载失败(net::ERR_CONNECTION_REFUSED)问题,结合提供的配置和目录结构,按以下步骤排查:
1. 检查HTML中CSS文件的引用路径
这是最常见的触发原因:
- 打开
index.php或其他引入CSS的文件,查看<link>标签的href属性。如果使用了绝对路径(比如http://localhost:80/styling.css),但你的signup容器映射的是88端口,访问时会尝试连接未开放的80端口,导致连接被拒。 - 改成相对路径,比如:
或直接使用文件名(确保CSS文件和当前PHP文件在同一目录):<link rel="stylesheet" href="./styling.css">
对比signin容器的引用路径,确保两者逻辑一致。<link rel="stylesheet" href="styling.css">
2. 验证容器内文件是否正确复制
- 执行命令进入容器,检查文件是否存在且权限正常:
确认docker exec -it signup ls -l /var/www/html/styling.css在列表中,且权限为rw-r--r--左右(Apache需要读取权限)。 - 如果文件不存在,检查Dockerfile的
COPY命令:COPY src/ /var/www/html/是否正确。注意src/末尾的斜杠会将src目录下的所有文件直接复制到目标目录,而非创建/var/www/html/src子目录。
3. 确认端口访问方式
- 确保你访问signup页面时使用的是
http://localhost:88(对应docker-compose的端口映射88:80),而非localhost:80。如果浏览器地址栏是80端口,请求CSS时也会走80端口,导致连接被拒。
4. 检查Apache配置与网络
- 验证Apache的根目录配置:进入容器查看默认站点配置:
确认docker exec -it signup cat /etc/apache2/sites-available/000-default.confDocumentRoot为/var/www/html,这是php:7.2-apache的默认配置,若被修改会导致静态文件无法访问。 - 检查test网络是否存在:
确认docker network lstest网络在列表中,再通过docker inspect signup查看容器是否已加入该网络(查看Networks字段)。
内容的提问来源于stack exchange,提问作者Aidan Campbell
相关产品推荐
相关产品推荐

