我没有意识到在使用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再启动就好了。

广告
将在 10 秒后关闭
bannerAds