实践说明:基于RHEL7(CentOS7.9)部署docker环境(23.0.1、24.0.2),编排也可应用于RHEL7-9(如AlmaLinux9.1),但因为docker的特性,适用场景是不限于此的。 文档形成时期:2017-2023年 因系统或软件版本不同,构建部署可能略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。
文章目录
创建数据持久化目录
Docker单独构建PHP镜像
查看默认配置、版本和已安装模块
php_Dockerfile
创建容器
php.ini配置
设置扩展
模块安装结果
Docker单独构建Nginx镜像
Docker单独构建Redis镜像
下载和安装Compose
创建数据持久化目录
docker-compose.yml文件内容
Compose编排构建
构建网络加速
重新构建前清理现场
一键删除docker-compose镜像和容器示例
清除docker镜像缓存
项目启停和查看
和外部网络通信
Mysql环境
创建数据持久化目录
mkdir -p /opt/docker/{nginx_cfg,nginx_log,php_cfg,php_log,redis_cfg,redis_log} /opt/web
Docker单独构建PHP镜像
compose构建过程中,PHP是最复杂最紧要的,先单独构建PHP镜像很有必要。
拉取官方7.4的php-fpm(默认是拉取最新版) docker pull php:7.4.33-fpm
或通过Dockerfile构建一个新的镜像(推荐) docker buildx build -t tmtcha/php:7.4.33-fpm-tmp -f /root/sh/Dockerfiles/Independent/php_Dockerfile_tmp .
#创建自定义网络,并指定网段、网关,只有定义了网段,才可以使用此网络为容器分配固定IP docker network create -d bridge --subnet 10.1.4.0/24 --gateway 10.1.4.1 custom_bridge_net
运行容器 docker run -d --name phpfpm74-tmp -v /opt/web/:/opt/web --network custom_bridge_net --ip 10.1.4.3 tmtcha/php:7.4.33-fpm-tmp
查看默认配置、版本和已安装模块
docker官方php7.4.33-fpm的镜像使用的系统版本是基于Debian11
docker exec phpfpm74 /bin/bash -c 'cat /etc/issue'
Debian GNU/Linux 11 \n \l
查看默认源
docker exec phpfpm74-tmp /bin/bash -c 'cat /etc/apt/sources.list'
# deb http://snapshot.debian.org/archive/debian/20221114T000000Z bullseye main
deb http://deb.debian.org/debian bullseye main
# deb http://snapshot.debian.org/archive/debian-security/20221114T000000Z bullseye-security main
deb http://deb.debian.org/debian-security bullseye-security main
# deb http://snapshot.debian.org/archive/debian/20221114T000000Z bullseye-updates main
deb http://deb.debian.org/debian bullseye-updates main
查看php版本
[root@localhost ~]# docker exec phpfpm74 /bin/bash -c 'php -version'
PHP 7.4.33 (cli) (built: Nov 15 2022 06:05:55) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
官方php7.4.33默认安装模块
[root@localhost ~]# docker exec phpfpm74 /bin/bash -c 'php -m'
[PHP Modules]
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
[Zend Modules]
和php7.1.33的差不多,仅多一个sodium
配置拷贝出来: mkdir /root/recycle_bin/phpfpm74;docker cp phpfpm74:/usr/local/etc /root/recycle_bin/phpfpm74
php_Dockerfile
cat /root/sh/Dockerfiles/Independent/php_Dockerfile
FROM php:7.4.33-fpm
MAINTAINER Fisher "N"
# 设置时区
ENV TZ=Asia/Shanghai
#Download PHP extensions
#ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/
#RUN chmod uga+x /usr/local/bin/install-php-extensions && sync
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& mv /etc/apt/sources.list /etc/apt/sources.list.bak \
&& echo 'deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib ' > /etc/apt/sources.list \
&& echo 'deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib ' >> /etc/apt/sources.list \
&& echo 'deb https://mirrors.aliyun.com/debian-security/ bullseye-security main ' >> /etc/apt/sources.list \
&& echo 'deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main ' >> /etc/apt/sources.list \
&& echo 'deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib ' >> /etc/apt/sources.list \
&& echo 'deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib ' >> /etc/apt/sources.list \
&& echo 'deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib ' >> /etc/apt/sources.list \
&& echo 'deb-src https://mirrors.aliyun.com/debian/ bullseye-backports
推荐文章
发表评论