我没有意识到在使用Docker从头搭建nginx时的一个问题
在通过 Docker 进行 Laravel 的环境构建时,我遇到了一个问题。虽然容器已经启动,但似乎无法与 Nginx 配合正常运行,所以我想写一下。
创建docker-compose.yml文件
nginx:
image: nginx:1.17-alpine
container_name: web
depends_on:
- php-fpm
ports:
- 80:80
volumes:
- ./src:/work
- ./docker/nginx/default.conf:/etc/nginx/default.conf
这只是针对nginx的配置。省略了其他一些配置项,如php-fpm、mysql等。然后启动容器。
安装laravel的流程与其他相同。所有配置项都已启动,进入容器内使用composer安装laravel。
我认为这样就完成了!!但是,Laravel无法启动!!!!
仔细看一下这个docker-compose.yml文件中nginx的描述,可以发现容器内nginx的配置文件路径是错误的。
不是这个:
– ./docker/nginx/default.conf:/etc/nginx/default.conf
而是这个:
– ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
这样才对。正确的docker-compose.yml文件就是这个!!
nginx:
image: nginx:1.17-alpine
container_name: web
depends_on:
- php-fpm
ports:
- 80:80
volumes:
- ./src:/work
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
conf.d目录缺失!疏忽大意!!!而是我没有理解好nginx的配置文件结构。
为什么会犯错呢?
考え方によっては nginx の設定ファイルの構成はすぐに理解できます。nginx の設定は、
etc
└─ nginx
├─ nginx.conf
└─ conf.d
├─ defalut.conf
├─ *.conf
:
首先读取nginx.conf,然后包含conf.d目录中的.conf文件。换句话说,nginx.conf和default.conf现在混乱不清。对我来说,主机的./docker/nginx/default.conf中描述了server指令的配置,所以这是容器内nginx/conf.d/default.conf的内容。
总结
这是一个初级错误。如果查看nginx的文件结构,问题很快就会出现,但很难找到原因,花费了很多时间…
事实上,只要认真研究nginx再启动就好了。