2016-03-29 19 views
5

Tôi có cấu hình docker-compose đơn giản với php-fpm và nginx, và tôi không thể thấy bất kỳ tập tin php nào. Khi tôi đi đến localhost, nó cho thấy File Not Found.Tập tin Nginx php-fpm của Docker không tìm thấy

Tôi đã thử mọi thứ tôi có thể tìm thấy trên mạng, nhưng mọi thứ tôi đã thử đều không thành công. Nó hoạt động tốt cho html, nhưng không phải cho các tập tin php. Có vẻ là một vấn đề đường dẫn, hoặc một cái gì đó như thế.

tôi đi qua lỗi này khi tôi docker-compose logs:

project3-php_1  | 172.17.0.5 - 29/Mar/2016:13:29:12 +0000 "GET /index.php" 404 
project3-front_1 | 172.17.0.1 - - [29/Mar/2016:13:29:12 +0000] "GET/HTTP/1.1" 404 27 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36" 
project3-front_1 | 2016/03/29 13:29:12 [error] 8#8: *3 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.17.0.1, server: localhost, request: "GET/HTTP/1.1", upstream: "fastcgi://172.17.0.2:9000", host: "localhost" 

Dưới đây là tôi Docker-soạn:

project3-front: 
    image: nginx 
    ports: 
     - "80:80" 
    links: 
     - "project3-php:project3-php" 
    volumes: 
     - ".:/home/docker" 
     - "./nginxdir/default.conf:/etc/nginx/conf.d/default.conf" 
     - "./html:/usr/share/nginx/html" 

    project3-php: 
     build: phpdir 
     volumes: 
     - ".:/home/docker:rw" 
     - "./html:/var/www/html" 
     ports: 
     - "9000:9000" 
     working_dir: "/home/docker" 

Sau đó dockerfile tôi cho php:

FROM php:5.6-fpm 
EXPOSE 9000 

default.conf của tôi cho nginx:

server { 
    listen 80; 
    server_name localhost; 
    index index.php index.html; 

    error_log /var/log/nginx/error.log warn; 
    access_log /var/log/nginx/access.log; 
    root /usr/share/nginx/html; 

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

pwd của thư mục chính là:

/media/revenge/share/PROJECTS/docker_images/php7-nginx 

Các hệ thống phân cấp tập tin là:

├── docker-compose.yml 
├── html 
│   ├── index.php 
├── nginxdir 
│   ├── default.conf 
├── phpdir 
│   ├── dockerfile 
│   └── php.ini 

Toàn bộ thư mục là chmod 777

Bất cứ ý tưởng sẽ được đánh giá rất nhiều. Tôi chắc rằng có điều gì đó tôi không nhận được. Cảm ơn trước.

Trả lời

1

Cuối cùng tìm thấy nó:

tôi nhớ da diết dòng này trong khối lượng PHP phần của Docker-soạn:

"./html:/usr/share/nginx/html"

đây là những gì các Docker-soạn nên hình như:

project3-front: 
    image: nginx 
    ports: 
     - "80:80" 
    links: 
     - "project3-php:project3-php" 
    volumes: 
     - ".:/home/docker" 
     - "./nginxdir/default.conf:/etc/nginx/conf.d/default.conf" 
     - "./html:/usr/share/nginx/html" 
project3-php: 
    build: phpdir 
    volumes: 
     - ".:/home/docker:rw" 
     - "./html:/var/www/html" 
    ports: 
     - "9000:9000" 
    working_dir: "/home/docker" 

gốc tuyệt đối (ở đây "/ usr/share/nginx/html") trong file nginx default.conf phải được thiết lập cũng như trong phần php của docker-co mpose (chỉ dưới nginx trước đó)

Đó là một cứu trợ;)

0

Đây là cách bạn có thể tìm thấy những vấn đề

  1. Bật chế độ nginx debug với tùy chỉnh command, ví dụ như:

kết hợp bộ docker.yml

web: 
    image: nginx 
    volumes: 
     - "~/www/project:/var/www" 
     - "~/www/project/vhost.conf:/etc/nginx/conf.d/site.conf" 
    # Add this row: 
    command: [nginx-debug, '-g', 'daemon off;'] 
  1. Chỉnh sửa "site.conf" tập tin của bạn (trong ví dụ này nó là ~/www/project/vhost.conf tập tin) Bật chế độ debug bởi error_log (thêm "debug" từ tại kết thúc):
error_log "/var/log/nginx/error.log" debug; 
  1. (Re) bắt đầu "web" container:
docker-compose stop web 
docker-compose up -d web 
  1. Kiểm tra các thùng chứa, tất cả các thùng chứa có đang chạy không?
docker-compose ps 
  1. thử nghiệm trong trình duyệt
  2. "Connect" và xem hoặc tải về (http://blog.dcycle.com/blog/ae67284c/docker-compose-cp) và xem các tập tin /var/log/nginx/error.log.

Các vấn đề trong hầu hết các trường hợp

Bạn chưa thiết lập chưa hay bạn đang sử dụng cấu trúc thư mục khác nhau trong "web" và "php-fpm". Nếu bạn muốn sử dụng cấu trúc khác so với bạn phải thiết lập các "cấu trúc fpm" tại nơi fastcgi_param SCRIPT_FILENAME, như thế này:

Docker-compose.yml

phpfpm: 
    image: php:fpm 
    volumes: 
     - "~/www/project:/var/www/html/user/project" 

"site.conf"

fastcgi_param SCRIPT_FILENAME /var/www/html/user/project$fastcgi_script_name; 
0

Trong trường hợp của tôi, số khối lượng: của php và nginx chỉ một thư mục chính xác (và do đó tương tự). Nhưng trong cấu hình nginx của tôi có NGINX_SERVER_ROOT: chỉ sai đường.

Vì vậy, hãy đảm bảo bạn kiểm tra kỹ tất cả các tập và cài đặt thư mục gốc. Một số phòng có tầm nhìn dễ dàng.

Các vấn đề liên quan