Skip to content

Instantly share code, notes, and snippets.

@yaredc
Created May 26, 2020 21:05
Show Gist options
  • Select an option

  • Save yaredc/5ee10b94cb173b442be8f4dbaea20356 to your computer and use it in GitHub Desktop.

Select an option

Save yaredc/5ee10b94cb173b442be8f4dbaea20356 to your computer and use it in GitHub Desktop.
FROM php:7.4-fpm-alpine
###########################################################
#PRODUCTION ENVIRONMENT
###########################################################
ENV PHP_FPM_USER="www-data" PHP_FPM_GROUP="www-data"
#TIMEZONE
RUN apk add --no-cache --virtual .deps tzdata &&\
cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime &&\
echo "Europe/Berlin" > /etc/timezone &&\
apk del .deps
#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 apk add --no-cache --virtual .deps \
autoconf \
build-base \
freetype-dev \
jpeg-dev \
libpng-dev \
curl-dev \
zlib-dev \
icu-dev \
memcached-dev \
libzip-dev \
imagemagick-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
#PROD
RUN apk del .deps &&\
apk add --no-cache freetype \
jpeg \
libpng \
curl \
zlib \
icu \
memcached \
libzip \
imagemagick \
git \
openssh-client
###########################################################
#DEVELOPMENT ENVIRONMENT
###########################################################
#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 &&\
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
RUN cd /tmp &&\
curl -sS https://getcomposer.org/installer | php &&\
mv composer.phar /bin/composer &&\
chmod a+x /bin/composer &&\
cd / &&\
su www-data -s /bin/sh -c "composer config --global github-oauth.github.com bd937536ef87c1f4e26ffcea742d47360afe5120" &&\
su www-data -s /bin/sh -c "composer global require fxp/composer-asset-plugin"
ENV COMPOSER_HOME="/home/$PHP_FPM_USER/.composer" COMPOSER_MEMORY_LIMIT="-1"
#PHING
RUN curl -sS https://www.phing.info/get/phing-latest.phar > /bin/phing &&\
chmod a+x /bin/phing
#WORKDIR
RUN mkdir -p /var/www &&\
chown -R $PHP_FPM_USER:$PHP_FPM_GROUP /var/www &&\
chmod -R 0774 /var/www &&\
mkdir -p /home/$PHP_FPM_USER/.ssh &&\
echo "Host bitbucket.zoran.com" > /home/$PHP_FPM_USER/.ssh/config &&\
echo " Hostname zoran.com" >> /home/$PHP_FPM_USER/.ssh/config &&\
echo " User git" >> /home/$PHP_FPM_USER/.ssh/config &&\
echo " IdentityFile ~/.ssh/repo.key" >> /home/$PHP_FPM_USER/.ssh/config &&\
chmod -R 0700 /home/$PHP_FPM_USER/.ssh &&\
chown -R $PHP_FPM_USER:$PHP_FPM_GROUP /home/$PHP_FPM_USER
WORKDIR /var/www
USER $PHP_FPM_USER
EXPOSE 9000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment