所以,我正在尝试在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"]
ModifyDockerfile添加nginx.conf
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;
}
为此:
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文件夹和环境文件夹)
雷德