之前写了一篇用DockerFile构建PHP环境,但是在日常开发中,我们经常使用一些扩展,比如:Redis、MongoDB以及Swoole,那么我们就需要在容器里面进行PHP相关扩展的安装了,后面我对Dockerfile文件进行了优化,预先安装好这几个扩展(不需要的请自行去掉)。
在之前的版本中,还存在一个比较大的问题,那就是构建速度特别的慢,需要一个多小时左右,甚至还会超时,出错,原因在于,镜像中使用的apt包是国外源,那肯定就很慢了,我们现在修改为阿里云的国内源,最后发现,整个环境构建只需10分钟便可完成,足足提升了几倍。
旧版原文:《Dockerfile构建PHP,Nginx,Composer,lnmp环境》
优化后的Dockerfile:
FROM php:7.2-fpm
MAINTAINER Stephen "mhzuhe@163.com"
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && \
rm -Rf /var/lib/apt/lists/* && \
apt-get update && \
apt-get install -y curl telnet git zlib1g-dev && \
/bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone && \
docker-php-ext-install zip pdo pdo_mysql opcache mysqli && \
apt-get install -y nginx supervisor && \
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
php -r "unlink('composer-setup.php');" && \
pecl install redis mongodb swoole && \
rm -rf /tmp/pear && \
docker-php-ext-enable redis mongodb swoole && \
apt-get clean && rm -rf /var/cache/apt/*
COPY ./supervisord.conf /etc/supervisor/
WORKDIR /var/www/html
EXPOSE 80
CMD ["/usr/bin/supervisord"]
进入容器,查看PHP安装的扩展,有了 redis
、 mongodb
和 swoole
:
root@92c61e2933a1:/var/www/html# php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mongodb
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
swoole
tokenizer
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib