Skip to content
Snippets Groups Projects
Select Git revision
  • 7.4.27
  • main default protected
  • php-8.2 protected
  • php-8.3 protected
  • php-8.1 protected
  • php-7.4 protected
  • php-8.0 protected
  • php-7.3 protected
  • php-7.1 protected
  • php-7.0 protected
  • php-7.2 protected
  • 8.2.26
  • 8.3.14
  • 8.1.31
  • 7.4.33.1
  • 8.1.30
  • 8.2.24
  • 8.3.12
  • 8.1.27
  • 8.2.15
  • 8.3.2
  • 8.3.0
  • 8.2.13
  • 8.1.26
  • 8.2.8
  • 8.1.21
  • 8.0.29
  • 8.2.6
  • 8.2.5
  • 8.1.18
  • 8.0.28
31 results

Dockerfile

Blame
  • user avatar
    Felipe Weckx authored
    910a18ad
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Dockerfile 2.67 KiB
    #
    # PHP-FPM image for development of LAB3 applications.
    #
    # This version extends from the php:7.1-fpm-alpine and adds some tools and extensions
    #
    FROM php:7.4.27-fpm-alpine
    
    MAINTAINER Felipe Weckx <felipe@lab3dvlp.com>
    
    RUN apk --no-cache add \
            autoconf \
            build-base \
            bzip2-dev \
            curl-dev \
            cyrus-sasl-dev \
            freetype-dev \
            gettext \
            git \
            openssh-client \
            icu-dev \
            imagemagick-dev \
            libjpeg-turbo-dev \
            libpng-dev \
            libtool \
            libxml2-dev \
            libxslt-dev \
            openssl-dev \
            pcre-dev \
            oniguruma \
            oniguruma-dev \
            postgresql-dev \
            make \
            openldap-dev \
            zlib-dev \
            libzip-dev \
        && docker-php-ext-install -j2 \
            bcmath \
            bz2 \
            curl \
            calendar \
            gd \
            iconv \
            intl \
            ldap \
            mbstring \
            mysqli \
            opcache \
            pcntl \
            pdo_mysql \
            pdo_pgsql \
            pgsql \
            xsl \
            zip \
    	soap \
        && pecl install apcu && docker-php-ext-enable apcu \
        && pecl install redis && docker-php-ext-enable redis \
        && pecl install imagick && docker-php-ext-enable imagick \
        && rm -rf /tmp/pear ~/.pearrc \
        && apk --no-cache del \
            autoconf \
            build-base \
            libtool \
            make
    
    # Install Composer and PHPUnit
    RUN curl -sS https://getcomposer.org/installer |  php -- --install-dir=/usr/local/bin --filename=composer \
     && curl -o /usr/local/bin/phpunit -L https://phar.phpunit.de/phpunit.phar \
     && chmod +x /usr/local/bin/phpunit 
    
    # Install Ioncube
    RUN curl -o /tmp/ioncube-loader.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \
     && cd /usr/local \
     && tar zxvf /tmp/ioncube-loader.tar.gz \
     && rm /tmp/ioncube-loader.tar.gz
    
    # Run as root
    RUN sed -i 's/www-data/root/' /usr/local/etc/php-fpm.d/www.conf
    
    # Default environment
    ENV PHP_ENVIRONMENT production
    
    # Default PHP Settings
    ENV PHP_MEMORY_LIMIT 128M
    ENV PHP_TIMEZONE America/Sao_Paulo
    ENV PHP_DISPLAY_ERRORS Off
    ENV PHP_ERROR_REPORTING "E_ALL & ~E_DEPRECATED & ~E_STRICT"
    ENV PHP_MAX_EXECUTION_TIME 30
    ENV PHP_POST_MAX_SIZE 20M
    ENV PHP_UPLOAD_MAX_FILESIZE 20M
    ENV PHP_MAX_FILE_UPLOADS 20
    ENV PHP_FPM_MAX_CHILDREN 15
    ENV PHP_FPM_START_SERVERS 2
    ENV PHP_FPM_MIN_SPARE_SERVERS 1
    ENV PHP_FPM_MAX_SPARE_SERVERS 5
    
    # Copy php.ini
    COPY conf/php.ini.template /usr/local/etc/php/php.ini.template
    
    # Copy www.conf
    COPY conf/www.conf.template /usr/local/etc/php/www.conf.template
    
    # Set entrypoint
    COPY scripts/entrypoint.sh /usr/local/bin
    ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
    
    # CMD
    CMD ["php-fpm", "-R"]