English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Установка PHP с Docker

Установить образ PHP

Метод один, docker pull php

Поиск Docker Hub php образы на:

Другие версии php можно увидеть, выбрав "Sort by", по умолчанию это последняя версия php:latest

Кроме того, мы можем использовать команду docker search php, чтобы просмотреть доступные версии:

w3codebox@w3codebox:~/php-fpm$ docker search php
NAME                    DESCRIPTION                                     STARS   OFFICIAL   AUTOMATED
php                       虽然是为网络 разработка предназначен, но PH...   1232    [OK]       
richarvey/nginx-php-fpm   Контейнер, запущенный Nginx + PHP-FPM, способный...   207                  [OK]
phpmyadmin/phpmyadmin     Веб-интерфейс для MySQL и MariaDB.          123                  [OK]
eboraas/apache-php        PHP5 на Apache (с поддержкой SSL), собрано o...   69                   [OK]
php-zendserver            Zend Server — интегрированное приложение PHP   69        [OK]       
million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   67                   [OK]
webdevops/php-nginx       Nginx with PHP-FPM                            39                   [OK]
webdevops/php-apache      Apache with PHP-FPM (based on webdevops/php)    14                   [OK]
phpunit/phpunit           PHPUnit is a programmer-oriented testing f...   14                   [OK]
tetraweb/php             PHP 5.3, 5.4, 5.5, 5.6, 7.0 for CI and run...   12                   [OK]
webdevops/php             PHP (FPM and CLI) service container             10                   [OK]
...

Здесь мы тянем официальное изображение, ТЭГ как 5.6-fpm

w3codebox@w3codebox:~/php-fpm$ docker pull php:5.6-fpm

После завершения загрузки мы можем найти в местном списке изображений Docker изображение с РЕПОЗИТОРИЯ как php, ТЭГ как 5.6-fpm.

w3codebox@w3codebox:~/php-fpm$ docker images
РЕПОЗИТОРИЯ             ТЭГ                 ИДЕНТИФИКАТОР ИЗОБРАЖЕНИЯ            Создан             Размер
php                 5.6-fpm             025041cd3aa5        6 days ago          456.3 MB

Deployment Nginx + PHP

Депloyment Nginx можно посмотреть здесь:Установка Nginx с Docker,и некоторые конфигурации Nginx можно найти в этой статье.

Запуск  PHP:

$ docker run --name  myphp-fpm -v ~/nginx/www:/www  -d php:5.6-fpm

Объяснение команд:

  • --name  myphp-fpm : Назначить контейнеру имя myphp-fpm

  • -v ~/nginx/www:/www : Подключить директорию проекта www на хосте к контейнеру /www

Создать директорию ~/nginx/conf/conf.d:

mkdir ~/nginx/conf/conf.d

Добавить в этой директории ~/nginx/conf/conf.d/w3codebox-test-php.conf Файл, содержимое которого следующее:

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Объяснение конфигурационных файлов:

  • php:9000: это URL услуги php-fpm, мы подробно рассмотрим его ниже.

  • /www/: означает myphp-fpm Путь хранения php файлов, привязанный к локальной директории ~/nginx/www.

Запуск nginx:

docker run --name w3codebox-php-nginx -p 8083:80 -d \
    -v ~/nginx/www:/usr/share/nginx/html:ro \
    -v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
    --link myphp-fpm:php \
    nginx
  • -p 8083:80: Порт маппинг, маппинг nginx в которой 80 порт маппинг на локальный порт 8083.

  • ~/nginx/www: Это директория хранения локальных файлов html, /usr/share/nginx/html - это директория хранения файлов html в контейнере.

  • ~/nginx/conf/conf.d: Это директория хранения локального файла конфигурации nginx, /etc/nginx/conf.d - это директория хранения конфигурации nginx в контейнере.

  • --link myphp-fpm:php: Перенести myphp-fpm сетевую интеграцию nginxи изменить nginx в /etc/hosts, добавить домен php Маппинг 127.0.0.1, чтобы nginx мог доступа к php-fpm через php:9000.

Далее создадим index.php в директории ~/nginx/www, код如下:

<?php
echo phpinfo();
?>

Откройте в браузере http://127.0.0.1:8083/index.phpПоказано так: