西安网站建设瑞信,网站建设的所有权,重庆网站排名优化,网站建设需要哪些东西利用php官网镜像php:7.3-fpm#xff0c;会存在部分插件缺失的情况#xff0c;自行搭建可适用业务的镜像#xff0c;才是真理 Dockerhub 上 PHP 官方基础镜像主要分为三个分支#xff1a;
cli: 没有开启 CGI 也就是说不能运行fpm。只可以运行命令行。fpm: 开启了CGI#x…
利用php官网镜像php:7.3-fpm会存在部分插件缺失的情况自行搭建可适用业务的镜像才是真理 Dockerhub 上 PHP 官方基础镜像主要分为三个分支
cli: 没有开启 CGI 也就是说不能运行fpm。只可以运行命令行。fpm: 开启了CGI可以用来运行web服务也可以用来运行cli命令。zts: 开启了线程安全的版本。 1、继承基础镜像
FROM php:7.3-fpm指定构建镜像的基础源镜像如果本地没有指定的镜像则会自动从 Docker 的公共库 pull 镜像下来。必须是 Dockerfile 中非注释行的第一个指令即一个 Dockerfile 从 FROM 开始 2、安装PHP扩展
2、安装扩展
2.1、安装dockerhub中php官方提供的扩展
安装一些常用的组件pdo、pdo_mysql等
FROM php:7.3-fpm
docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath# 扩展指定一些自定义的编译参数的话
FROM php:7.3-fpm
RUN docker-php-ext-install pdo pdo_mysql mcrypt zip pcntl opcache bcmath\docker-php-ext-install -j$(nproc) iconv \docker-php-ext-configure gd --with-freetype-dir/usr/include/ --with-jpeg-dir/usr/include/ \docker-php-ext-install -j$(nproc) gd
2.2、使用PECL安装扩展
RUN pecl install grpc \docker-php-ext-enable grpc \pecl install -o -f redis \docker-php-ext-enable redis \rm -rf /tmp/pear
2.3、源码安装扩展
针对复杂插件
RUN curl -fsSL https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz -o xcache.tar.gz \mkdir -p /tmp/xcache \tar -xf xcache.tar.gz -C /tmp/xcache --strip-components1 \rm xcache.tar.gz \docker-php-ext-configure /tmp/xcache --enable-xcache \docker-php-ext-install /tmp/xcache \rm -r /tmp/xcache3.开源的镜像库
webdevops/php-nginx:7.3-alpinefirehmx/php-7.3.33-fpm-alpine3.14:v1
4.实际例子 构造一个php7.3.33的镜像 4.1、查看官方基础镜像有什么扩展
docker run php:7.3.34-fpm-alpine3.14 php -m4.2、安装
安装创建库redis、zip、gd、bcmath、pdo_mysql、opcache
redisredis是目前主流的Nosql数据库常用。zip文件压缩扩展。gd图片处理扩展一些图形验证码的生成不能没有这个扩展。bcmath没有这个库的话可能一些框架或者类库的composer依赖校验会无法通过。pdo_mysql连接数据库扩展。opcache 是 PHP 中的 Zend 扩展可以大大提升 PHP 的性能。
4.2.1 创建工程目录
# 创建目录
mkdir lnmp/php -p
cd lnmp/php/# compser地址https://github.com/composer/composer/releases
--
wget https://github.com/composer/composer/releases/download/2.6.3/composer.phar# 配置文件1
mkdir conf.d
echo date.timezone Asia/Shanghai conf.d/date.ini# 配置文件2
# 这里加 \EOF 是防止${OPCODE}被转义
--
cat conf.d/opcode.ini \EOF
opcache.enable${OPCODE}
enable_clopcache.enable_cli1
opcache.revalidate_freq60
opcache.max_accelerated_files100000
opcache.validate_timestamps1
EOF
# 配置文件3
cat www.conf
--
[www]
user www
group www
listen 0.0.0.0:9000
pm dynamic
pm.max_children 100
pm.start_servers 30
pm.min_spare_servers 20
pm.max_spare_servers 50# Dockerfile
touch Dockerfile
--
FROM php:7.3.33-fpm-alpine3.14
LABEL MAINTAINERifanaticfiregmail.com
ENV TZ Asia/Shanghai
ENV TERM xterm
# 默认关闭opcode
ENV OPCODE 0COPY ./conf.d/ $PHP_INI_DIR/conf.d/
COPY composer.phar /usr/local/bin/composer
COPY www.conf /usr/local/etc/php-fpm.d/www.conf
# 创建www用户
RUN addgroup -g 1000 -S www adduser -s /sbin/nologin -S -D -u 1000 -G www www
# 配置阿里云镜像源加快构建速度
RUN sed -i s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g /etc/apk/repositories# PHPIZE_DEPS 包含 gcc g 等编译辅助类库完成编译后删除
RUN apk add --no-cache $PHPIZE_DEPS \apk add --no-cache libstdc libzip-dev vim\apk update \pecl install redis-5.3.4 \pecl install zip \pecl install swoole \docker-php-ext-enable redis zip swoole\apk del $PHPIZE_DEPS
# docker-php-ext-install 指令已经包含编译辅助类库的删除逻辑
RUN apk add --no-cache freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev \apk update \docker-php-ext-configure gd --with-freetype-dir/usr/include/ --with-jpeg-dir/usr/include/ --with-png-dir/usr/include/ \docker-php-ext-install -j$(nproc) gd \docker-php-ext-install -j$(nproc) pdo_mysql \docker-php-ext-install -j$(nproc) opcache \docker-php-ext-install -j$(nproc) bcmath \docker-php-ext-install -j$(nproc) mysqli \chmod x /usr/local/bin/composerRUN mv $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
EXPOSE 9000
ENTRYPOINT [php-fpm]# 构建脚本
cat build-command.sh
--
docker build -t php-7.3.33-fpm-alpine3.14:v1 .# 运行脚本
sh build-command.sh # 查看镜像
docker images
---
php-7.3.33-fpm-alpine3.14 v1 088d571602a3 43 minutes ago 116MB查看构建镜像116M4.3 推送到dockerhub
docker tag php-7.3.33-fpm-alpine3.14:v1 firehmx/php-7.3.33-fpm-alpine3.14:v1# 未登录的话 docker login 登录
docker push firehmx/php-7.3.33-fpm-alpine3.14:v1参考
https://segmentfault.com/a/1190000018372614https://www.cnblogs.com/syushin/p/14955582.htmlhttps://hub.docker.com/_/phphttps://github.com/suyar/docker-php