dockerfile构建php并添加扩展
使用官方的images包,但是通常扩展不完整,使用mlocati/docker-php-extension-installer来安装扩展构建镜像
使用ation构建的实例 https://github.com/jcleng/dockerphp
FROM php:8.0-zts
ENV TZ=Asia/Shanghai
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN set -eux; \
chmod +x /usr/local/bin/install-php-extensions; \
install-php-extensions \
amqp \
apcu \
bcmath \
bz2 \
calendar \
decimal \
enchant \
event \
exif \
gd \
gettext \
gmp \
igbinary \
imagick \
intl \
lzf \
memcached \
mongodb \
msgpack \
mysqli \
opcache \
pcntl \
pdo_mysql \
pdo_pgsql \
pgsql \
redis \
sockets \
swoole \
tidy \
timezonedb \
uuid \
xlswriter \
xsl \
yac \
yaml \
zip \
parallel
如果扩展在install-php-extensions
支持列表没有的, 可以通过官方包的脚本进行源码安装扩展
FROM php:8.0-zts
# 安装pdo_mysql
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-install gd
# 源码安装扩展redis,其他扩展一样,替换redis即可
RUN curl -fsSL 'https://github.com/phpredis/phpredis/archive/refs/tags/6.0.2.tar.gz' -o redis.tar.gz \
&& mkdir -p redis \
&& tar -xf redis.tar.gz -C redis --strip-components=1 \
&& rm redis.tar.gz \
&& ( \
cd redis \
&& phpize \
&& ./configure --enable-redis \
&& make -j "$(nproc)" \
&& make install \
) \
&& rm -r redis \
&& docker-php-ext-enable redis
构建和推送
docker build . -t registry.cn-hangzhou.aliyuncs.com/jcleng/parallel-8.0:dev
docker push registry.cn-hangzhou.aliyuncs.com/jcleng/parallel-8.0:dev