嘿,我正在try 使用symfony、docker和nginx部署我的第一个应用程序.目前,我只try 在本地运行我的停靠容器,但当我打开index.php时,它显示找不到我的*.css*.js文件,并且出现404错误.另外,index.php正在工作,因为当我将默认的symfony index.php更改为echo "something"时,它可以工作.我使用webpack安可来构建我的js和css文件,

Docker-compose.prod.yml

services:

  # nginx
  web: 
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf

  app:
    build: 
      dockerfile: ./php/文档文件
    volumes:
      - /var/www/html/vendor
      - .:/var/www/html

文档文件

FROM php:8.1-fpm-alpine



RUN apk update
RUN apk add vim


# install php with pgsql
RUN set -ex \
  && apk --no-cache add \
    postgresql-dev

RUN docker-php-ext-install pdo pdo_pgsql pgsql

ENV COMPOSER_ALLOW_SUPERUSER=1


# get composer using multi-stage build
COPY --from=composer:2.4 /usr/bin/composer /usr/bin/composer

# copy composer.lock and composer.json
COPY ./composer.* ./

# install bundles from composer.json with options for deployment
RUN composer install --prefer-dist --no-dev --no-scripts --no-progress --no-interaction

# copy application files to default directory
COPY . .

# run composer dump-autload 
RUN composer dump-autoload --optimize

Nginx的default.conf

server {
    listen 80;
    server_name localhost;
    root /var/www/html/public;
    index index.php;


    location ~ \.php$ {
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location / {

        try_files $uri $uri/ /index.php?$query_string;

    }
}

文件 struct

app
│   composer.json
│   composer.lock
│   Docker-compose.prod.yml
│   package-lock.json
│   package.json
│   webpack.config.js
│   
├───nginx
│   └───conf.d
│           default.conf
├───php
│       文档文件
│       
├───public
│   │   .htaccess
│   │   index.php
│   │   
│   └───build
│           500.c01022e5.js
│           app.90dc63d1.js
│           app.c6fd8b2d.css
│           entrypoints.json
│           manifest.json
│           runtime.61b1725c.js

这些是我打开localhost:80时收到的错误

GET http://localhost/build/runtime.61b1725c.js net::ERR_ABORTED 404 (Not Found)
GET http://localhost/build/app.c6fd8b2d.css net::ERR_ABORTED 404 (Not Found)
GET http://localhost/build/app.90dc63d1.js net::ERR_ABORTED 404 (Not Found)
GET http://localhost/build/500.c01022e5.js net::ERR_ABORTED 404 (Not Found)

推荐答案

您应该将./public目录挂载到nginx容器中:

services:

  # nginx
  web: 
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
      - ./public:/var/www/html/public

  app:
    build: 
      dockerfile: ./php/Dockerfile
    volumes:
      - /var/www/html/vendor
      - .:/var/www/html

Php相关问答推荐

Laravel 11发送邮箱时奇怪的未定义数组键名称

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

在函数内部获取一致的单选按钮值以更新WordPress用户数据

在WooCommerce中禁用客户用户角色的纳税计算

通过DO LAMP进行身份验证并从邮箱发送邮箱的最简单方式是什么

WooCommerce常规价格增加额外的附加平价

将文件添加到存档,而不重建存档

在PHP中,如何将介于0和1之间(包括0和1)的浮点概率转换为数组索引?

PHP SimpleXML:按属性值访问 node

扩展 WooCommerce 类触发未捕获错误:未找到WC_Coupon类

如何用十进制和字母数字减go 和添加 id

如果 Select 的县不是store 所在的县,如何隐藏本地自提?

PHP 中使用 JSON 的自定义会话处理程序会因错误而 destruct 会话

simplexml_load_file 和 simplexml_load_string 返回具有不同编码的相同数据

向元素添加类时添加循环错误

如何设置Mailersend PHP API 模板变量?

Laravel 模型将日期保存为空

php-http/discovery 插件 1.15.1 是否仍在使用自己的模块 destruct Contao 4.13 中的composer 安装?

根据数组中的文本文件编号显示星级

检测字符串是否包含Letter with Tilde或Letter + Combining Tilde