Конфигурация PHP Dockerfile из образа Ubuntu - PullRequest
0 голосов
/ 19 марта 2020

Я пытался выполнить docker -создать с php7 -fpm образом из docker хаба, и он работает, так что это мой docker, который плохо настроен, может ли кто-нибудь мне помочь?

У меня возникла проблема при использовании docker -compose с изображением Dockerfile. Я объясню вам, что мне нужно, мне нужен мой nginx сервер, который связан с php. php должен связываться с Mysql базой данных.

Я просто использую Dockerfile для добавления модулей в php.

Вот мой php dockerfile:

FROM ubuntu:18.04

# BLOCK : Make PHP works
RUN apt-get update
RUN apt-get -y install software-properties-common
RUN add-apt-repository ppa:ondrej/php
# FIN BLOCK

RUN apt-get -y update && apt-get install -y \
    php7.0 \
    php7.0-fpm \
    php7.0-mysql \
    php7.0-json \
    php7.0-curl \
    php7.0-sqlite3 \
    php7.0-xml \
    php7.0-bcmath \
    php7.0-zip \
    php7.0-mbstring \
    php-xdebug \
    php-ast

WORKDIR /var/www/html

CMD ["php-fpm"]

EXPOSE 9000

NGINX config

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name localhost;

    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;

    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 --verbose up, я получаю код выхода

Вот файл --verbose и архитектуры

Screen --verbose

1 Ответ

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

Я использую NGINX Unit в качестве сервера приложений для PHP, так как чуть более 2 лет. Это облегчает использование PHP приложений, работающих на PHP с NGINX без самостоятельной установки / создания сложного образа контейнера docker.

Вот пример сборки UNIT для Wordpress. Но это будет работать и с любым другим приложением PHP.

https://github.com/tippexs/unitwp

Я бы попробовал. Официальная документация: https://unit.nginx.org/configuration/#php

Но вернемся к вашей проблеме:

  1. Я бы больше не использовал Ubuntu 14.04, если бы не требовался абсолют. В качестве базового образа используйте более новый образ.

  2. Какой пакет вы используете для установки PHP7 .0? Я просто использовал образ fre sh ubuntu: 14.04 docker и попытался установить php7 .0 без добавления каких-либо специальных репозиториев или ppa.

root@31bb99d337d9:/# apt search "php7"
Sorting... Done
Full Text Search... Done

Не могу найти ни одного пакета PHP7. Я знаю, что есть некоторые ppa для PHP7 на Ubuntu14.04.

Чтобы он работал с моим fre sh Ubunut 14.04:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
Ваше PHP -изображение не включает в себя обработчик FCGI. Для вашей конфигурации NGINX требуется прослушивание fcgi-процессора на порту 9000 в контейнере php. Вы не устанавливаете его в свой Dockerfile.
root@31bb99d337d9:/# apt search php5-fpm
Sorting... Done
Full Text Search... Done
php5-fpm/trusty-updates,trusty-security 5.5.9+dfsg-1ubuntu4.29 amd64
  server-side, HTML-embedded scripting language (FPM-CGI binary)

Вы должны попытаться найти fpm для php7 в вашем контейнере.

fpm нуждается в некоторой дополнительной конфигурации в вашем php контейнер, а также его нужно запускать при запуске контейнера.

Если есть шанс go в ваш экземпляр контейнера nginx и / или php и проверить, работает ли fpm и прослушивает ли порт 9000 для приема соединений из контейнера nginx.

Я делал это много раз в прошлом и перенес что-либо в NGINX Unit, потому что его гораздо проще использовать. Попробуйте.

...