# #-------------------------------------------------------------------------- # Image Setup #-------------------------------------------------------------------------- # ARG LARADOCK_PHP_VERSION FROM php:${LARADOCK_PHP_VERSION}-alpine LABEL maintainer="Mahmoud Zalt " ARG LARADOCK_PHP_VERSION # 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 RUN apk --update add wget \ curl \ git \ build-base \ libmemcached-dev \ libmcrypt-dev \ libxml2-dev \ zlib-dev \ autoconf \ cyrus-sasl-dev \ libgsasl-dev \ supervisor \ oniguruma-dev \ procps RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb # Add a non-root user to help install ffmpeg: ARG PUID=1000 ENV PUID ${PUID} ARG PGID=1000 ENV PGID ${PGID} RUN addgroup -g ${PGID} laradock && \ adduser -D -G laradock -u ${PUID} laradock #Install BZ2: ARG INSTALL_BZ2=false RUN if [ ${INSTALL_BZ2} = true ]; then \ apk --update add bzip2-dev; \ docker-php-ext-install bz2 \ ;fi #Install GD package: ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ apk add --update --no-cache libpng-dev; \ docker-php-ext-install gd \ ;fi #Install GMP package: ARG INSTALL_GMP=false RUN if [ ${INSTALL_GMP} = true ]; then \ apk add --update --no-cache gmp gmp-dev; \ docker-php-ext-install gmp \ ;fi #Install BCMath package: ARG INSTALL_BCMATH=false RUN if [ ${INSTALL_BCMATH} = true ]; then \ docker-php-ext-install bcmath \ ;fi #Install Sockets package: ARG INSTALL_SOCKETS=false RUN if [ ${INSTALL_SOCKETS} = true ]; then \ docker-php-ext-install sockets \ ;fi # 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 # Install PhpRedis package: 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 ARG INSTALL_FFMPEG=false RUN if [ ${INSTALL_FFMPEG} = true ]; then \ # Add ffmpeg to horizon apk add ffmpeg \ ;fi # Install Cassandra drivers: ARG INSTALL_CASSANDRA=false RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ apk --update add cassandra-cpp-driver \ ;fi 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 # Install MongoDB drivers: ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ pecl install mongodb \ && docker-php-ext-enable mongodb \ ;fi ########################################################################### # YAML: extension ########################################################################### ARG INSTALL_YAML=false RUN if [ ${INSTALL_YAML} = true ]; then \ apk --update add -U --no-cache --virtual temp yaml-dev \ && apk add --no-cache yaml \ && docker-php-source extract \ && pecl channel-update pecl.php.net \ && pecl install yaml \ && docker-php-ext-enable yaml \ && pecl clear-cache \ && docker-php-source delete \ && apk del temp \ ;fi ########################################################################### # 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 \ curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/v3.1.3.tar.gz"; \ 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/