0.背景
原来运行一个docker项目,正常运行。修改docker-compose.yml文件后,挂载了一个本地目录,然后访问网站,出现了上面的图片,报错403。
1.问题排查
首先通过 docker logs [容器名]可以查看日志。
通过日志查看,确实有报错。
29#29: *1 directory index of "/usr/share/nginx/html/" is forbidden,
后来发现是名称写错导致挂载报错。(请仔细核对路径,并使用yaml文件格式化工具检查文件是否正确)
修改好以后又出现下面的报错:
: container_linux.go:380: starting container process caused: process_l inux.go:545: container init caused: rootfs_linux.go:76: mounting "/root/gg-demo/nginx/nginx.conf" to rootfs at "/etc/nginx/ nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vic e-versa)? Check if the specified host path exists and is the expected type
搜了很多地方,说是docker不支持挂载文件,必须挂载文件夹。必须先把一个空的文件复制到容器里去,再执行docker compose up -d命令。
到最后,还是发现docker-compose.yml文件写的不对,而且是可以挂载文件的。参考如下:
#前台:vue
gg-vue:
image: nginx
container_name: gg-vue
ports:
- 80:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/dist:/usr/share/nginx/html
depends_on:
- gg-springboot
networks:
- gg-network
一开始写错了名称和路径,修改后就好了,也不报错403了。
容器内的文件正常: