Skip to content

Instantly share code, notes, and snippets.

@yaredc
Last active May 18, 2020 19:23
Show Gist options
  • Save yaredc/f91e8082cdc0ab7caa826a4cf6e5e7c3 to your computer and use it in GitHub Desktop.
Save yaredc/f91e8082cdc0ab7caa826a4cf6e5e7c3 to your computer and use it in GitHub Desktop.
version: "3"
volumes:
composer:
services:
php:
image: php/php:7.4
build:
context: .
dockerfile: ./php.dockerfile
volumes:
- ./:/var/www
- composer:/home/www-data/.composer
working_dir: /var/www
environment:
XDEBUG_CONFIG: "remote_host=host.docker.internal remote_enable=1"
COMPOSER_MEMORY_LIMIT: "-1"
restart: always
FROM php:7.4-fpm
#TIMEZONE
RUN cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime &&\
echo "Europe/Berlin" > /etc/timezone
#NAMESERVERS
RUN echo "nameserver 1.1.1.1" >> /etc/resolv.conf &&\
echo "nameserver 1.0.0.1" >> /etc/resolv.conf &&\
echo "nameserver 8.8.8.8" >> /etc/resolv.conf &&\
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
#DEPENDENCIES
RUN apt-get update &&\
apt-get install -y --no-install-recommends build-essential \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
curl \
libcurl4 \
libcurl4-openssl-dev \
zlib1g-dev \
libicu-dev \
libmemcached-dev \
memcached \
default-mysql-client \
libmagickwand-dev \
unzip \
libzip-dev
#CONFIGURE EXTENSIONS
RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg
#INSTALL EXTENSIONS
RUN docker-php-ext-install -j$(nproc) gd &&\
docker-php-ext-install -j$(nproc) pdo &&\
docker-php-ext-install -j$(nproc) pdo_mysql &&\
docker-php-ext-install -j$(nproc) mysqli &&\
docker-php-ext-install -j$(nproc) intl &&\
docker-php-ext-install -j$(nproc) zip
#IMAGICK
ENV EXT_IMAGICK_VERSION=3.4.4
RUN docker-php-source extract &&\
mkdir -p /usr/src/php/ext/imagick &&\
curl -fsSL https://github.com/Imagick/imagick/archive/$EXT_IMAGICK_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/imagick --strip 1 &&\
docker-php-ext-install imagick &&\
docker-php-source delete
#IGBINARY
ENV EXT_IGBINARY_VERSION=3.1.2
RUN docker-php-source extract &&\
mkdir -p /usr/src/php/ext/igbinary &&\
curl -fsSL https://github.com/igbinary/igbinary/archive/$EXT_IGBINARY_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/igbinary --strip 1 &&\
docker-php-ext-install igbinary &&\
docker-php-source delete
#REDIS
ENV EXT_REDIS_VERSION=5.2.2
RUN docker-php-source extract &&\
mkdir -p /usr/src/php/ext/redis &&\
curl -fsSL https://github.com/phpredis/phpredis/archive/$EXT_REDIS_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/redis --strip 1 &&\
docker-php-ext-configure redis --enable-redis-igbinary &&\
docker-php-ext-install redis &&\
docker-php-source delete
#PHP.INI SETTINGS
RUN echo "date.timezone=Europe/Berlin" >> "$PHP_INI_DIR"/php.ini-production &&\
echo "memory_limit=2048M" >> "$PHP_INI_DIR"/php.ini-production &&\
echo "date.timezone=Europe/Berlin" >> "$PHP_INI_DIR"/php.ini-development &&\
echo "memory_limit=2048M" >> "$PHP_INI_DIR"/php.ini-development &&\
cp "$PHP_INI_DIR"/php.ini-production "$PHP_INI_DIR"/php.ini &&\
echo "php_flag[display_errors]=off" >> /usr/local/etc/php-fpm.conf &&\
echo "php_admin_flag[log_errors]=on" >> /usr/local/etc/php-fpm.conf &&\
echo "php_admin_value[error_log]=/proc/self/fd/2" >> /usr/local/etc/php-fpm.conf &&\
echo "php_admin_value[error_reporting]=E_ALL" >> /usr/local/etc/php-fpm.conf &&\
echo "php_admin_value[display_startup_errors]=off" >> /usr/local/etc/php-fpm.conf
#XDEBUG
ENV EXT_XDEBUG_VERSION=2.9.5
RUN docker-php-source extract &&\
mkdir -p /usr/src/php/ext/xdebug &&\
curl -fsSL https://github.com/xdebug/xdebug/archive/$EXT_XDEBUG_VERSION.tar.gz | tar xvz -C /usr/src/php/ext/xdebug --strip 1 &&\
docker-php-ext-configure xdebug &&\
docker-php-ext-install xdebug &&\
docker-php-source delete
RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.remote_autostart=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.default_enable=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.remote_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
echo "xdebug.profiler_enable=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini &&\
cp "$PHP_INI_DIR"/php.ini-development "$PHP_INI_DIR"/php.ini &&\
echo "php_flag[display_errors]=on" >> /usr/local/etc/php-fpm.conf &&\
echo "php_admin_value[display_startup_errors]=on" >> /usr/local/etc/php-fpm.conf
#COMPOSER
ENV COMPOSER_HOME="/home/www-data/.composer" COMPOSER_MEMORY_LIMIT="-1"
RUN cd /tmp &&\
curl -sS https://getcomposer.org/installer | php &&\
mv composer.phar /usr/local/bin/composer &&\
chmod a+x /usr/local/bin/composer &&\
cd / &&\
mkdir -p /home/www-data/.composer &&\
chown -R www-data:www-data /home/www-data/.composer &&\
chmod -R 0774 /home/www-data/.composer
#PHING
RUN curl -sS https://www.phing.info/get/phing-latest.phar > /usr/local/bin/phing &&\
chmod a+x /usr/local/bin/phing
#CLEANUP
RUN apt-get clean &&\
rm -rf /tmp/* &&\
rm -rf /var/lib/apt/lists/*
#WORKDIR
RUN mkdir -p /var/www &&\
chown -R www-data:www-data /var/www &&\
chmod -R 0774 /var/www &&\
mkdir -p /home/www-data &&\
usermod -d /home/www-data www-data
WORKDIR /var/www
USER www-data
EXPOSE 9000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment