本例使用的是电脑是MacBook Pro,搭建架构是:宿主机(mac)Nginx,Docker里部署PHP7.2-FPM
宿主机安装Nginx¶
可自行编译或者下载安装包,我这里选择了brew安装
宿主机安装Docker¶
我这里选择【Mac with Apple Chip】下载版本,安装,然后选择国内源
"registry-mirrors": [
"http://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
docker 安装 php7.2.34¶
0、搜索php源:
https://hub.docker.com/_/php?tab=tags&page=1&name=7.2-fpm
1、安装PHP
docker pull php:7.2-fpm
docker run -d --name php72-fpm -p 9527:9000 -v /Users/liyuchao/xxx:/var/www/html php:7.2-fpm
「说明」
9527 端口是给php72-fpm用的,后续nginx配置项里,需要注意这个
/var/www/html 是php-fpm默认web目录
2、docker 中安装PHP扩展
大部分都可以使用 docker-php-ext-install安装,例如:
docker-php-ext-install pdo_mysql gd
redis使用pecl安装
pecl install redis
docker-php-ext-enable redis
比较特殊的几个标记了一下对应的版本号,需要自行编译安装
安装apcu:
https://pecl.php.net/get/apcu-5.1.21.tgz
phpize
make
make install
安装imagick: 参考 https://blog.csdn.net/weixin_34094559/article/details/116174201
安装gd:
apt-get install --allow-downgrades -y zlib1g=1:1.2.8.dfsg-5 zlib1g-dev libz-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
&& docker-php-ext-install -j$(nproc) gd
docker安装ps [ps: command not found]
apt-get update
apt install procps
宿主机(mac)配置nginx¶
在/opt/homebrew/etc/nginx/servers下新增一个文件:
server {
listen 80;
server_name 127.0.0.1;
root /Users/liyuchao/xxx;
access_log /usr/local/var/log/nginx/php-access.log;
error_log /usr/local/var/log/nginx/php-error.log;
location / {
autoindex on;
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9527;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
nginx -s reload
不出意外访问http://127.0.0.1/,可以看到 hello world!
docker命令科普¶
docker ps -a 显示所有的容器,包括未运行的
docker images 查看镜像
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG] 将容器打包成镜像
docker commit -m"banban php72-fpm" -a"liyuchao" 3a3d106f102c php-banban:7.2-fpm
docker save 51303b7c2668 >lyc.tar 导出镜像
docker load < lyc.tar 导入镜像
docker images
docker tag xxxxxx php:7.2-fpm