实践说明:基于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

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: