2018-11-23 20:47:26 +08:00
|
|
|
#
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
# Image Setup
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
#
|
|
|
|
|
|
|
|
ARG PHP_VERSION=${PHP_VERSION}
|
|
|
|
FROM php:${PHP_VERSION}-alpine
|
|
|
|
|
|
|
|
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
|
|
|
|
|
2019-12-05 11:16:32 +08:00
|
|
|
# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env.
|
|
|
|
|
|
|
|
ARG CHANGE_SOURCE=false
|
|
|
|
RUN if [ ${CHANGE_SOURCE} = true ]; then \
|
|
|
|
# Change application source from dl-cdn.alpinelinux.org to aliyun source
|
|
|
|
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \
|
|
|
|
;fi
|
|
|
|
|
2018-11-23 20:47:26 +08:00
|
|
|
RUN apk --update add wget \
|
|
|
|
curl \
|
|
|
|
git \
|
|
|
|
build-base \
|
|
|
|
libmemcached-dev \
|
|
|
|
libmcrypt-dev \
|
|
|
|
libxml2-dev \
|
|
|
|
zlib-dev \
|
|
|
|
autoconf \
|
|
|
|
cyrus-sasl-dev \
|
|
|
|
libgsasl-dev \
|
2019-05-29 08:53:13 +08:00
|
|
|
supervisor \
|
|
|
|
procps
|
2018-11-23 20:47:26 +08:00
|
|
|
|
|
|
|
RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl
|
2019-07-30 12:54:56 +08:00
|
|
|
RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb
|
2018-11-23 20:47:26 +08:00
|
|
|
|
|
|
|
#Install BCMath package:
|
|
|
|
ARG INSTALL_BCMATH=false
|
|
|
|
RUN if [ ${INSTALL_BCMATH} = true ]; then \
|
|
|
|
docker-php-ext-install bcmath \
|
|
|
|
;fi
|
|
|
|
|
2019-07-22 22:29:37 +08:00
|
|
|
#Install Sockets package:
|
2019-07-30 12:48:24 +08:00
|
|
|
ARG INSTALL_SOCKETS=false
|
|
|
|
RUN if [ ${INSTALL_SOCKETS} = true ]; then \
|
2019-07-22 22:29:37 +08:00
|
|
|
docker-php-ext-install sockets \
|
|
|
|
;fi
|
|
|
|
|
2018-11-23 20:47:26 +08:00
|
|
|
# Install PostgreSQL drivers:
|
|
|
|
ARG INSTALL_PGSQL=false
|
|
|
|
RUN if [ ${INSTALL_PGSQL} = true ]; then \
|
|
|
|
apk --update add postgresql-dev \
|
|
|
|
&& docker-php-ext-install pdo_pgsql \
|
|
|
|
;fi
|
|
|
|
|
2019-07-25 16:18:33 +08:00
|
|
|
# Install Cassandra drivers:
|
|
|
|
ARG INSTALL_CASSANDRA=false
|
|
|
|
RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
|
|
|
|
apk --update add cassandra-cpp-driver \
|
|
|
|
;fi
|
2019-12-05 11:16:32 +08:00
|
|
|
|
2019-09-16 21:00:44 +08:00
|
|
|
# Install PhpRedis package:
|
2019-09-16 20:58:38 +08:00
|
|
|
ARG INSTALL_PHPREDIS=false
|
|
|
|
RUN if [ ${INSTALL_PHPREDIS} = true ]; then \
|
|
|
|
# Install Php Redis Extension
|
|
|
|
printf "\n" | pecl install -o -f redis \
|
|
|
|
&& rm -rf /tmp/pear \
|
|
|
|
&& docker-php-ext-enable redis \
|
|
|
|
;fi
|
2019-07-25 16:18:33 +08:00
|
|
|
|
|
|
|
WORKDIR /usr/src
|
|
|
|
RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
|
|
|
|
git clone https://github.com/datastax/php-driver.git \
|
|
|
|
&& cd php-driver/ext \
|
|
|
|
&& phpize \
|
|
|
|
&& mkdir -p /usr/src/php-driver/build \
|
|
|
|
&& cd /usr/src/php-driver/build \
|
|
|
|
&& ../ext/configure > /dev/null \
|
|
|
|
&& make clean >/dev/null \
|
|
|
|
&& make >/dev/null 2>&1 \
|
|
|
|
&& make install \
|
|
|
|
&& docker-php-ext-enable cassandra \
|
|
|
|
;fi
|
|
|
|
|
2019-11-02 01:35:23 +08:00
|
|
|
# Install MongoDB drivers:
|
|
|
|
ARG INSTALL_MONGO=false
|
|
|
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
|
|
|
pecl install mongodb \
|
|
|
|
&& docker-php-ext-enable mongodb \
|
|
|
|
;fi
|
2019-07-25 16:18:33 +08:00
|
|
|
|
|
|
|
|
2018-11-23 20:47:26 +08:00
|
|
|
###########################################################################
|
|
|
|
# PHP Memcached:
|
|
|
|
###########################################################################
|
|
|
|
|
|
|
|
ARG INSTALL_MEMCACHED=false
|
|
|
|
|
|
|
|
RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
|
|
|
|
# Install the php memcached extension
|
|
|
|
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
|
|
|
|
curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/2.2.0.tar.gz"; \
|
|
|
|
else \
|
2019-10-07 16:19:19 +08:00
|
|
|
curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/v3.1.3.tar.gz"; \
|
2018-11-23 20:47:26 +08:00
|
|
|
fi \
|
|
|
|
&& mkdir -p memcached \
|
|
|
|
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
|
|
|
|
&& ( \
|
|
|
|
cd memcached \
|
|
|
|
&& phpize \
|
|
|
|
&& ./configure \
|
|
|
|
&& make -j$(nproc) \
|
|
|
|
&& make install \
|
|
|
|
) \
|
|
|
|
&& rm -r memcached \
|
|
|
|
&& rm /tmp/memcached.tar.gz \
|
|
|
|
&& docker-php-ext-enable memcached \
|
|
|
|
;fi
|
|
|
|
|
|
|
|
RUN rm /var/cache/apk/* \
|
|
|
|
&& mkdir -p /var/www
|
|
|
|
|
|
|
|
#
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
# Optional Supervisord Configuration
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
#
|
|
|
|
# Modify the ./supervisor.conf file to match your App's requirements.
|
|
|
|
# Make sure you rebuild your container with every change.
|
|
|
|
#
|
|
|
|
|
|
|
|
COPY supervisord.conf /etc/supervisord.conf
|
|
|
|
|
|
|
|
ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]
|
|
|
|
|
|
|
|
#
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
# Optional Software's Installation
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
#
|
|
|
|
# If you need to modify this image, feel free to do it right here.
|
|
|
|
#
|
|
|
|
# -- Your awesome modifications go here -- #
|
|
|
|
|
|
|
|
#
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
# Check PHP version
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
#
|
|
|
|
|
|
|
|
RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}."
|
|
|
|
|
|
|
|
#
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
# Final Touch
|
|
|
|
#--------------------------------------------------------------------------
|
|
|
|
#
|
|
|
|
|
|
|
|
WORKDIR /etc/supervisor/conf.d/
|