Merge pull request #187 from LaraDock/faster-builds

Faster builds
This commit is contained in:
Mahmoud Zalt 2016-07-27 05:30:30 +03:00 committed by GitHub
commit 5612874b78
4 changed files with 101 additions and 194 deletions

View File

@ -703,7 +703,7 @@ By default **PHP-FPM 7.0** is running.
2 - Search for `Dockerfile-70` in the PHP container section. 2 - Search for `Dockerfile-70` in the PHP container section.
3 - Change the version number, by replacing `Dockerfile-70` with `Dockerfile-5`, like this: 3 - Change the version number, by replacing `Dockerfile-70` with `Dockerfile-56`, like this:
```txt ```txt
php-fpm: php-fpm:
@ -722,16 +722,16 @@ docker-compose build php
1 - Follow the steps of (Switch from PHP `7.0` to PHP `5.6`) except the last one "rebuilding container". 1 - Follow the steps of (Switch from PHP `7.0` to PHP `5.6`) except the last one "rebuilding container".
2 - Open the `docker-compose.yml` again and make sure you are using `Dockerfile-5` like this: 2 - Open the `docker-compose.yml` again and make sure you are using `Dockerfile-56` like this:
```txt ```txt
php-fpm: php-fpm:
build: build:
context: ./php-fpm context: ./php-fpm
dockerfile: Dockerfile-5 dockerfile: Dockerfile-56
``` ```
3 - Open `php-fpm/Dockerfile-5` file and on the first line replace the PHP version from (`FROM php:5.6-fpm`) to (`FROM php:5.5-fpm`). 3 - Open `php-fpm/Dockerfile-56` file and on the first line replace the PHP version from (`FROM php:5.6-fpm`) to (`FROM php:5.5-fpm`).
4 - Now you can rebuild the container 4 - Now you can rebuild the container

View File

@ -4,65 +4,32 @@
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
FROM php:5.6-fpm FROM laradock/php-fpm:5.6--1.0
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
ADD ./laravel.ini /usr/local/etc/php/conf.d #
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/ #--------------------------------------------------------------------------
# Mandatory Software's Installation
#--------------------------------------------------------------------------
#
# Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....)
# are installed on the base image 'laradock/php-fpm' image. If you want
# to add more Software's or remove existing one, you need to edit the
# base image (https://github.com/LaraDock/php-fpm).
#
# #
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# Software's Installation # Optional Software's Installation
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
# Installing tools and PHP extentions using "apt", "docker-php", "pecl", # Optional Software's will only be installed if you set them to `true`
# in the `docker-compose.yml` before the build.
#
# - INSTALL_XDEBUG= false
# - INSTALL_MONGO= false
# #
# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
# "libpng12-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
libmemcached-dev \
libz-dev \
libpq-dev \
libjpeg-dev \
libpng12-dev \
libfreetype6-dev \
libssl-dev \
libmcrypt-dev
# Install the PHP mcrypt extention
RUN docker-php-ext-install mcrypt
# Install the PHP pdo_mysql extention
RUN docker-php-ext-install pdo_mysql
# Install the PHP pdo_pgsql extention
RUN docker-php-ext-install pdo_pgsql
#####################################
# gd:
#####################################
# Install the PHP gd library
RUN docker-php-ext-install gd && \
docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2
#####################################
# MongoDB:
#####################################
ARG INSTALL_MONGO=true
ENV INSTALL_MONGO ${INSTALL_MONGO}
RUN if [ ${INSTALL_MONGO} = true ]; then \
# Install the mongodb extention
pecl install mongodb \
;fi
##################################### #####################################
# xDebug: # xDebug:
@ -76,6 +43,16 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
docker-php-ext-enable xdebug \ docker-php-ext-enable xdebug \
;fi ;fi
#####################################
# MongoDB:
#####################################
ARG INSTALL_MONGO=true
ENV INSTALL_MONGO ${INSTALL_MONGO}
RUN if [ ${INSTALL_MONGO} = true ]; then \
# Install the mongodb extention
pecl install mongodb \
;fi
# #
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
@ -83,6 +60,9 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
ADD ./laravel.ini /usr/local/etc/php/conf.d
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
RUN rm -r /var/lib/apt/lists/* RUN rm -r /var/lib/apt/lists/*
RUN usermod -u 1000 www-data RUN usermod -u 1000 www-data

View File

@ -4,65 +4,32 @@
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
FROM php:7.0-fpm FROM laradock/php-fpm:7.0--1.0
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
ADD ./laravel.ini /usr/local/etc/php/conf.d #
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/ #--------------------------------------------------------------------------
# Mandatory Software's Installation
#--------------------------------------------------------------------------
#
# Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....)
# are installed on the base image 'laradock/php-fpm' image. If you want
# to add more Software's or remove existing one, you need to edit the
# base image (https://github.com/LaraDock/php-fpm).
#
# #
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# Software's Installation # Optional Software's Installation
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
# Installing tools and PHP extentions using "apt", "docker-php", "pecl", # Optional Software's will only be installed if you set them to `true`
# in the `docker-compose.yml` before the build.
#
# - INSTALL_XDEBUG= false
# - INSTALL_MONGO= false
# #
# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
# "libpng12-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
libmemcached-dev \
libz-dev \
libpq-dev \
libjpeg-dev \
libpng12-dev \
libfreetype6-dev \
libssl-dev \
libmcrypt-dev
# Install the PHP mcrypt extention
RUN docker-php-ext-install mcrypt
# Install the PHP pdo_mysql extention
RUN docker-php-ext-install pdo_mysql
# Install the PHP pdo_pgsql extention
RUN docker-php-ext-install pdo_pgsql
#####################################
# gd:
#####################################
# Install the PHP gd library
RUN docker-php-ext-install gd && \
docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2
#####################################
# MongoDB:
#####################################
ARG INSTALL_MONGO=true
ENV INSTALL_MONGO ${INSTALL_MONGO}
RUN if [ ${INSTALL_MONGO} = true ]; then \
# Install the mongodb extention
pecl install mongodb \
;fi
##################################### #####################################
# xDebug: # xDebug:
@ -77,23 +44,15 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
;fi ;fi
##################################### #####################################
# Memcached: # MongoDB:
##################################### #####################################
# Install the memcached extention ARG INSTALL_MONGO=true
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \ ENV INSTALL_MONGO ${INSTALL_MONGO}
&& mkdir -p memcached \ RUN if [ ${INSTALL_MONGO} = true ]; then \
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \ # Install the mongodb extention
&& ( \ pecl install mongodb \
cd memcached \ ;fi
&& phpize \
&& ./configure \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r memcached \
&& rm /tmp/memcached.tar.gz \
&& docker-php-ext-enable memcached
# #
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
@ -101,6 +60,9 @@ RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-m
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
ADD ./laravel.ini /usr/local/etc/php/conf.d
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
RUN rm -r /var/lib/apt/lists/* RUN rm -r /var/lib/apt/lists/*
RUN usermod -u 1000 www-data RUN usermod -u 1000 www-data

View File

@ -4,82 +4,49 @@
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
FROM phusion/baseimage:latest FROM laradock/workspace:1.0
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me> MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
RUN DEBIAN_FRONTEND=noninteractive #
RUN locale-gen en_US.UTF-8 #--------------------------------------------------------------------------
# Mandatory Software's Installation
ENV LANGUAGE=en_US.UTF-8 #--------------------------------------------------------------------------
ENV LC_ALL=en_US.UTF-8 #
ENV LC_CTYPE=UTF-8 # Mandatory Software's such as ("php7.0-cli", "git", "vim", ....) are
ENV LANG=en_US.UTF-8 # installed on the base image 'laradock/workspace' image. If you want
ENV TERM xterm # to add more Software's or remove existing one, you need to edit the
# base image (https://github.com/LaraDock/workspace).
# Add the "PHP 7" ppa #
RUN apt-get install -y software-properties-common && \
add-apt-repository -y ppa:ondrej/php
# #
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# Software's Installation # Optional Software's Installation
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
# Optional Software's will only be installed if you set them to `true`
# Install "PHP Extentions", "libraries", "Software's" # in the `docker-compose.yml` before the build.
RUN apt-get update && \ #
apt-get install -y --force-yes \ # - INSTALL_XDEBUG= false
php7.0-cli \ # - INSTALL_MONGO= false
php7.0-common \ # - COMPOSER_GLOBAL_INSTALL= false
php7.0-curl \ # - INSTALL_NODE= false
php7.0-json \ #
php7.0-xml \
php7.0-mbstring \
php7.0-mcrypt \
php7.0-mysql \
php7.0-pgsql \
php7.0-sqlite \
php7.0-sqlite3 \
php7.0-zip \
php7.0-memcached \
php7.0-gd \
pkg-config \
php-dev \
libcurl4-openssl-dev \
libedit-dev \
libssl-dev \
libxml2-dev \
xz-utils \
libsqlite3-dev \
sqlite3 \
git \
curl \
vim \
nano \
&& apt-get clean
##################################### #####################################
# Composer: # xDebug:
##################################### #####################################
# Install composer and add its bin to the PATH. # Check if xDebug needs to be installed
RUN curl -s http://getcomposer.org/installer | php && \ ARG INSTALL_XDEBUG=true
echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc && \ ENV INSTALL_XDEBUG ${INSTALL_XDEBUG}
mv composer.phar /usr/local/bin/composer RUN if [ ${INSTALL_XDEBUG} = true ]; then \
# Load the xdebug extension only with phpunit commands
# Add the composer.json apt-get install -y --force-yes php7.0-xdebug && \
ADD ./composer.json /root/.composer/composer.json sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini && \
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc \
# Check if global install need to be runned
ARG COMPOSER_GLOBAL_INSTALL=true
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
# run the install
composer global install \
;fi ;fi
##################################### #####################################
# MongoDB: # MongoDB:
##################################### #####################################
@ -94,17 +61,18 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \
;fi ;fi
##################################### #####################################
# xDebug: # Composer:
##################################### #####################################
# Check if xDebug needs to be installed # Add the composer.json
ARG INSTALL_XDEBUG=true ADD ./composer.json /root/.composer/composer.json
ENV INSTALL_XDEBUG ${INSTALL_XDEBUG}
RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Check if global install need to be runned
# Load the xdebug extension only with phpunit commands ARG COMPOSER_GLOBAL_INSTALL=true
apt-get install -y --force-yes php7.0-xdebug && \ ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini && \ RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc \ # run the install
composer global install \
;fi ;fi
##################################### #####################################
@ -137,12 +105,9 @@ ENV if [ ${INSTALL_NODE} = true ]; then \
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
# Source the bash
RUN . ~/.bashrc
# Clean up # Clean up
RUN apt-get clean && \ RUN apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Set default work directory
WORKDIR /var/www/laravel WORKDIR /var/www/laravel