Docker构建PHP镜像第二篇

Docker构建PHP镜像

       前面跟大家分享过一篇构建PHP镜像的文章,今天再次跟大家分享构建PHP镜像的文章,源于上周我的PHP容器发现了挖矿程序,我尝试删除病毒重新运行容器还是发现挖矿程序,所以我怀疑我用的基础镜像原本就有问题,所以我打算直接换个基础镜像来构建PHP镜像,我们分别创建Dockerfile(构建镜像文件)、run.sh(镜像启动文件)。

       一、构建镜像文件

FROM php:7.3.32-fpm-alpine3.13

# 作者
LABEL MAINTAINER="hzx790254812@gmail.com"

# 时区
ENV TZ "Asia/Shanghai"
RUN echo ${TZ} >/etc/timezone

# 默认关闭opcode
ENV OPCODE 0

# 复制composer命令
COPY composer.phar /usr/local/bin/composer

# 配置阿里云镜像源,加快构建速度
# 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 \
    && 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/composer

RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

#暴露端口
EXPOSE 9000

# 复制启动文件
COPY run.sh /run.sh
RUN chmod +x /run.sh

# 启动执行文件
ENTRYPOINT ["/run.sh"]

在这里我们以alpine:3.12为基础镜像,安装PHP7以及对应扩展,同时安装composer。

       二、镜像启动文件

#!/usr/bin/env sh
set -e

crond
php-fpm

镜像默认启动PHP7以及定时任务,由于我的项目需要用到定时调度,所以默认开启定时任务,方便我我直接映射定时任务命令进到容器。

      三、准备composer

      在上面步骤我是直接将composer文件下到本地后,通过copy方式进行打包,而不是直接下载的方式进行安装,这样可以节省部分镜像打包时间,大家可以通过我分享的地址进行下载

链接: https://pan.baidu.com/s/1Khwz_CCZnUi6Iu0VlJ0YyA 提取码: iqm6 复制这段内容后打开百度网盘手机App,操作更方便哦

或者到官网下载合适版本

https://getcomposer.org/download/

记得最后将文件名命名为composer.phar。

      四、构建镜像

      我们在当前构建目录下输入以下命令镜像构建

docker build -t hongzhuangxian/php-fpm7.3-diy .
docker push hongzhuangxian/php-fpm7.3-diy .

等镜像构建完之后,便将镜像推到docker hub仓库。

       目前我已经将PHP容器切换到这个镜像,没有发现挖矿程序,大家如果生产上用到第三方镜像,大家请慎用是否存在挖矿程序。

0条评论

发表评论