docker file for php7.2-fpm

本文介绍如何通过Docker构建一个包含多种PHP扩展的全能开发环境,涵盖了Redis、Memcached、Swoole等流行组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FROM php:7.2-fpm
MAINTAINER admin "admin@163.com"

# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 更新安装依赖包和PHP核心拓展
RUN apt-get update && apt-get install -y \
        git \
        vim \
        curl \
        wget \
        cmake \
        libfreetype6-dev \
        libjpeg62-turbo-dev \    
        libpng-dev \
        libssl-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
        && docker-php-ext-install zip \
        && docker-php-ext-install pdo_mysql \
        && docker-php-ext-install opcache \
        && docker-php-ext-install mysqli \
        && rm -r /var/lib/apt/lists/*

# 将预先下载好的拓展包从宿主机拷贝进去
COPY ./pkg/redis-5.3.2.tgz /usr/local/src/redis.tgz
COPY ./pkg/libmemcached-1.0.18.tar.gz /usr/local/src/libmemcached.tar.gz
COPY ./pkg/memcached-3.0.4.tgz /usr/local/src/memcached.tgz
COPY ./pkg/mongodb-1.8.1.tgz /usr/local/src/mongodb-1.8.1.tgz
COPY ./pkg/rabbitmq-c-0.9.0.tar.gz /usr/local/src/rabbitmq-c-0.9.0.tar.gz
COPY ./pkg/amqp-1.10.2.tgz /usr/local/src/amqp-1.10.2.tgz

# 安装 PECL 拓展,这里我们安装的是Redis
RUN pecl install /usr/local/src/redis.tgz && echo "extension=redis.so" > /usr/local/etc/php//conf.d/redis.ini

# 安装libmemcached
RUN tar zxf /usr/local/src/libmemcached.tar.gz \
    && cd libmemcached-1.0.18 \
    && ./configure --prefix=/usr/local/libmemcached --with-memcached \
    && make && make install

# 安装memcached
RUN tar zxvf /usr/local/src/memcached.tgz \
    && cd memcached-3.0.4 \
    && phpize \
    && ./configure -enable-memcached -with-php-config=/usr/local/bin/php-config -with-zlib-dir -with-libmemcached-dir=/usr/local/libmemcached -prefix=/usr/local/phpmemcached -disable-memcached-sasl \
    && make && make install \
    && echo "extension=memcached.so" > /usr/local/etc/php/conf.d/memcached.ini

# 安装 Swoole
RUN cd /usr/local/src \
    && git clone --branch v4.5.2 https://gitee.com/swoole/swoole.git \
    && cd swoole \
    && phpize \
    && ./configure --enable-openssl -with-php-config=/usr/local/bin/php-config \
    && make \
    && make install \
    && echo "extension=swoole.so" > /usr/local/etc/php/conf.d/swoole.ini    

## 安装 rabbitmq-c
RUN tar -zxvf rabbitmq-c-0.9.0.tar.gz \
&& cd rabbitmq-c-0.9.0 \
&& mkdir build && cd build \
&& cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c .. \
&& cmake --build .  --target install \
&& cp /usr/local/rabbitmq-c/lib/x86_64-linux-gnu/* /usr/local/rabbitmq-c/lib/

## 安装rabbitmq扩展
RUN tar -zxf amqp-1.10.2.tgz \
&& cd amqp-1.10.2 \
&& phpize \
&& ./configure --with-php-config=/usr/local/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c \
&& make && make install \
&& echo "extension=amqp.so" > /usr/local/etc/php/conf.d/amqp.ini
    
# 安装mongodb扩展
RUN tar zxvf /usr/local/src/mongodb-1.8.1.tgz \
    && cd mongodb-1.8.1 \
    && phpize \
    && ./configure -with-php-config=/usr/local/bin/php-config \
    && make && make install \
    && echo "extension=mongodb.so" > /usr/local/etc/php/conf.d/mongodb.ini

# 安装 Composer
ENV COMPOSER_HOME /root/composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ENV PATH $COMPOSER_HOME/vendor/bin:$PATH

## 除了so文件扩展,还需要库来驱动使用mongodb 
RUN composer require mongodb/mongodb

# 删除扩展包
RUN rm -f /usr/local/src/redis.tgz
RUN rm -f /usr/local/src/libmemcached.tar.gz
RUN rm -f /usr/local/src/memcached.tgz
RUN rm -f /usr/local/src/mongodb-1.8.1.tgz
RUN rm -f /usr/local/src/rabbitmq-c-0.9.0.tar.gz
RUN rm -f /usr/local/src/amqp-1.10.2.tgz


WORKDIR /var/www/html/im

# 写权限
RUN usermod -u 1000 www-data

##启动php-fpm进程

ENTRYPOINT ["/usr/local/sbin/php-fpm", "-c"]

##这里的配置文件是可以运行容器时指定的。

CMD   ["/usr/local/etc/php-fpm.conf"]

 

## 用9000端口运行php-fpm服务

EXPOSE 9000

 

### 根据生成的镜像生成docker容器

sudo docker run -it \
--name php7.2-fpm \
-p 9002:9000 \
-v /var/www/html/learn_php:/var/www/html/learn_php:rw \
-v /var/www/html/dockerfile_php72fpm/phpfpm/php.ini:/usr/local/etc/php/php.ini:ro \
-v /var/www/html/dockerfile_php72fpm/phpfpm/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro \
-v /var/www/html/dockerfile_php72fpm/logs/php-fpm:/var/log/php-fpm:rw \
php72_standard 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值