Docker 安装 PHP-fpm

1,使用 docker pull php 安装

查找 Docker Hub 上的 php 镜像

$docker search php

**结果

INDEX       NAME                                                                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/php                                                       While designed for web development, the PH...   3575      [OK]       
docker.io   docker.io/richarvey/nginx-php-fpm                                   Container running Nginx + PHP-FPM capable ...   588                  [OK]
docker.io   docker.io/phpmyadmin/phpmyadmin                                     A web interface for MySQL and MariaDB.          555                  [OK]
docker.io   docker.io/php-zendserver                                            Zend Server - the integrated PHP applicati...   149       [OK]       
docker.io   docker.io/eboraas/apache-php                                        PHP5 on Apache (with SSL support), built o...   137                  [OK]
docker.io   docker.io/adminer                                                   Database management in a single PHP file.       124       [OK]       
docker.io   docker.io/webdevops/php-nginx                                       Nginx with PHP-FPM                              106                  [OK]
docker.io   docker.io/webdevops/php-apache                                      Apache with PHP-FPM (based on webdevops/php)    66                   [OK]
docker.io   docker.io/webdevops/php-apache-dev                                  PHP with Apache for Development (eg. with ...   66                   [OK]
docker.io   docker.io/phpunit/phpunit                                           PHPUnit is a programmer-oriented testing f...   59                   [OK]
docker.io   docker.io/nazarpc/phpmyadmin                                        phpMyAdmin as Docker container, based on o...   57                   [OK]
docker.io   docker.io/bitnami/php-fpm                                           Bitnami PHP-FPM Docker Image                    53                   [OK]
docker.io   docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5      ubuntu-16-nginx-php-phpmyadmin-mysql-5          36                   [OK]
docker.io   docker.io/tetraweb/php                                              PHP 5.5, 5.6, 7.0, 7.1 for CI and running ...   30                   [OK]
docker.io   docker.io/wodby/drupal-php                                          PHP for Drupal                                  20                   [OK]
docker.io   docker.io/webdevops/php                                             PHP (FPM and CLI) service container             19                   [OK]
docker.io   docker.io/centos/php-56-centos7                                     Platform for building and running PHP 5.6 ...   13                   
docker.io   docker.io/clinta/phpipam                                            phpIPAM web IP address management applicat...   12                   [OK]
docker.io   docker.io/graze/php-alpine                                          Smallish php7 alpine image with some commo...   9                    [OK]
docker.io   docker.io/antage/apache2-php5                                       Docker image for running Apache 2.x with P...   8                    [OK]
docker.io   docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10   ubuntu-16-nginx-php-phpmyadmin-mariadb-10       7                    [OK]
docker.io   docker.io/appsvc/php                                                Azure App Service php dockerfiles               6                    [OK]
docker.io   docker.io/lephare/php                                               PHP container                                   4                    [OK]
docker.io   docker.io/phundament/php                                            [outdated] Phundament 4 php:cli and php:fp...   2                    
docker.io   docker.io/isotopab/php                                              Docker PHP                                      0                    [OK]

我们拉取官方的镜像:

$docker pull php:7.2-fpm #7.2-fpm 是指我们要用php7.2,已fpm调用

等下载完,查看一下本地镜像:

$docker images

**结果

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/php       7.2-fpm             002e28147e2d        5 days ago          367 MB

2, 使用php-fpm镜像

我们进入当前主机保存php配置的目录

$sudo mkdir /server/php
$cd /server/php
$sudo  docker run -p 9001:9001 --name  php-fpm -v /server/nginx/www:/www -v $PWD/conf:/usr/local/etc/php -v $PWD/logs:/phplogs   -d php:7.2-fpm
7d1258504a1bfd1a4e04ceb7f946fd0c24e51ce9e2410b6ac8dcd37a030b8e1a

查看一下:

$docker ps

**结果

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7d1258504a1b        php:7.2-fpm         "docker-php-entryp..."   51 seconds ago      Up 51 seconds       0.0.0.0:9000->9000/tcp   php-fpm

到这里就安装成功了。
接下来修改nginx 配置,支持php解析

location ~ \.php$ {
            fastcgi_pass   172.18.0.3:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            include        fastcgi_params;
         }

fastcgi_pass 172.18.0.3:9000; 这里必须用php-fpm容器ip
查看 php-fpm 容器IP:

$docker inspect php-fpm|grep IPAddress

重启 nginx。

3,docker php-fpm 扩展的安装

1,docker php-fpm 安装redis

进入php-fpm容器

$docker exec -it php-fpm bash
#php -m|grep redis #查看一下有没有redis扩展
# mkdir -p /usr/src/php/ext/redis #创建目录
#curl -L https://github.com/phpredis/phpredis/archive/3.0.0.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1
#echo 'redis' >> /usr/src/php-available-exts
#docker-php-ext-install redis

报错

/usr/local/bin/docker-php-ext-enable: 108: /usr/local/bin/docker-php-ext-enable: cannot create /usr/local/etc/php/conf.d/docker-php-ext-redis.ini: Directory nonexistent

根据提示是说不能创建 /usr/local/etc/php/conf.d/
我们手动创建一下就完事啦:

#mkdir /usr/local/etc/php/conf.d/

重写执行:

#docker-php-ext-install redis

查看一下安装成功了没:

#php -m |grep redis
redis #显示这个就OK了

退出php-fpm 容器 ,重启php-fpm 看phpinfo.php 是否包含redis。

**炒蛋的问题

1,docker 安装php-fpm 默认不生成php.ini 和php-fpm.conf,我是从原来的系统里拷贝过来的。

这里在记录一下linux 间cp文件的命令:

scp /etc/php-fpm.conf root@IP:/server/php/conf/php-fpm.conf
scp /etc/php.ini.default root@IP:/server/php/conf/php.ini

4,最后一步

我们对php-fpm容器做了修改,所以要保存一下啦。

#docker commit 61e561ba8845 php-fpm:redis #61e561ba8845 这个是php-fpm容器ID

下次运行镜像是要用 php-fpm:redis 标签啦:

$sudo  docker run -p 9001:9001 --name  php-fpm -v /server/nginx/www:/www -v $PWD/conf:/usr/local/etc/php -v $PWD/logs:/phplogs   -d php:redis

ph.w
ph.w 1年前

已被 0 人挖起

回应
登录 后发表评论
  • 消灭零回应