查找 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
我们进入当前主机保存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。
进入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。
这里在记录一下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
我们对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