Aristotle
发布于 2023-12-03 / 7 阅读 / 0 评论 / 0 点赞

docker构建nginx+php8

docker构建nginx+php8

参考:https://codeleading.com/article/91176068635/

参考:Docker PHP如何启用MySQL扩展

参考:github项目,使用install-php-extensions 安装docker php扩展

拉取官方php8.0镜像

docker pull php:8.0-fpm
// --name php8 将php的容器命名为php8// ~/Desktop/wwwroot/:/www 本地~/Desktop/wwwroot/目录映射至容器/www目录// -d 后台运行docker run --name php8 -v ~/Desktop/wwwroot/:/www -d php:8.0-fpm

拉取官方最新nginx镜像

docker pull nginx:latest

创建本地nginx配置目录 

~/Desktop/workspacce/docker/nginx/conf

在上面配置目录里创建demo.conf 

server {    listen       8801;    server_name  localhost;     location / {        root   /usr/share/nginx/html/demo;        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/demo/$fastcgi_script_name;        include        fastcgi_params;    }}
// -p 8801:8801: 端口映射,把 nginx 中的 8801 映射到本地的 8801 端口。前面是本地端口// ~/Desktop/wwwroot: 是本地www的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。// ~/Desktop/workspacce/docker/nginx/conf: 是上面创建的本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。// --link php8:php: 把 php8 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。 docker run --name nginx-php8 -p 8801:8801 -d \    -v ~/Desktop/wwwroot:/usr/share/nginx/html:ro \    -v ~/Desktop/workspacce/docker/nginx/conf:/etc/nginx/conf.d:ro \    --link php8:php \    nginx

扩展:

安装composer

进入php8容器

docker exec -it php8 /bin/bash

安装composer

curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer

composer install 可能会出现错误提示 ”Failed to download symfony/polyfill-mbstring from dist: The zip extension and unzip/7z commands are both missing, skipping.“

执行以下命令 或者 自行安装git

apt-get updateapt-get install zip unzip

安装php-redis扩展

打开官方php redis扩展页面,选择合适的redis源码扩展包

https://pecl.php.net/package/redis

curl -O https://pecl.php.net/get/redis-5.3.4.tgztar xfz redis-5.3.4.tgzmv redis-5.3.4 /usr/src/php/ext/redisdocker-php-ext-install redis

使用php -m可查看redis扩展是否安装成功

装完扩展后需要重启php容器

docker restart php8


使用docker php镜像官方工具安装扩展

Docker PHP如何启用MySQL扩展

我下载的镜像是PHP7版本:docker pull php:7.4.30-fpm,容器起名为php7

PHP镜像官方提供了帮助文档,其中提到了相关的命令,这里推荐一篇博客,该博客对于扩展的几个相关命令讲的很清楚

命令

参数

作用

docker-php-source

extract | delete

加载、移除扩展文件

docker-php-ext-install

ext

安装并启用扩展

docker-php-ext-enable

ext

启用扩展

docker-php-ext-configure

没用过

不知道

进入到容器中,执行docker-php-source extract命令加载扩展文件,加载后在/usr/src目录下会多出php目录

$ /var/www/html# cd /usr/src
$ /usr/src# ls
php.tar.xz  php.tar.xz.asc

$ /usr/src# docker-php-source extract
$ /usr/src# ls
php  php.tar.xz  php.tar.xz.asc

进入/usr/src/php/ext目录,执行docker-php-ext-install mysqli命令安装MySQL扩展

$ /usr/src# cd /usr/src/php/ext
$ /usr/src/php/ext# docker-php-ext-install mysqli
......

至此MySQL扩展已安装完成,最后将一开始加载的扩展文件收起来

$ /usr/src/php/ext# docker-php-source delete

然后退出容器重启重启即可