Created
June 13, 2019 16:07
-
-
Save charlesBochet/130bcd04d8704e62d846129de902f13e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
#-------------------------------------------------------------------------- | |
# Image Setup | |
#-------------------------------------------------------------------------- | |
# | |
# To edit the 'php-fpm' base Image, visit its repository on Github | |
# https://github.com/Laradock/php-fpm | |
# | |
# To change its version, see the available Tags on the Docker Hub: | |
# https://hub.docker.com/r/laradock/php-fpm/tags/ | |
# | |
# Note: Base Image name format {image-tag}-{php-version} | |
# | |
FROM laradock/php-fpm:2.0-71 | |
MAINTAINER Mahmoud Zalt <[email protected]> | |
# | |
#-------------------------------------------------------------------------- | |
# 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). | |
# | |
# | |
#-------------------------------------------------------------------------- | |
# Optional Software's Installation | |
#-------------------------------------------------------------------------- | |
# | |
# Optional Software's will only be installed if you set them to `true` | |
# in the `docker-compose.yml` before the build. | |
# Example: | |
# - INSTALL_ZIP_ARCHIVE=true | |
# | |
##################################### | |
# SOAP: | |
##################################### | |
ARG INSTALL_SOAP=false | |
RUN if [ ${INSTALL_SOAP} = true ]; then \ | |
# Install the soap extension | |
apt-get update -yqq && \ | |
apt-get -y install libxml2-dev php-soap && \ | |
docker-php-ext-install soap \ | |
;fi | |
##################################### | |
# pgsql | |
##################################### | |
ARG INSTALL_PGSQL=false | |
RUN if [ ${INSTALL_PGSQL} = true ]; then \ | |
# Install the pgsql extension | |
apt-get update -yqq && \ | |
docker-php-ext-install pgsql \ | |
;fi | |
##################################### | |
# pgsql client | |
##################################### | |
ARG INSTALL_PG_CLIENT=false | |
RUN if [ ${INSTALL_PG_CLIENT} = true ]; then \ | |
# Install the pgsql client | |
apt-get update -yqq && \ | |
apt-get install -y postgresql-client \ | |
;fi | |
##################################### | |
# xDebug: | |
##################################### | |
ARG INSTALL_XDEBUG=false | |
RUN if [ ${INSTALL_XDEBUG} = true ]; then \ | |
# Install the xdebug extension | |
pecl install xdebug && \ | |
docker-php-ext-enable xdebug \ | |
;fi | |
# Copy xdebug configuration for remote debugging | |
COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini | |
##################################### | |
# Blackfire: | |
##################################### | |
ARG INSTALL_BLACKFIRE=false | |
RUN if [ ${INSTALL_XDEBUG} = false -a ${INSTALL_BLACKFIRE} = true ]; then \ | |
version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ | |
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \ | |
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp \ | |
&& mv /tmp/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \ | |
&& printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini \ | |
;fi | |
##################################### | |
# PHP REDIS EXTENSION FOR PHP 7.0 | |
##################################### | |
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 | |
##################################### | |
# Swoole EXTENSION FOR PHP 7 | |
##################################### | |
ARG INSTALL_SWOOLE=false | |
RUN if [ ${INSTALL_SWOOLE} = true ]; then \ | |
# Install Php Swoole Extension | |
pecl install swoole \ | |
&& docker-php-ext-enable swoole \ | |
;fi | |
##################################### | |
# MongoDB: | |
##################################### | |
ARG INSTALL_MONGO=false | |
RUN if [ ${INSTALL_MONGO} = true ]; then \ | |
# Install the mongodb extension | |
pecl install mongodb && \ | |
docker-php-ext-enable mongodb \ | |
;fi | |
##################################### | |
# AMQP: | |
##################################### | |
ARG INSTALL_AMQP=false | |
RUN if [ ${INSTALL_AMQP} = true ]; then \ | |
apt-get update && \ | |
apt-get install librabbitmq-dev -y && \ | |
# Install the amqp extension | |
pecl install amqp && \ | |
docker-php-ext-enable amqp \ | |
;fi | |
##################################### | |
# ZipArchive: | |
##################################### | |
ARG INSTALL_ZIP_ARCHIVE=false | |
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ | |
# Install the zip extension | |
docker-php-ext-install zip \ | |
;fi | |
##################################### | |
# bcmath: | |
##################################### | |
ARG INSTALL_BCMATH=false | |
RUN if [ ${INSTALL_BCMATH} = true ]; then \ | |
# Install the bcmath extension | |
docker-php-ext-install bcmath \ | |
;fi | |
##################################### | |
# GMP (GNU Multiple Precision): | |
##################################### | |
ARG INSTALL_GMP=false | |
RUN if [ ${INSTALL_GMP} = true ]; then \ | |
# Install the GMP extension | |
apt-get update -yqq && \ | |
apt-get install -y libgmp-dev && \ | |
docker-php-ext-install gmp \ | |
;fi | |
##################################### | |
# PHP Memcached: | |
##################################### | |
ARG INSTALL_MEMCACHED=false | |
RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ | |
# Install the php memcached extension | |
curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \ | |
&& 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 | |
##################################### | |
# Exif: | |
##################################### | |
ARG INSTALL_EXIF=false | |
RUN if [ ${INSTALL_EXIF} = true ]; then \ | |
# Enable Exif PHP extentions requirements | |
docker-php-ext-install exif \ | |
;fi | |
##################################### | |
# PHP Aerospike: | |
##################################### | |
ARG INSTALL_AEROSPIKE=false | |
ENV INSTALL_AEROSPIKE ${INSTALL_AEROSPIKE} | |
# Copy aerospike configration for remote debugging | |
COPY ./aerospike.ini /usr/local/etc/php/conf.d/aerospike.ini | |
RUN if [ ${INSTALL_AEROSPIKE} = true ]; then \ | |
# Fix dependencies for PHPUnit within aerospike extension | |
apt-get update -yqq && \ | |
apt-get -y install sudo wget && \ | |
# Install the php aerospike extension | |
curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/aerospike/aerospike-client-php/archive/master.tar.gz" \ | |
&& mkdir -p aerospike-client-php \ | |
&& tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ | |
&& ( \ | |
cd aerospike-client-php/src \ | |
&& phpize \ | |
&& ./build.sh \ | |
&& make install \ | |
) \ | |
&& rm /tmp/aerospike-client-php.tar.gz \ | |
;fi | |
RUN if [ ${INSTALL_AEROSPIKE} = false ]; then \ | |
rm /usr/local/etc/php/conf.d/aerospike.ini \ | |
;fi | |
##################################### | |
# Opcache: | |
##################################### | |
ARG INSTALL_OPCACHE=false | |
RUN if [ ${INSTALL_OPCACHE} = true ]; then \ | |
docker-php-ext-install opcache \ | |
;fi | |
# Copy opcache configration | |
COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini | |
##################################### | |
# Mysqli Modifications: | |
##################################### | |
ARG INSTALL_MYSQLI=false | |
RUN if [ ${INSTALL_MYSQLI} = true ]; then \ | |
docker-php-ext-install mysqli \ | |
;fi | |
##################################### | |
# Tokenizer Modifications: | |
##################################### | |
ARG INSTALL_TOKENIZER=false | |
RUN if [ ${INSTALL_TOKENIZER} = true ]; then \ | |
docker-php-ext-install tokenizer \ | |
;fi | |
##################################### | |
# Human Language and Character Encoding Support: | |
##################################### | |
RUN echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list | |
RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list | |
RUN apt-get -o Acquire::Check-Valid-Until=false update | |
ARG INSTALL_INTL=false | |
RUN if [ ${INSTALL_INTL} = true ]; then \ | |
# Install intl and requirements | |
apt-get install -y zlib1g-dev libicu-dev g++ && \ | |
docker-php-ext-configure intl && \ | |
docker-php-ext-install intl \ | |
;fi | |
##################################### | |
# GHOSTSCRIPT: | |
##################################### | |
ARG INSTALL_GHOSTSCRIPT=false | |
RUN if [ ${INSTALL_GHOSTSCRIPT} = true ]; then \ | |
# Install the ghostscript extension | |
# for PDF editing | |
apt-get install -y \ | |
poppler-utils \ | |
ghostscript \ | |
;fi | |
##################################### | |
# Image Magick: | |
##################################### | |
RUN apt-get install imagemagick -y | |
##################################### | |
# wkhtmltopdf: | |
##################################### | |
ARG INSTALL_WKHTMLTOPDF=true | |
RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ | |
# Install all dependencies | |
apt-get install -y \ | |
libxrender1 \ | |
libfontconfig1 \ | |
libx11-dev \ | |
libjpeg62 \ | |
libxtst6 \ | |
wget \ | |
&& wget https://github.com/h4cc/wkhtmltopdf-amd64/blob/master/bin/wkhtmltopdf-amd64?raw=true -O /usr/local/bin/wkhtmltopdf \ | |
&& chmod +x /usr/local/bin/wkhtmltopdf \ | |
;fi | |
##################################### | |
# locales: | |
##################################### | |
RUN apt-get -y install locales | |
COPY ./locale.gen /etc/locale.gen | |
RUN locale-gen | |
##################################### | |
# LDAP: | |
##################################### | |
ARG INSTALL_LDAP=false | |
RUN if [ ${INSTALL_LDAP} = true ]; then \ | |
apt-get install -y libldap2-dev && \ | |
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ | |
docker-php-ext-install ldap \ | |
;fi | |
##################################### | |
# SQL SERVER: | |
##################################### | |
ARG INSTALL_MSSQL=false | |
ENV INSTALL_MSSQL ${INSTALL_MSSQL} | |
RUN if [ ${INSTALL_MSSQL} = true ]; then \ | |
##################################### | |
# Ref from https://github.com/Microsoft/msphpsql/wiki/Dockerfile-for-adding-pdo_sqlsrv-and-sqlsrv-to-official-php-image | |
##################################### | |
# Add Microsoft repo for Microsoft ODBC Driver 13 for Linux | |
apt-get update -yqq && apt-get install -y apt-transport-https \ | |
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ | |
&& curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list \ | |
&& apt-get update -yqq \ | |
# Install Dependencies | |
&& ACCEPT_EULA=Y apt-get install -y unixodbc unixodbc-dev libgss3 odbcinst msodbcsql locales \ | |
&& echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen \ | |
# Install pdo_sqlsrv and sqlsrv from PECL. Replace pdo_sqlsrv-4.1.8preview with preferred version. | |
&& pecl install pdo_sqlsrv-4.1.8preview sqlsrv-4.1.8preview \ | |
&& docker-php-ext-enable pdo_sqlsrv sqlsrv \ | |
;fi | |
##################################### | |
# Image optimizers: | |
##################################### | |
USER root | |
ARG INSTALL_IMAGE_OPTIMIZERS=false | |
ENV INSTALL_IMAGE_OPTIMIZERS ${INSTALL_IMAGE_OPTIMIZERS} | |
RUN if [ ${INSTALL_IMAGE_OPTIMIZERS} = true ]; then \ | |
apt-get install -y --force-yes jpegoptim optipng pngquant gifsicle \ | |
;fi | |
##################################### | |
# ImageMagick: | |
##################################### | |
USER root | |
ARG INSTALL_IMAGEMAGICK=false | |
ENV INSTALL_IMAGEMAGICK ${INSTALL_IMAGEMAGICK} | |
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ | |
apt-get install -y libmagickwand-dev imagemagick && \ | |
pecl install imagick && \ | |
docker-php-ext-enable imagick \ | |
;fi | |
##################################### | |
# IMAP: | |
##################################### | |
ARG INSTALL_IMAP=false | |
ENV INSTALL_IMAP ${INSTALL_IMAP} | |
RUN if [ ${INSTALL_IMAP} = true ]; then \ | |
apt-get install -y libc-client-dev libkrb5-dev && \ | |
rm -r /var/lib/apt/lists/* && \ | |
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ | |
docker-php-ext-install imap \ | |
;fi | |
##################################### | |
# Check PHP version: | |
##################################### | |
RUN php -v | head -n 1 | grep -q "PHP 7.1." | |
# | |
#-------------------------------------------------------------------------- | |
# Final Touch | |
#-------------------------------------------------------------------------- | |
# | |
ADD ./laravel.ini /usr/local/etc/php/conf.d | |
ADD ./xlaravel.pool.conf /usr/local/etc/php-fpm.d/ | |
#RUN rm -r /var/lib/apt/lists/* | |
RUN usermod -u 1000 www-data | |
WORKDIR /var/www | |
CMD ["php-fpm"] | |
EXPOSE 9000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
#-------------------------------------------------------------------------- | |
# Image Setup | |
#-------------------------------------------------------------------------- | |
# | |
# To edit the 'workspace' base Image, visit its repository on Github | |
# https://github.com/Laradock/workspace | |
# | |
# To change its version, see the available Tags on the Docker Hub: | |
# https://hub.docker.com/r/laradock/workspace/tags/ | |
# | |
# Note: Base Image name format {image-tag}-{php-version} | |
# | |
FROM laradock/workspace:2.0-71 | |
MAINTAINER Mahmoud Zalt <[email protected]> | |
# Remove Faillog and Lastlog to reduce the size of the final image. | |
RUN rm /var/log/lastlog /var/log/faillog | |
# | |
#-------------------------------------------------------------------------- | |
# Mandatory Software's Installation | |
#-------------------------------------------------------------------------- | |
# | |
# Mandatory Software's such as ("php7.1-cli", "git", "vim", ....) are | |
# installed on the base image 'laradock/workspace' image. If you want | |
# to add more Software's or remove existing one, you need to edit the | |
# base image (https://github.com/Laradock/workspace). | |
# | |
# | |
#-------------------------------------------------------------------------- | |
# Optional Software's Installation | |
#-------------------------------------------------------------------------- | |
# | |
# Optional Software's will only be installed if you set them to `true` | |
# in the `docker-compose.yml` before the build. | |
# Example: | |
# - INSTALL_NODE=false | |
# - ... | |
# | |
##################################### | |
# Non-Root User: | |
##################################### | |
# Add a non-root user to prevent files being created with root permissions on host machine. | |
ARG PUID=1000 | |
ARG PGID=1000 | |
ENV PUID ${PUID} | |
ENV PGID ${PGID} | |
RUN groupadd -g ${PGID} laradock && \ | |
useradd -u ${PUID} -g laradock -m laradock | |
##################################### | |
# SOAP: | |
##################################### | |
USER root | |
ARG INSTALL_SOAP=false | |
ENV INSTALL_SOAP ${INSTALL_SOAP} | |
RUN if [ ${INSTALL_SOAP} = true ]; then \ | |
# Install the PHP SOAP extension | |
add-apt-repository -y ppa:ondrej/php && \ | |
apt-get update -yqq && \ | |
apt-get -y install libxml2-dev php7.1-soap \ | |
;fi | |
##################################### | |
# LDAP: | |
##################################### | |
ARG INSTALL_LDAP=false | |
ENV INSTALL_LDAP ${INSTALL_LDAP} | |
RUN if [ ${INSTALL_LDAP} = true ]; then \ | |
apt-get update -yqq && \ | |
apt-get install -y libldap2-dev && \ | |
apt-get install -y php7.1-ldap \ | |
;fi | |
##################################### | |
# IMAP: | |
##################################### | |
ARG INSTALL_IMAP=false | |
ENV INSTALL_IMAP ${INSTALL_IMAP} | |
RUN if [ ${INSTALL_IMAP} = true ]; then \ | |
apt-get update -yqq && \ | |
apt-get install -y php7.1-imap \ | |
;fi | |
##################################### | |
# Set Timezone | |
##################################### | |
ARG TZ=UTC | |
ENV TZ ${TZ} | |
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | |
##################################### | |
# Composer: | |
##################################### | |
# Add the composer.json | |
COPY ./composer.json /home/laradock/.composer/composer.json | |
# Make sure that ~/.composer belongs to laradock | |
RUN chown -R laradock:laradock /home/laradock/.composer | |
USER laradock | |
# Check if global install need to be ran | |
ARG COMPOSER_GLOBAL_INSTALL=false | |
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL} | |
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \ | |
# run the install | |
composer global install \ | |
;fi | |
ARG COMPOSER_REPO_PACKAGIST | |
ENV COMPOSER_REPO_PACKAGIST ${COMPOSER_REPO_PACKAGIST} | |
RUN if [ ${COMPOSER_REPO_PACKAGIST} ]; then \ | |
composer config -g repo.packagist composer ${COMPOSER_REPO_PACKAGIST} \ | |
;fi | |
##################################### | |
# Crontab | |
##################################### | |
USER root | |
COPY ./crontab /etc/cron.d | |
RUN chmod -R 644 /etc/cron.d | |
##################################### | |
# User Aliases | |
##################################### | |
USER laradock | |
COPY ./aliases.sh /home/laradock/aliases.sh | |
RUN echo "" >> ~/.bashrc && \ | |
echo "# Load Custom Aliases" >> ~/.bashrc && \ | |
echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \ | |
echo "" >> ~/.bashrc && \ | |
sed -i 's/\r//' /home/laradock/aliases.sh && \ | |
sed -i 's/^#! \/bin\/sh/#! \/bin\/bash/' /home/laradock/aliases.sh | |
USER root | |
RUN echo "" >> ~/.bashrc && \ | |
echo "# Load Custom Aliases" >> ~/.bashrc && \ | |
echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \ | |
echo "" >> ~/.bashrc && \ | |
sed -i 's/\r//' /home/laradock/aliases.sh && \ | |
sed -i 's/^#! \/bin\/sh/#! \/bin\/bash/' /home/laradock/aliases.sh | |
##################################### | |
# xDebug: | |
##################################### | |
ARG INSTALL_XDEBUG=false | |
RUN if [ ${INSTALL_XDEBUG} = true ]; then \ | |
# Load the xdebug extension only with phpunit commands | |
apt-get update && \ | |
apt-get install -y --force-yes php7.1-xdebug && \ | |
sed -i 's/^;//g' /etc/php/7.1/cli/conf.d/20-xdebug.ini && \ | |
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/vendor/bin/phpunit'" >> ~/.bashrc \ | |
;fi | |
# ADD for REMOTE debugging | |
COPY ./xdebug.ini /etc/php/7.1/cli/conf.d/xdebug.ini | |
##################################### | |
# Blackfire: | |
##################################### | |
ARG INSTALL_BLACKFIRE=false | |
ARG BLACKFIRE_CLIENT_ID | |
ARG BLACKFIRE_CLIENT_TOKEN | |
ENV BLACKFIRE_CLIENT_ID ${BLACKFIRE_CLIENT_ID} | |
ENV BLACKFIRE_CLIENT_TOKEN ${BLACKFIRE_CLIENT_TOKEN} | |
RUN if [ ${INSTALL_XDEBUG} = false -a ${INSTALL_BLACKFIRE} = true ]; then \ | |
curl -L https://packagecloud.io/gpg.key | apt-key add - && \ | |
echo "deb http://packages.blackfire.io/debian any main" | tee /etc/apt/sources.list.d/blackfire.list && \ | |
apt-get update -yqq && \ | |
apt-get install blackfire-agent \ | |
;fi | |
##################################### | |
# ssh: | |
##################################### | |
ARG INSTALL_WORKSPACE_SSH=false | |
ENV INSTALL_WORKSPACE_SSH ${INSTALL_WORKSPACE_SSH} | |
ADD insecure_id_rsa /tmp/id_rsa | |
ADD insecure_id_rsa.pub /tmp/id_rsa.pub | |
RUN if [ ${INSTALL_WORKSPACE_SSH} = true ]; then \ | |
rm -f /etc/service/sshd/down && \ | |
cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys \ | |
&& cat /tmp/id_rsa.pub >> /root/.ssh/id_rsa.pub \ | |
&& cat /tmp/id_rsa >> /root/.ssh/id_rsa \ | |
&& rm -f /tmp/id_rsa* \ | |
&& chmod 644 /root/.ssh/authorized_keys /root/.ssh/id_rsa.pub \ | |
&& chmod 400 /root/.ssh/id_rsa \ | |
&& cp -rf /root/.ssh /home/laradock \ | |
&& chown -R laradock:laradock /home/laradock/.ssh \ | |
;fi | |
##################################### | |
# MongoDB: | |
##################################### | |
# Check if Mongo needs to be installed | |
ARG INSTALL_MONGO=false | |
ENV INSTALL_MONGO ${INSTALL_MONGO} | |
RUN if [ ${INSTALL_MONGO} = true ]; then \ | |
# Install the mongodb extension | |
pecl -q install mongodb && \ | |
echo "extension=mongodb.so" >> /etc/php/7.1/mods-available/mongodb.ini && \ | |
ln -s /etc/php/7.1/mods-available/mongodb.ini /etc/php/7.1/cli/conf.d/30-mongodb.ini \ | |
;fi | |
##################################### | |
# AMQP: | |
##################################### | |
# Check if Mongo needs to be installed | |
ARG INSTALL_AMQP=false | |
ENV INSTALL_AMQP ${INSTALL_AMQP} | |
RUN if [ ${INSTALL_AMQP} = true ]; then \ | |
apt-get install librabbitmq-dev -y && \ | |
# Install the mongodb extension | |
pecl -q install amqp && \ | |
echo "extension=amqp.so" >> /etc/php/7.1/mods-available/amqp.ini && \ | |
ln -s /etc/php/7.1/mods-available/amqp.ini /etc/php/7.1/cli/conf.d/30-amqp.ini \ | |
;fi | |
##################################### | |
# PHP REDIS EXTENSION FOR PHP 7.1 | |
##################################### | |
ARG INSTALL_PHPREDIS=false | |
ENV INSTALL_PHPREDIS ${INSTALL_PHPREDIS} | |
RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ | |
# Install Php Redis extension | |
printf "\n" | pecl -q install -o -f redis && \ | |
echo "extension=redis.so" >> /etc/php/7.1/mods-available/redis.ini && \ | |
phpenmod redis \ | |
;fi | |
##################################### | |
# Swoole EXTENSION FOR PHP 7 | |
##################################### | |
ARG INSTALL_SWOOLE=false | |
RUN if [ ${INSTALL_SWOOLE} = true ]; then \ | |
# Install Php Swoole Extension | |
pecl -q install swoole && \ | |
echo "extension=swoole.so" >> /etc/php/7.1/mods-available/swoole.ini && \ | |
ln -s /etc/php/7.1/mods-available/swoole.ini /etc/php/7.1/cli/conf.d/20-swoole.ini \ | |
;fi | |
##################################### | |
# Drush: | |
##################################### | |
USER root | |
ENV DRUSH_VERSION 8.1.2 | |
ARG INSTALL_DRUSH=false | |
ENV INSTALL_DRUSH ${INSTALL_DRUSH} | |
RUN if [ ${INSTALL_DRUSH} = true ]; then \ | |
apt-get update -yqq && \ | |
apt-get -y install mysql-client && \ | |
# Install Drush 8 with the phar file. | |
curl -fsSL -o /usr/local/bin/drush https://github.com/drush-ops/drush/releases/download/$DRUSH_VERSION/drush.phar | bash && \ | |
chmod +x /usr/local/bin/drush && \ | |
drush core-status \ | |
;fi | |
##################################### | |
# Drupal Console: | |
##################################### | |
USER root | |
ARG INSTALL_DRUPAL_CONSOLE=false | |
ENV INSTALL_DRUPAL_CONSOLE ${INSTALL_DRUPAL_CONSOLE} | |
RUN if [ ${INSTALL_DRUPAL_CONSOLE} = true ]; then \ | |
apt-get update -yqq && \ | |
apt-get -y install mysql-client && \ | |
curl https://drupalconsole.com/installer -L -o drupal.phar && \ | |
mv drupal.phar /usr/local/bin/drupal && \ | |
chmod +x /usr/local/bin/drupal \ | |
;fi | |
USER laradock | |
##################################### | |
# Node / NVM: | |
##################################### | |
# Check if NVM needs to be installed | |
ARG NODE_VERSION=stable | |
ENV NODE_VERSION ${NODE_VERSION} | |
ARG INSTALL_NODE=false | |
ENV INSTALL_NODE ${INSTALL_NODE} | |
ARG NPM_REGISTRY | |
ENV NPM_REGISTRY ${NPM_REGISTRY} | |
ENV NVM_DIR /home/laradock/.nvm | |
RUN if [ ${INSTALL_NODE} = true ]; then \ | |
# Install nvm (A Node Version Manager) | |
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash && \ | |
. $NVM_DIR/nvm.sh && \ | |
nvm install ${NODE_VERSION} && \ | |
nvm use ${NODE_VERSION} && \ | |
nvm alias ${NODE_VERSION} && \ | |
if [ ${NPM_REGISTRY} ]; then \ | |
npm config set registry ${NPM_REGISTRY} \ | |
;fi && \ | |
npm install -g gulp bower vue-cli \ | |
;fi | |
# Wouldn't execute when added to the RUN statement in the above block | |
# Source NVM when loading bash since ~/.profile isn't loaded on non-login shell | |
RUN if [ ${INSTALL_NODE} = true ]; then \ | |
echo "" >> ~/.bashrc && \ | |
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \ | |
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \ | |
;fi | |
# Add NVM binaries to root's .bashrc | |
USER root | |
RUN if [ ${INSTALL_NODE} = true ]; then \ | |
echo "" >> ~/.bashrc && \ | |
echo 'export NVM_DIR="/home/laradock/.nvm"' >> ~/.bashrc && \ | |
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \ | |
;fi | |
# Add PATH for node | |
ENV PATH $PATH:$NVM_DIR/versions/node/v${NODE_VERSION}/bin | |
RUN if [ ${NPM_REGISTRY} ]; then \ | |
. ~/.bashrc && npm config set registry ${NPM_REGISTRY} \ | |
;fi | |
##################################### | |
# YARN: | |
##################################### | |
USER laradock | |
ARG INSTALL_YARN=false | |
ENV INSTALL_YARN ${INSTALL_YARN} | |
ARG YARN_VERSION=latest | |
ENV YARN_VERSION ${YARN_VERSION} | |
RUN if [ ${INSTALL_YARN} = true ]; then \ | |
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && \ | |
if [ ${YARN_VERSION} = "latest" ]; then \ | |
curl -o- -L https://yarnpkg.com/install.sh | bash; \ | |
else \ | |
curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version ${YARN_VERSION}; \ | |
fi && \ | |
echo "" >> ~/.bashrc && \ | |
echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.bashrc \ | |
;fi | |
# Add YARN binaries to root's .bashrc | |
USER root | |
RUN if [ ${INSTALL_YARN} = true ]; then \ | |
echo "" >> ~/.bashrc && \ | |
echo 'export YARN_DIR="/home/laradock/.yarn"' >> ~/.bashrc && \ | |
echo 'export PATH="$YARN_DIR/bin:$PATH"' >> ~/.bashrc \ | |
;fi | |
##################################### | |
# PHP Aerospike: | |
##################################### | |
USER root | |
ARG INSTALL_AEROSPIKE=false | |
ENV INSTALL_AEROSPIKE ${INSTALL_AEROSPIKE} | |
# Copy aerospike configration for remote debugging | |
COPY ./aerospike.ini /etc/php/7.1/cli/conf.d/aerospike.ini | |
RUN if [ ${INSTALL_AEROSPIKE} = true ]; then \ | |
# Fix dependencies for PHPUnit within aerospike extension | |
apt-get update -yqq && \ | |
apt-get -y install sudo wget && \ | |
# Install the php aerospike extension | |
curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/aerospike/aerospike-client-php/archive/master.tar.gz" \ | |
&& mkdir -p aerospike-client-php \ | |
&& tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ | |
&& ( \ | |
cd aerospike-client-php/src \ | |
&& phpize \ | |
&& ./build.sh \ | |
&& make install \ | |
) \ | |
&& rm /tmp/aerospike-client-php.tar.gz \ | |
;fi | |
RUN if [ ${INSTALL_AEROSPIKE} = false ]; then \ | |
rm /etc/php/7.1/cli/conf.d/aerospike.ini \ | |
;fi | |
##################################### | |
# PHP V8JS: | |
##################################### | |
USER root | |
ARG INSTALL_V8JS=false | |
ENV INSTALL_V8JS ${INSTALL_V8JS} | |
RUN if [ ${INSTALL_V8JS} = true ]; then \ | |
# Install the php V8JS extension | |
add-apt-repository -y ppa:pinepain/libv8-5.4 \ | |
&& apt-get update -yqq \ | |
&& apt-get install -y php7.1-xml php7.1-dev php-pear libv8-5.4 \ | |
&& pecl install v8js \ | |
&& echo "extension=v8js.so" >> /etc/php/7.1/cli/php.ini \ | |
;fi | |
##################################### | |
# Non-root user : PHPUnit path | |
##################################### | |
# add ./vendor/bin to non-root user's bashrc (needed for phpunit) | |
USER laradock | |
RUN echo "" >> ~/.bashrc && \ | |
echo 'export PATH="/var/www/vendor/bin:$PATH"' >> ~/.bashrc | |
##################################### | |
# Laravel Envoy: | |
##################################### | |
USER root | |
RUN apt-get update -yqq \ | |
&& apt-get install -y php-curl | |
USER laradock | |
ARG INSTALL_LARAVEL_ENVOY=false | |
ENV INSTALL_LARAVEL_ENVOY ${INSTALL_LARAVEL_ENVOY} | |
RUN if [ ${INSTALL_LARAVEL_ENVOY} = true ]; then \ | |
# Install the Laravel Envoy | |
composer global require "laravel/envoy=~1.0" \ | |
;fi | |
##################################### | |
# Laravel Installer: | |
##################################### | |
USER root | |
ARG COMPOSER_REPO_PACKAGIST | |
ENV COMPOSER_REPO_PACKAGIST ${COMPOSER_REPO_PACKAGIST} | |
RUN if [ ${COMPOSER_REPO_PACKAGIST} ]; then \ | |
composer config -g repo.packagist composer ${COMPOSER_REPO_PACKAGIST} \ | |
;fi | |
ARG INSTALL_LARAVEL_INSTALLER=false | |
ENV INSTALL_LARAVEL_INSTALLER ${INSTALL_LARAVEL_INSTALLER} | |
RUN if [ ${INSTALL_LARAVEL_INSTALLER} = true ]; then \ | |
# Install the Laravel Installer | |
echo "" >> ~/.bashrc && \ | |
echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc \ | |
&& composer global require "laravel/installer" \ | |
;fi | |
USER laradock | |
##################################### | |
# Deployer: | |
##################################### | |
USER root | |
ARG INSTALL_DEPLOYER=false | |
ENV INSTALL_DEPLOYER ${INSTALL_DEPLOYER} | |
RUN if [ ${INSTALL_DEPLOYER} = true ]; then \ | |
# Install the Deployer | |
# Using Phar as currently there is no support for laravel 4 from composer version | |
# Waiting to be resolved on https://github.com/deployphp/deployer/issues/1552 | |
curl -LO https://deployer.org/deployer.phar && \ | |
mv deployer.phar /usr/local/bin/dep && \ | |
chmod +x /usr/local/bin/dep \ | |
;fi | |
##################################### | |
# Prestissimo: | |
##################################### | |
USER laradock | |
ARG INSTALL_PRESTISSIMO=false | |
ENV INSTALL_PRESTISSIMO ${INSTALL_PRESTISSIMO} | |
RUN if [ ${INSTALL_PRESTISSIMO} = true ]; then \ | |
# Install Prestissimo | |
composer global require "hirak/prestissimo" \ | |
;fi | |
##################################### | |
# Linuxbrew: | |
##################################### | |
USER root | |
ARG INSTALL_LINUXBREW=false | |
ENV INSTALL_LINUXBREW ${INSTALL_LINUXBREW} | |
RUN if [ ${INSTALL_LINUXBREW} = true ]; then \ | |
# Preparation | |
apt-get upgrade -y && \ | |
apt-get install -y build-essential make cmake scons curl git \ | |
ruby autoconf automake autoconf-archive \ | |
gettext libtool flex bison \ | |
libbz2-dev libcurl4-openssl-dev \ | |
libexpat-dev libncurses-dev && \ | |
# Install the Linuxbrew | |
git clone --depth=1 https://github.com/Homebrew/linuxbrew.git ~/.linuxbrew && \ | |
echo "" >> ~/.bashrc && \ | |
echo 'export PKG_CONFIG_PATH"=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.bashrc && \ | |
# Setup linuxbrew | |
echo 'export LINUXBREWHOME="$HOME/.linuxbrew"' >> ~/.bashrc && \ | |
echo 'export PATH="$LINUXBREWHOME/bin:$PATH"' >> ~/.bashrc && \ | |
echo 'export MANPATH="$LINUXBREWHOME/man:$MANPATH"' >> ~/.bashrc && \ | |
echo 'export PKG_CONFIG_PATH="$LINUXBREWHOME/lib64/pkgconfig:$LINUXBREWHOME/lib/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.bashrc && \ | |
echo 'export LD_LIBRARY_PATH="$LINUXBREWHOME/lib64:$LINUXBREWHOME/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc \ | |
;fi | |
##################################### | |
# SQL SERVER: | |
##################################### | |
ARG INSTALL_MSSQL=false | |
ENV INSTALL_MSSQL ${INSTALL_MSSQL} | |
RUN if [ ${INSTALL_MSSQL} = true ]; then \ | |
##################################### | |
# Install Depenencies: | |
##################################### | |
cd / && \ | |
apt-get update -yqq && \ | |
apt-get install -y --force-yes wget apt-transport-https curl freetds-common libsybdb5 freetds-bin unixodbc unixodbc-dev && \ | |
##################################### | |
# The following steps were taken from | |
# Microsoft's github account: | |
# https://github.com/Microsoft/msphpsql/wiki/Dockerfile-for-getting-pdo_sqlsrv-for-PHP-7.0-on-Debian-in-3-ways | |
##################################### | |
# Add PHP 7 repository | |
# for Debian jessie | |
# And System upgrade | |
cd / && \ | |
echo "deb http://packages.dotdeb.org jessie all" \ | |
| tee /etc/apt/sources.list.d/dotdeb.list \ | |
&& wget -qO- https://www.dotdeb.org/dotdeb.gpg \ | |
| apt-key add - \ | |
&& apt-get update -yqq \ | |
&& apt-get upgrade -qq && \ | |
# Install UnixODBC | |
# Compile odbc_config as it is not part of unixodbc package | |
cd / && \ | |
apt-get update -yqq && \ | |
apt-get install -y whiptail \ | |
unixodbc libgss3 odbcinst devscripts debhelper dh-exec dh-autoreconf libreadline-dev libltdl-dev \ | |
&& dget -u -x http://http.debian.net/debian/pool/main/u/unixodbc/unixodbc_2.3.1-3.dsc \ | |
&& cd unixodbc-*/ \ | |
&& ./configure && make && make install \ | |
&& cp -v ./exe/odbc_config /usr/local/bin/ && \ | |
# Fake uname for install.sh | |
printf '#!/bin/bash\nif [ "$*" == "-p" ]; then echo "x86_64"; else /bin/uname "$@"; fi' \ | |
| tee /usr/local/bin/uname \ | |
&& chmod +x /usr/local/bin/uname && \ | |
# Microsoft ODBC Driver 13 for Linux | |
# Note: There's a copy of this tar on my hubiC | |
cd / && \ | |
wget -nv -O msodbcsql-13.0.0.0.tar.gz \ | |
"https://meetsstorenew.blob.core.windows.net/contianerhd/Ubuntu%2013.0%20Tar/msodbcsql-13.0.0.0.tar.gz?st=2016-10-18T17%3A29%3A00Z&se=2022-10-19T17%3A29%3A00Z&sp=rl&sv=2015-04-05&sr=b&sig=cDwPfrouVeIQf0vi%2BnKt%2BzX8Z8caIYvRCmicDL5oknY%3D" \ | |
&& tar -xf msodbcsql-13.0.0.0.tar.gz \ | |
&& cd msodbcsql-*/ \ | |
&& ldd lib64/libmsodbcsql-13.0.so.0.0 \ | |
&& ./install.sh install --accept-license \ | |
&& ls -l /opt/microsoft/msodbcsql/ \ | |
&& odbcinst -q -d -n "ODBC Driver 13 for SQL Server" && \ | |
##################################### | |
# Install sqlsrv y pdo_sqlsrv | |
# extensions: | |
##################################### | |
pecl install sqlsrv-4.0.8 && \ | |
pecl install pdo_sqlsrv-4.0.8 && \ | |
##################################### | |
# Set locales for the container | |
##################################### | |
apt-get install -y locales \ | |
&& echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ | |
&& locale-gen \ | |
&& echo "extension=sqlsrv.so" > /etc/php/7.1/cli/conf.d/20-sqlsrv.ini \ | |
&& echo "extension=pdo_sqlsrv.so" > /etc/php/7.1/cli/conf.d/20-pdo_sqlsrv.ini \ | |
;fi | |
##################################### | |
# Minio: | |
##################################### | |
USER root | |
ARG INSTALL_MC=false | |
ENV INSTALL_MC ${INSTALL_MC} | |
COPY mc/config.json /root/.mc/config.json | |
RUN if [ ${INSTALL_MC} = true ]; then\ | |
curl -fsSL -o /usr/local/bin/mc https://dl.minio.io/client/mc/release/linux-amd64/mc && \ | |
chmod +x /usr/local/bin/mc \ | |
;fi | |
##################################### | |
# Image optimizers: | |
##################################### | |
USER root | |
ARG INSTALL_IMAGE_OPTIMIZERS=false | |
ENV INSTALL_IMAGE_OPTIMIZERS ${INSTALL_IMAGE_OPTIMIZERS} | |
RUN if [ ${INSTALL_IMAGE_OPTIMIZERS} = true ]; then \ | |
apt-get install -y --force-yes jpegoptim optipng pngquant gifsicle && \ | |
if [ ${INSTALL_NODE} = true ]; then \ | |
. ~/.bashrc && npm install -g svgo \ | |
;fi\ | |
;fi | |
USER laradock | |
##################################### | |
# Symfony: | |
##################################### | |
USER root | |
ARG INSTALL_SYMFONY=false | |
ENV INSTALL_SYMFONY ${INSTALL_SYMFONY} | |
RUN if [ ${INSTALL_SYMFONY} = true ]; then \ | |
mkdir -p /usr/local/bin \ | |
&& curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony \ | |
&& chmod a+x /usr/local/bin/symfony \ | |
# Symfony 3 alias | |
&& echo 'alias dev="php bin/console -e=dev"' >> ~/.bashrc \ | |
&& echo 'alias prod="php bin/console -e=prod"' >> ~/.bashrc \ | |
# Symfony 2 alias | |
# && echo 'alias dev="php app/console -e=dev"' >> ~/.bashrc \ | |
# && echo 'alias prod="php app/console -e=prod"' >> ~/.bashrc \ | |
;fi | |
##################################### | |
# PYTHON: | |
##################################### | |
ARG INSTALL_PYTHON=false | |
ENV INSTALL_PYTHON ${INSTALL_PYTHON} | |
RUN if [ ${INSTALL_PYTHON} = true ]; then \ | |
apt-get update \ | |
&& apt-get -y install python python-pip python-dev build-essential \ | |
&& pip install --upgrade pip \ | |
&& pip install --upgrade virtualenv \ | |
;fi | |
##################################### | |
# wkhtmltopdf: | |
##################################### | |
ARG INSTALL_WKHTMLTOPDF=true | |
RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ | |
# Install all dependencies | |
apt-get install -y \ | |
libxrender1 \ | |
libfontconfig1 \ | |
libx11-dev \ | |
libjpeg62 \ | |
libxtst6 \ | |
wget \ | |
&& wget https://github.com/h4cc/wkhtmltopdf-amd64/blob/master/bin/wkhtmltopdf-amd64?raw=true -O /usr/local/bin/wkhtmltopdf \ | |
&& chmod +x /usr/local/bin/wkhtmltopdf \ | |
;fi | |
##################################### | |
# ImageMagick: | |
##################################### | |
USER root | |
ARG INSTALL_IMAGEMAGICK=false | |
ENV INSTALL_IMAGEMAGICK ${INSTALL_IMAGEMAGICK} | |
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ | |
apt-get install -y --force-yes imagemagick php-imagick \ | |
;fi | |
##################################### | |
# Terraform: | |
##################################### | |
USER root | |
ARG INSTALL_TERRAFORM=false | |
ENV INSTALL_TERRAFORM ${INSTALL_TERRAFORM} | |
RUN if [ ${INSTALL_TERRAFORM} = true ]; then \ | |
apt-get update -yqq \ | |
&& apt-get -y install sudo wget unzip \ | |
&& wget https://releases.hashicorp.com/terraform/0.10.6/terraform_0.10.6_linux_amd64.zip \ | |
&& unzip terraform_0.10.6_linux_amd64.zip \ | |
&& mv terraform /usr/local/bin \ | |
&& rm terraform_0.10.6_linux_amd64.zip \ | |
;fi | |
##################################### | |
# pgsql client | |
##################################### | |
USER root | |
ARG INSTALL_PG_CLIENT=false | |
ENV INSTALL_PG_CLIENT ${INSTALL_PG_CLIENT} | |
RUN if [ ${INSTALL_PG_CLIENT} = true ]; then \ | |
# Install the pgsql clint | |
apt-get update -yqq && \ | |
apt-get -y install postgresql-client \ | |
;fi | |
##################################### | |
# Dusk Dependencies: | |
##################################### | |
USER root | |
ARG CHROME_DRIVER_VERSION=stable | |
ENV CHROME_DRIVER_VERSION ${CHROME_DRIVER_VERSION} | |
ARG INSTALL_DUSK_DEPS=false | |
ENV INSTALL_DUSK_DEPS ${INSTALL_DUSK_DEPS} | |
RUN if [ ${INSTALL_DUSK_DEPS} = true ]; then \ | |
add-apt-repository ppa:ondrej/php \ | |
&& apt-get update \ | |
&& apt-get -y install zip wget unzip xdg-utils \ | |
libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4 xvfb \ | |
gtk2-engines-pixbuf xfonts-cyrillic xfonts-100dpi xfonts-75dpi \ | |
xfonts-base xfonts-scalable x11-apps \ | |
&& wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \ | |
&& dpkg -i --force-depends google-chrome-stable_current_amd64.deb \ | |
&& apt-get -y -f install \ | |
&& dpkg -i --force-depends google-chrome-stable_current_amd64.deb \ | |
&& rm google-chrome-stable_current_amd64.deb \ | |
&& wget https://chromedriver.storage.googleapis.com/${CHROME_DRIVER_VERSION}/chromedriver_linux64.zip \ | |
&& unzip chromedriver_linux64.zip \ | |
&& mv chromedriver /usr/local/bin/ \ | |
&& rm chromedriver_linux64.zip \ | |
;fi | |
##################################### | |
# Check PHP version: | |
##################################### | |
RUN php -v | head -n 1 | grep -q "PHP 7.1." | |
# | |
#-------------------------------------------------------------------------- | |
# Final Touch | |
#-------------------------------------------------------------------------- | |
# | |
# Clean up | |
USER root | |
RUN apt-get clean && \ | |
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | |
# Set default work directory | |
WORKDIR /var/www |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment