分析
1. 查看容器日志
sudo docker logs subcatcher-aesthetic
2. 查看 nginx 错误日志
sudo docker exec subcatcher-aesthetic cat /var/log/nginx/error.log
3. 确认文件存在
sudo docker exec subcatcher-aesthetic ls -la /usr/share/nginx/html/
4. 测试 nginx 配置
sudo docker exec subcatcher-aesthetic nginx -t
5. 检查宿主机权限
sudo ls -la /应用目录/dist/
原因:
open() "/usr/share/nginx/html/index.html" failed (13: Permission denied)
解决方案1
1. 停止容器
sudo docker stop subcatcher-aesthetic
2. 修复权限
sudo chmod -R 755 /应用目录/dist/
3. 启动容器
sudo docker start subcatcher-aesthetic
4. 查看是否还有错误
sudo docker logs subcatcher-aesthetic --tail 20
解决方案 2:修改 docker-compose.yml 的用户设置
services: subcatcher: image: nginx:alpine container_name: subcatcher-aesthetic user: "1001:1001" # 改为匹配文件所有者的 UID restart: always ports: - "8080:80" volumes: - ./dist:/usr/share/nginx/html:ro - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro environment: - TZ=Asia/Shanghai networks: - subcatcher-net
sudo docker-compose down sudo docker-compose up -d