Я пытаюсь использовать docker для php5 .6 с ngnix, но есть проблема в конфигурации - PullRequest
3 голосов
/ 29 января 2020

Здравствуйте, мне нужно настроить php5 .6 на моем локальном компьютере. Ниже приведен файл docker -compose.yml

  version: '3'

networks:
  laravel:

services:
  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "8000:80"
    volumes:
      - ./src:/var/www
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
    networks:
      - laravel


  php:
    image: gotechnies/php-5.6-alpine
    container_name: php
    volumes:
      - ./src:/var/www
    ports:
      - "9000:9000"
    networks:
      - laravel

файл конфигурации ngnix

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;

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

    location ~ \.php$ {
        try_files $uri =404;
        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;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

после выполнения команды docker -compose up -d, следующий вывод:

enter image description here

, но когда я пытаюсь получить доступ http://localhost: 8000 , я не могу отобразить страницу.

1 Ответ

3 голосов
/ 29 января 2020

Для запуска PHP5 .6 с NGINX вам потребуется выполнить следующее:

Макет каталога. Все веб-файлы go в вашем локальном src/ каталоге

enter image description here

Для nginx / default.conf используйте следующее:

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html;

    location ~ \.php$ {
        try_files $uri =404;
        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;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Для src / index. php (проверка, чтобы убедиться, что PHP работает)

<? echo phpinfo(); ?>

Для вашего docker -compose.yml Я удалил много вещей, которые вам не понадобятся:

version: "3"

services:
  nginx:
    image: nginx:latest
    ports:
        - "8080:80"
    volumes:
      - ./src/:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  php:
    image: mikolatero/php5.6-fpm-alpine
    volumes: 
      - ./src/:/var/www/html

Выполнить docker-compose up. Перейдите к http://localhost: 8080 / index. php, и вы должны увидеть информационную страницу PHP:

enter image description here

Что изменилось?

В этом случае я выбрал последний NGINX и нашел хорошее изображение для PHP5 .6-FPM и использовал их для стека.

Для смонтированных томов я переместил каталоги в тот же контекст, что и файл Docker Compose. Не обязательно, но может быть более портативным при работе с ноутбука. Ваш смонтированный веб-источник может / должен быть местом вашего веб-репо. Я также использовал хорошо известное местоположение для веб-файлов в NGINX image /var/www/html

PHP5 .6-FPM смонтирован в том же каталоге, что и веб-источник, поэтому PHP доступны для файлов в этом каталоге.

Наконец, я избавился от networks, поскольку, если у вас нет конкретной причины c, в этом нет необходимости, поскольку эти изображения будут использовать Docker по умолчанию сеть.

...