Janrs.com | 杨建勇
Janrs.com | 杨建勇

Docker部署php

[!Tip]
Docker部署php服务


Docker部署php服务

[!NOTE]
镜像使用的是阿里的私人镜像
安装目录为/docker/nginx-web

1.创建docker网络

[!NOTE]
因为要使用到redis以及php,所以网络
我这边使用的自定义的bridge网络


docker network create web-net

2.登录阿里镜像

docker login --username=yjy86868@163.com registry.cn-shenzhen.aliyuncs.com

3.部署php

3.1 创建目录

[!NOTE]
创建php的配置地址以及项目存放地址

mkdir -P /docker/php-v8.1.10 && mkdir /php_projects

3.2 部署服务

[!NOTE]
有时候存在多版本的php。这里指定的端口为9001

docker run --name php81-fpm \
-p 9001:9000 \
-v /php_projects/:/php_projects \
-v /docker/php-v8.1.10/conf/:/etc/php/conf \
-v /docker/php-v8.1.10/logs/:/etc/php/logs \
--network web-net \
-d registry.cn-shenzhen.aliyuncs.com/yjy_k8s/php:v8.1.10

3.3 添加扩展

[!NOTE]
需要添加国内阿里的apt-get源。不然很慢
sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list

3.3.1 安装已有扩展

查看容器

docker ps -a

显示

9a2d2a63fd4d   registry.cn-shenzhen.aliyuncs.com/yjy_k8s/nginx:v1.23.1   "/docker-entrypoint.…"   6 hours ago   Up 32 minutes   0.0.0.0:801->80/tcp, :::801->80/tcp         nginx-php8.1.10
5bac7581539b   registry.cn-shenzhen.aliyuncs.com/yjy_k8s/php:v8.1.10     "docker-php-entrypoi…"   6 hours ago   Up 33 minutes   0.0.0.0:9001->9000/tcp, :::9001->9000/tcp   php81-fpm
a2eb66d84546   registry.cn-shenzhen.aliyuncs.com/yjy_k8s/nginx:v1.23.1   "/docker-entrypoint.…"   6 hours ago   Up 33 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp           nginx-web

进入容器

docker exec -it php81-fpm /bin/bash

进入存放扩展的文件夹

cd /usr/src/ && ls

解压

tar xvf php.tar.xz

进入扩展文件夹

cd php-8.1.10/ext

更新apt-get

apt-get update

安装依赖

apt-get install libcurl4-openssl-dev libffi-dev libfreetype-dev

安装扩展

docker-php-ext-install calendar curl exif ffi gd  mysqli opcache openssl pcntl pdo pdo_mysql

3.3.2 安装额外扩展

安装vim
apt-get update && apt-get install vim -y
安装 mongodb 扩展

安装

pecl install mongodb

添加

cd /usr/local/etc/php/conf.d &&
vim docker-php-ext-mongodb.ini

添加扩展

extension=mongodb.so
安装igbinary扩展

安装

pecl install igbinary

添加

cd /usr/local/etc/php/conf.d &&
vim docker-php-ext-igbinary.ini

添加扩展

extension=igbinary.so
安装redis扩展

安装

pecl install redis

[!NOTE]
安装过程中会询问是否使用igbinary,输入yes
其他的则直接默认不使用

添加扩展

cd /usr/local/etc/php/conf.d &&
vim docker-php-ext-redis.ini

添加扩展

extension=redis.so
重启容器

安装扩展后重启容器使扩展生效

查看已安装的所有扩展

查看

php -m

显示

[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
hash
iconv
igbinary
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
Zend OPcache
zlib

[Zend Modules]
Zend OPcach

4.修改php.ini

所有的配置文件放在/usr/local/etc/php/conf.d
如果需要添加配置,则在该目录下添加一个ini文件即可。配置项跟原来的方式一样
修改后重启以下容器确保已经加载即可。

如果你有任何问题,欢迎在底部留言。或者点击加入微信技术交流群 | 我的GitHub

码仔

文章作者

Janrs.com

发表回复

textsms
account_circle
email

Janrs.com | 杨建勇

Docker部署php
[!Tip] Docker部署php服务 Docker部署php服务 [!NOTE] 镜像使用的是阿里的私人镜像 安装目录为/docker/nginx-web 1.创建docker网络 [!NOTE] 因为要使用到redis以及php,所以网络 我…
扫描二维码继续阅读
2022-03-20