Docker
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条评论