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