LARAVERNGINX DOCKER始终返回404

问题描述 投票:0回答:1

所以,我正在尝试在Docker容器中运行Laravel应用程序,因此我设法成功地构建并运行了容器,但是每当我从Web浏览器访问它时,总是从Nginx中找不到404。

404从nginx中找到。

,这是我的
Dockerfile

FROM php:8.0-fpm-alpine AS build

RUN apk --no-cache add bash libpng-dev libjpeg-turbo-dev freetype-dev zip git nginx && \
    docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install gd pdo pdo_mysql

RUN curl -sS https://getcomposer.org/installer | php && \
    mv composer.phar /usr/local/bin/composer

WORKDIR /var/www

COPY . .

RUN composer install --no-dev --optimize-autoloader

FROM php:8.0-fpm-alpine

RUN apk --no-cache add bash libpng-dev libjpeg-turbo-dev freetype-dev zip git nginx && \
    docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install gd pdo pdo_mysql

WORKDIR /var/www

COPY --from=build /var/www /var/www

COPY nginx/default.conf /etc/nginx/conf.d/default.conf

RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache

EXPOSE 80 9000

CMD ["sh", "-c", "php-fpm & nginx -g 'daemon off;'"]

这是我的nginx:

default.conf

我一直在一遍又一遍地尝试建造和重建容器,但是我仍然得到了Nginx的404结果,如果有任何可用的解决方案我可以尝试,IV一直在搜索和使用Chatgpt几天,我真的很感谢但仍然没有结果,谢谢。
我一直在试图摆脱Nginx并直接在端口9000上运行Laravel应用,但是我获得了连接超时。
server { listen 80; server_name localhost; root /var/www/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; }

	

plape尝试以下内容。

创建nginx/nginx.conf文件

FROM php:8.0-fpm-alpine AS build

WORKDIR /var/www

RUN apk --no-cache add bash libpng-dev libjpeg-dev libfreetype6-dev zip git && \
    docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install gd pdo pdo_mysql

RUN curl -sS https://getcomposer.org/installer | php && \
    mv composer.phar /usr/local/bin/composer

COPY . .

RUN composer install --no-dev --optimize-autoloader

FROM php:8.0-fpm-alpine

WORKDIR /var/www

RUN apk --no-cache add bash libpng-dev libjpeg-dev libfreetype6-dev zip git && \
    docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install gd pdo pdo_mysql

COPY --from=build /var/www /var/www

EXPOSE 9000

CMD ["php-fpm"]
php laravel docker nginx dockerfile
1个回答
0
投票

ModifyDockerfile添加nginx.conf

  1. user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; proxy_buffers 8 32K; proxy_buffer_size 32k; proxy_busy_buffers_size 64k; server_tokens off; #gzip on; include /etc/nginx/conf.d/*.conf; }
现在应该显示您的Laravel页面。
为此:
    当您在构建映像中安装nginx时,默认的nginx.conf文件具有此行。
  1. COPY nginx/default.conf /etc/nginx/conf.d/default.conf ← Add this one COPY nginx/default.conf /etc/nginx/conf.d/default.conf
由于评论了这一点,因此不会应用自定义文件。
因此,您只需要覆盖
#include /etc/nginx/conf.d/*.conf;

文件:)

我建议您将NGINX和PHP-FPM分为不同的容器。

您可以在下面检查我的回购。

https://github.com/yutainueph/laravel-11-app

有很多垃圾文件,但是您可以查看如何设置Docker容器。 (Docker文件夹和环境文件夹)

雷德
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.