PHP файлы не работают в LEMP Docker Compose setup - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать простую настройку LEMP. Nginx и MySQL работают нормально. Но я не могу добавить PHP. Вот все соответствующие файлы:

docker-compose.yml

version: '3.7'

services:
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: lemp

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - db
    restart: always
    ports:
      - 8080:80

  nginx:
    build: ./docker/nginx/
    depends_on:
      - db
    ports:
      - 8000:80
    volumes:
      # - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      # - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./log:/var/log/nginx
      - ./code:/usr/share/nginx/html

  php:
    image: phpdockerio/php73-fpm
    depends_on:
      - db

Dockerfile для Nginx

FROM nginx:latest

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

nginx.conf

http {
  include /etc/nginx/conf.d/*.conf;

  server_tokens off;
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 15;
  types_hash_max_size 2048;
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  access_log off;
  error_log off;
  gzip on;
  gzip_disable "msie6";
  open_file_cache max=100;
}

events {
  worker_connections  2048;
  multi_accept on;
  use epoll;
}

user www-data;
worker_processes 4;
pid /run/nginx.pid;

default.conf

server {
  server_name localhost;
  root /usr/share/nginx/html;

  index index.php index.html;

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

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

  error_log /var/log/nginx/error.log;
  access_log /var/log/nginx/access.log;
}

Когда я запускаю docker-compose up, все идет хорошо. Можно создать любой файл HTML в общей папке, все в порядке. Но, если я создаю файл PHP и пытаюсь получить к нему доступ, я получаю File not found..

Вот что я вижу в журналах:

access.log

192.167.150.1 - - [16/Mar/2020:08:17:17 +0000] "GET /test.php HTTP/1.1" 404 47 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0"

error.log

2020/03/16 08:16:39 [error] 6#6: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 192.168.160.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost:8000"
2020/03/16 08:16:39 [error] 6#6: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.160.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://192.168.160.4:9000", host: "localhost:8000"
2020/03/16 08:17:17 [error] 6#6: *3 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.160.1, server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://192.168.160.4:9000", host: "localhost:8000"

Я вижу ошибку о запрете доступа к папке, но я могу найти способ исправить это (если это действительно проблема.

1 Ответ

0 голосов
/ 16 марта 2020

попробуй nginx: зависимость_он: php
или что-то типа


  nginx:
    build: ./docker/nginx/
    depends_on:
      - php
    ports:
      - 8000:80
    volumes:
      - ./:/usr/share/nginx/html
      - ./log:/var/log/nginx
      - ./code:/usr/share/nginx/html

  php:
    image: phpdockerio/php73-fpm
    working_dir: /usr/share/nginx/html
    depends_on:
      - db
    ports:
      - "9000"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...