Php 未找到文件-Docker中的Nginx 描述

Php 未找到文件-Docker中的Nginx 描述,php,laravel,docker,nginx,docker-compose,Php,Laravel,Docker,Nginx,Docker Compose,我有一个docker容器 nginx.conf server { listen 80; index index.php index.html; root /var/www/public; location / { try_files $uri /index.php?$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$;

我有一个docker容器

nginx.conf

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

    location / {
        try_files $uri /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

docker compose.yaml

version: '2'
services:

  # The Application
  app:
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ./:/var/www
    environment:
      - "DB_PORT=3306"
      - "DB_HOST=database"

  # The Web Server
  web:
    build:
      context: ./
      dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
      - app
    ports:
      - 85:80

  # The Database
  database:
    image: mysql:5.6
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      - "MYSQL_DATABASE=homestead"
      - "MYSQL_USER=homestead"
      - "MYSQL_PASSWORD=secret"
      - "MYSQL_ROOT_PASSWORD=secret"
    ports:
        - "33062:3306"

volumes:
  dbdata:

码头工人似乎建造并开始成功

docker-compose up -d
docker_app_1 is up-to-date
docker_database_1 is up-to-date
Recreating docker_web_1 ... 
Recreating docker_web_1 ... done
但我一直在

找不到文件


如何调试它?

使用docker exec启动容器-它是xxxxxx bash


一旦你这样做,你将在容器内。现在根据docker compose文件检查文件是否位于要放置它们的位置

所有卷和其他目录设置理想情况下都指向同一位置。在nginx.conf中有root/var/www/public;但在yal中,您使用/var/www。这可能是您的问题

至于要继续执行的步骤,您可以在旋转docker-compose.yml文件后使用以下命令检查服务实际使用的目录:
docker compose exec yourServiceName sh


用您在yaml中定义的任何服务替换您的ServiceName。因此,应用程序,网络或数据库在您的yaml以上。该命令将带您进入指定容器的shell(sh)。您也可以用其他命令替换sh来执行容器中的其他操作。

您介意共享docker compose文件吗?@Sergiu:根据要求,我在帖子中包含了我的docker-compose.yaml。@kyo您有什么解决方案吗?我也收到了类似的错误什么是xxxxxx?这是码头工人的身份证吗?或pid?使用“docker ps”或“docker ps-a”将生成docker容器列表。查找容器的ID。xxxxxx是容器id。=>“docker exec-it bash”