docker安装PHP
查找下载PHP镜像
docker search php
docker pull php:7.4-fpm
启动PHP容器
docker run --name php-fpm7.4 -v /root/nginx/www/:/www -d php:7.4-fpm
安装扩展
进入 php-fpm 容器 docker exec -it php-fpm7.4 bash
查看安装的扩展 php -m
安装 pdo_mysql 扩展 docker-php-ext-install pdo_mysql
常用命令:
-
docker-php-source
在容器中创建/usr/src/php
文件夹 -
docker-php-ext-install 扩展名
安装并启动扩展(常用) -
docker-php-ext-enable 扩展名
启动PHP扩展 -
docker-php-ext-configure
添加扩展自定义配置,和enable
搭配使用
如果需要安装 zip
扩展:
安装相应依赖:apt-get update && apt-get install -y zlib1g-dev && apt-get install -y libzip-dev
安装并启动 zip
扩展 docker-php-ext-install zip
可用扩展,有些扩展可以直接安装,有些可能需要依赖包:
bcmath、bz2、calendar、ctype、curl、dba、dom、enchant、exif、ffi、fileinfo、filter、ftp、gd、gettext、gmp、hash、iconv、imap、intl、json、ldap、mbstring、mysqli、oci8、odbc、opcache、pcntl、pdo、pdo_dblib、pdo_firebird、pdo_mysql、pdo_oci、pdo_odbc、pdo_pgsql、pdo_sqlite、pgsql、phar、posix、pspell、readline、reflection、session、shmop、simplexml、snmp、soap、sockets、sodium、spl、standard、sysvmsg、sysvsem、sysvshm、tidy、tokenizer、xml、xmlreader、xmlrpc、xmlwriter、xsl、zend_test、zip
重启php容器 docker restart php-fpm7.4
安装 Redis 扩展
docker exec -it php bash
pecl install -o -f redis
# 在 php.ini 中添加 extension=redis.so
cd /usr/local/etc/php
cp php.ini-production php.ini
# 容器内一般是没装 vim 或者 vi 的,所有用下面方式写入内容到文件
echo "extension=redis.so" >> /usr/local/etc/php/php.ini
# 查看是否启用了扩展
php -m | grep redis
安装 swoole
## 方式一:
docker exec -it php bash
pecl install swoole
echo "extension=swoole.so" >> /usr/local/etc/php/php.ini
## 方式二:
docker-php-ext-install swoole
// 上面命令如果安装失败,会告诉你error: /usr/src/php/ext/swoole does not exist
// 然后下载 swoole 源码包,解压后放入到 /usr/src/php/ext/swoole 中
// 然后再次执行 docker-php-ext-install swoole
默认安装扩展
Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
安装完成后的扩展
bcmath
Core
ctype
curl
date
dom
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib
将nginx和PHP容器链接起来
创建目录:mkdir -p ~/nginx/conf/conf.d
在该目录下添加 test.com.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;
}
}
参数 | 说明 |
---|---|
root | 该目录映射到 /root/nginx/www |
fastcgi_param | /www 为启动PHP容器的目录,映射到本地 |
启动nginx
docker run --name php-nginx -p 10000:80 -d \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link php-fpm71:php \
nginx
-
ro
只读 -
--link php-fpm7.4:php
把php-fpm7.4:php
的网络并入 nginx,并通过修改 nginx 的/etc/hosts
,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
注:因为是nginx去 link PHP 所以,在启动Nginx的时候,PHP要先启动起来
启动如下图所示:
编写 index.php 文件 查看phpinfo();
vim /root/nginx/www/index.php
访问路由 http://192.168.174.130:10000/index.php