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