From 101986c76f3a086e364d78ac6f864cf0f6cf44a8 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 6 Apr 2018 10:04:56 +0300 Subject: [PATCH] merge the php versions dockerfiles in php-fpm, workspace and php-worker --- DOCUMENTATION/content/documentation/index.md | 56 +- DOCUMENTATION/content/introduction/index.md | 2 +- docker-compose.sync.yml | 9 - docker-compose.yml | 6 +- env-example | 13 +- php-fpm/{Dockerfile-72 => Dockerfile} | 182 +++-- php-fpm/Dockerfile-56 | 372 ---------- php-fpm/Dockerfile-70 | 394 ---------- php-fpm/Dockerfile-71 | 394 ---------- php-worker/{Dockerfile-72 => Dockerfile} | 5 +- php-worker/Dockerfile-70 | 73 -- php-worker/Dockerfile-71 | 73 -- workspace/{Dockerfile-71 => Dockerfile} | 504 ++++++------- workspace/Dockerfile-56 | 696 ------------------ workspace/Dockerfile-70 | 710 ------------------ workspace/Dockerfile-72 | 712 ------------------- 16 files changed, 407 insertions(+), 3794 deletions(-) rename php-fpm/{Dockerfile-72 => Dockerfile} (65%) delete mode 100644 php-fpm/Dockerfile-56 delete mode 100644 php-fpm/Dockerfile-70 delete mode 100644 php-fpm/Dockerfile-71 rename php-worker/{Dockerfile-72 => Dockerfile} (94%) delete mode 100644 php-worker/Dockerfile-70 delete mode 100644 php-worker/Dockerfile-71 rename workspace/{Dockerfile-71 => Dockerfile} (64%) delete mode 100644 workspace/Dockerfile-56 delete mode 100644 workspace/Dockerfile-70 delete mode 100644 workspace/Dockerfile-72 diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index 74209cc5..dabde4f0 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -215,28 +215,24 @@ The PHP-CLI extensions should be installed in `workspace/Dockerfile`.
## Change the (PHP-FPM) Version -By default **PHP-FPM 7.0** is running. +By default the latest stable PHP versin is configured to run. >The PHP-FPM is responsible of serving your application code, you don't have to change the PHP-CLI version if you are planning to run your application on different PHP-FPM version. -### A) Switch from PHP `7.0` to PHP `5.6` +### A) Switch from PHP `7.2` to PHP `5.6` -1 - Open the `docker-compose.yml`. +1 - Open the `.env`. -2 - Search for `Dockerfile-70` in the PHP container section. +2 - Search for `PHP_VERSION`. -3 - Change the version number, by replacing `Dockerfile-70` with `Dockerfile-56`, like this: +3 - Set the desired version number: -```yml - php-fpm: - build: - context: ./php-fpm - dockerfile: Dockerfile-56 - ... +```dotenv +PHP_VERSION=5.6 ``` -4 - Finally rebuild the container +4 - Finally rebuild the image ```bash docker-compose build php-fpm @@ -245,25 +241,6 @@ docker-compose build php-fpm > For more details about the PHP base image, visit the [official PHP docker images](https://hub.docker.com/_/php/). -### B) Switch from PHP `7.0` or `5.6` to PHP `5.5` - -We do not natively support PHP 5.5 anymore, but you can get it in few steps: - -1 - Clone `https://github.com/laradock/php-fpm`. - -3 - Rename `Dockerfile-56` to `Dockerfile-55`. - -3 - Edit the file `FROM php:5.6-fpm` to `FROM php:5.5-fpm`. - -4 - Build an image from `Dockerfile-55`. - -5 - Open the `docker-compose.yml` file. - -6 - Point `php-fpm` to your `Dockerfile-55` file. - - - -
@@ -273,11 +250,23 @@ By default **PHP-CLI 7.0** is running. >Note: it's not very essential to edit the PHP-CLI version. The PHP-CLI is only used for the Artisan Commands & Composer. It doesn't serve your Application code, this is the PHP-FPM job. -The PHP-CLI is installed in the Workspace container. To change the PHP-CLI version you need to edit the `workspace/Dockerfile`. +The PHP-CLI is installed in the Workspace container. To change the PHP-CLI version you need to simply change the `PHP_VERSION` in te .env file as follow: -Right now you have to manually edit the `Dockerfile` or create a new one like it's done for the PHP-FPM. (consider contributing). +1 - Open the `.env`. +2 - Search for `PHP_VERSION`. +3 - Set the desired version number: + +```dotenv +PHP_VERSION=7.2 +``` + +4 - Finally rebuild the image + +```bash +docker-compose build workspace +``` @@ -558,7 +547,6 @@ b) add a new service container by simply copy-paste this section below PHP-FPM c php-worker: build: context: ./php-worker - dockerfile: "Dockerfile-${PHP_VERSION}" #Dockerfile-71 or #Dockerfile-70 available args: - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} #Optionally install PGSQL PHP drivers volumes_from: diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index dca9b32c..bff7fef5 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -58,7 +58,7 @@ That's it! enjoy :) ## Features -- Easy switch between PHP versions: 7.1, 7.0, 5.6... +- Easy switch between PHP versions: 7.2, 7.1, 5.6... - Choose your favorite database engine: MySQL, Postgres, MariaDB... - Run your own combination of software: Memcached, HHVM, Beanstalkd... - Every software runs on a separate container: PHP-FPM, NGINX, PHP-CLI... diff --git a/docker-compose.sync.yml b/docker-compose.sync.yml index 57d7e92b..4536f3c4 100644 --- a/docker-compose.sync.yml +++ b/docker-compose.sync.yml @@ -2,15 +2,6 @@ version: '3' services: -### Applications Code Container ############################# - - # applications: - # image: tianon/true - # volumes: - # - applications-sync:/var/www:nocopy # nocopy is required - -### Volumes Setup ############################################# - volumes: applications-sync: external: diff --git a/docker-compose.yml b/docker-compose.yml index ffd57b14..ff22662e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -47,6 +47,7 @@ services: build: context: ./workspace args: + - PHP_VERSION=${PHP_VERSION} - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG} - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE} - INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP} @@ -88,7 +89,6 @@ services: - TZ=${WORKSPACE_TIMEZONE} - BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID} - BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN} - dockerfile: "Dockerfile-${PHP_VERSION}" volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} extra_hosts: @@ -107,6 +107,7 @@ services: build: context: ./php-fpm args: + - PHP_VERSION=${PHP_VERSION} - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG} - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE} - INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP} @@ -132,7 +133,6 @@ services: - INSTALL_SWOOLE=${PHP_FPM_INSTALL_SWOOLE} - INSTALL_IMAGE_OPTIMIZERS=${PHP_FPM_INSTALL_IMAGE_OPTIMIZERS} - INSTALL_IMAGEMAGICK=${PHP_FPM_INSTALL_IMAGEMAGICK} - dockerfile: "Dockerfile-${PHP_VERSION}" volumes: - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} @@ -149,8 +149,8 @@ services: php-worker: build: context: ./php-worker - dockerfile: "Dockerfile-${PHP_VERSION}" args: + - PHP_VERSION=${PHP_VERSION} - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} diff --git a/env-example b/env-example index da9d5ce5..87f4cefe 100644 --- a/env-example +++ b/env-example @@ -31,8 +31,8 @@ COMPOSE_PATH_SEPARATOR=: ### PHP Version ########################################### -# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 72 - 71 - 70 - 56 -PHP_VERSION=72 +# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 7.2 - 7.1 - 7.0 - 5.6 - 5.5 +PHP_VERSION=7.2 ### PHP Interpreter ####################################### @@ -319,6 +319,11 @@ AEROSPIKE_FABRIC_PORT=3001 AEROSPIKE_HEARTBEAT_PORT=3002 AEROSPIKE_INFO_PORT=3003 +## Temp solution, this should be in the dockerfile +# for all versions "https://github.com/aerospike/aerospike-client-php/archive/master.tar.gz" +# for php 7.2 (using this branch until the support for 7.2 on master) "https://github.com/aerospike/aerospike-client-php/archive/7.2.0-in-progress.tar.gz" +AEROSPIKE_PHP_REPOSITORY=https://github.com/aerospike/aerospike-client-php/archive/7.2.0-in-progress.tar.gz + ### RETHINKDB ############################################# RETHINKDB_PORT=8090 @@ -343,3 +348,7 @@ LARAVEL_ECHO_SERVER_PORT=6001 SOLR_VERSION=5.5 SOLR_PORT=8983 SOLR_DATAIMPORTHANDLER_MYSQL=false + +### DRUSH_VERSION ######################################### + +DRUSH_VERSION=9.2.3 diff --git a/php-fpm/Dockerfile-72 b/php-fpm/Dockerfile similarity index 65% rename from php-fpm/Dockerfile-72 rename to php-fpm/Dockerfile index 0d34a9a5..c062f424 100644 --- a/php-fpm/Dockerfile-72 +++ b/php-fpm/Dockerfile @@ -12,7 +12,9 @@ # Note: Base Image name format {image-tag}-{php-version} # -FROM laradock/php-fpm:2.0-72 +ARG PHP_VERSION=${PHP_VERSION} + +FROM laradock/php-fpm:2.2-${PHP_VERSION} LABEL maintainer="Mahmoud Zalt " @@ -38,11 +40,12 @@ LABEL maintainer="Mahmoud Zalt " # - INSTALL_ZIP_ARCHIVE=true # -##################################### +########################################################################### # SOAP: -##################################### +########################################################################### ARG INSTALL_SOAP=false + RUN if [ ${INSTALL_SOAP} = true ]; then \ # Install the soap extension apt-get update -yqq && \ @@ -50,36 +53,37 @@ RUN if [ ${INSTALL_SOAP} = true ]; then \ 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 \ # Create folders if not exists (https://github.com/tianon/docker-brew-debian/issues/65) mkdir -p /usr/share/man/man1 && \ mkdir -p /usr/share/man/man7 && \ # 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 && \ @@ -89,11 +93,12 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # 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 \ @@ -102,11 +107,12 @@ RUN if [ ${INSTALL_XDEBUG} = false -a ${INSTALL_BLACKFIRE} = true ]; then \ && 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 -##################################### +########################################################################### +# PHP REDIS EXTENSION +########################################################################### ARG INSTALL_PHPREDIS=false + RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ # Install Php Redis Extension printf "\n" | pecl install -o -f redis \ @@ -114,78 +120,83 @@ RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ && docker-php-ext-enable redis \ ;fi -##################################### -# Swoole EXTENSION FOR PHP 7 -##################################### +########################################################################### +# Swoole EXTENSION +########################################################################### 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" \ @@ -203,30 +214,30 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ && 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: -##################################### +########################################################################### + USER root ARG INSTALL_AEROSPIKE=false -ENV INSTALL_AEROSPIKE ${INSTALL_AEROSPIKE} 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 (using 7.2.0-in-progress branch until support for 7.2 on master) - curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/aerospike/aerospike-client-php/archive/7.2.0-in-progress.tar.gz" \ + # Install the php aerospike extension + curl -L -o /tmp/aerospike-client-php.tar.gz ${AEROSPIKE_PHP_REPOSITORY} \ && mkdir -p aerospike-client-php \ && tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ && ( \ @@ -239,11 +250,12 @@ RUN if [ ${INSTALL_AEROSPIKE} = true ]; then \ && docker-php-ext-enable aerospike \ ;fi -##################################### +########################################################################### # Opcache: -##################################### +########################################################################### ARG INSTALL_OPCACHE=false + RUN if [ ${INSTALL_OPCACHE} = true ]; then \ docker-php-ext-install opcache \ ;fi @@ -251,29 +263,32 @@ RUN if [ ${INSTALL_OPCACHE} = true ]; then \ # 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: -##################################### +########################################################################### ARG INSTALL_INTL=false + RUN if [ ${INSTALL_INTL} = true ]; then \ # Install intl and requirements apt-get update -yqq && \ @@ -282,44 +297,44 @@ RUN if [ ${INSTALL_INTL} = true ]; then \ 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 update -yqq \ - && apt-get install -y \ + apt-get install -y \ poppler-utils \ ghostscript \ ;fi -##################################### +########################################################################### # LDAP: -##################################### +########################################################################### ARG INSTALL_LDAP=false + RUN if [ ${INSTALL_LDAP} = true ]; then \ - apt-get update -yqq && \ 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 set -eux; 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 gnupg \ + apt-get install -y apt-transport-https gnupg \ && 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 \ @@ -334,48 +349,52 @@ RUN set -eux; if [ ${INSTALL_MSSQL} = true ]; then \ && php -m | grep -q '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 update -yqq && \ 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 update -y && \ 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 update && \ 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.2." +ARG PHP_VERSION=${PHP_VERSION} + +RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}." # #-------------------------------------------------------------------------- @@ -386,7 +405,12 @@ RUN php -v | head -n 1 | grep -q "PHP 7.2." COPY ./laravel.ini /usr/local/etc/php/conf.d COPY ./xlaravel.pool.conf /usr/local/etc/php-fpm.d/ -#RUN rm -r /var/lib/apt/lists/* +USER root + +# Clean up +RUN apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ + rm /var/log/lastlog /var/log/faillog RUN usermod -u 1000 www-data diff --git a/php-fpm/Dockerfile-56 b/php-fpm/Dockerfile-56 deleted file mode 100644 index 01dbf7c9..00000000 --- a/php-fpm/Dockerfile-56 +++ /dev/null @@ -1,372 +0,0 @@ -# -#-------------------------------------------------------------------------- -# 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-56 - -LABEL maintainer="Mahmoud Zalt " - -# -#-------------------------------------------------------------------------- -# 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 clint - 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 \ - # workaround for https://github.com/docker-library/php/issues/133 - # - Xdebug breaks on access to class static property - apt-get install -y php5-xdebug && \ - echo "zend_extension=/usr/lib/php5/20131226/xdebug.so" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ -;fi - -# Copy xdebug configration 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 5 -##################################### - -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 5 -##################################### - -ARG INSTALL_SWOOLE=false -RUN if [ ${INSTALL_SWOOLE} = true ]; then \ - # Install Php Swoole Extension - pecl install swoole-2.0.11 \ - && 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 && \ - ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h && \ - docker-php-ext-install gmp \ -;fi - -##################################### -# PHP Memcached: -##################################### - -ARG INSTALL_MEMCACHED=false -RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ - # Install the php memcached extension - pecl install memcached-2.2.0 && \ - 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: -##################################### -USER root - -ARG INSTALL_AEROSPIKE=false -ENV INSTALL_AEROSPIKE ${INSTALL_AEROSPIKE} - -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-php5/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/aerospike \ - && phpize \ - && ./build.sh \ - && make install \ - ) \ - && rm /tmp/aerospike-client-php.tar.gz \ - && docker-php-ext-enable aerospike \ -;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 -# MySQL extenstion is available for Php5.6 and lower only -COPY ./mysql.ini /usr/local/etc/php/conf.d/mysql.ini -RUN if [ ${INSTALL_MYSQLI} = true ]; then \ - docker-php-ext-install mysql && \ - 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: -##################################### - -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 update -yqq && \ - apt-get install -y poppler-utils ghostscript \ -;fi - -##################################### -# LDAP: -##################################### - -ARG INSTALL_LDAP=false -RUN if [ ${INSTALL_LDAP} = true ]; then \ - apt-get update -yqq && \ - 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 set -eux; if [ ${INSTALL_MSSQL} = true ]; then \ - apt-get -y install php5-sybase freetds-bin \ - && cp /usr/lib/php5/20131226/*.so /usr/local/lib/php/extensions/no-debug-non-zts-20131226/ \ - && docker-php-ext-enable pdo_dblib mssql \ - && php -m | grep -q 'mssql' \ -;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 update -yqq && \ - 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 update -y && \ - 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 update && \ - 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 5.6." - -# -#-------------------------------------------------------------------------- -# Final Touch -#-------------------------------------------------------------------------- -# - -COPY ./laravel.ini /usr/local/etc/php/conf.d -COPY ./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 diff --git a/php-fpm/Dockerfile-70 b/php-fpm/Dockerfile-70 deleted file mode 100644 index a5337272..00000000 --- a/php-fpm/Dockerfile-70 +++ /dev/null @@ -1,394 +0,0 @@ -# -#-------------------------------------------------------------------------- -# 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-70 - -LABEL maintainer="Mahmoud Zalt " - -# -#-------------------------------------------------------------------------- -# 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 configration 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 -##################################### - -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: -##################################### -USER root - -ARG INSTALL_AEROSPIKE=false -ENV INSTALL_AEROSPIKE ${INSTALL_AEROSPIKE} - -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 \ - && docker-php-ext-enable aerospike \ -;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: -##################################### - -ARG INSTALL_INTL=false -RUN if [ ${INSTALL_INTL} = true ]; then \ - # Install intl and requirements - apt-get update -yqq && \ - 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 update -yqq \ - && apt-get install -y \ - poppler-utils \ - ghostscript \ -;fi - -##################################### -# LDAP: -##################################### - -ARG INSTALL_LDAP=false -RUN if [ ${INSTALL_LDAP} = true ]; then \ - apt-get update -yqq && \ - 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 set -eux; 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 \ - && php -m | grep -q 'pdo_sqlsrv' \ - && php -m | grep -q '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 update -yqq && \ - 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 update -y && \ - 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 update && \ - 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.0." - -# -#-------------------------------------------------------------------------- -# Final Touch -#-------------------------------------------------------------------------- -# - -COPY ./laravel.ini /usr/local/etc/php/conf.d/ -COPY ./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 diff --git a/php-fpm/Dockerfile-71 b/php-fpm/Dockerfile-71 deleted file mode 100644 index 7b84785c..00000000 --- a/php-fpm/Dockerfile-71 +++ /dev/null @@ -1,394 +0,0 @@ -# -#-------------------------------------------------------------------------- -# 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 - -LABEL maintainer="Mahmoud Zalt " - -# -#-------------------------------------------------------------------------- -# 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: -##################################### -USER root - -ARG INSTALL_AEROSPIKE=false -ENV INSTALL_AEROSPIKE ${INSTALL_AEROSPIKE} - -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 \ - && docker-php-ext-enable aerospike \ -;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: -##################################### - -ARG INSTALL_INTL=false -RUN if [ ${INSTALL_INTL} = true ]; then \ - # Install intl and requirements - apt-get update -yqq && \ - 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 update -yqq \ - && apt-get install -y \ - poppler-utils \ - ghostscript \ -;fi - -##################################### -# LDAP: -##################################### - -ARG INSTALL_LDAP=false -RUN if [ ${INSTALL_LDAP} = true ]; then \ - apt-get update -yqq && \ - 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 set -eux; 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 \ - && php -m | grep -q 'pdo_sqlsrv' \ - && php -m | grep -q '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 update -yqq && \ - 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 update -y && \ - 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 update && \ - 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 -#-------------------------------------------------------------------------- -# - -COPY ./laravel.ini /usr/local/etc/php/conf.d -COPY ./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 diff --git a/php-worker/Dockerfile-72 b/php-worker/Dockerfile similarity index 94% rename from php-worker/Dockerfile-72 rename to php-worker/Dockerfile index 7fb99061..a157b021 100644 --- a/php-worker/Dockerfile-72 +++ b/php-worker/Dockerfile @@ -4,7 +4,8 @@ #-------------------------------------------------------------------------- # -FROM php:7.2-alpine +ARG PHP_VERSION=${PHP_VERSION} +FROM php:${PHP_VERSION}-alpine LABEL maintainer="Mahmoud Zalt " @@ -62,7 +63,7 @@ ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"] #-------------------------------------------------------------------------- # -RUN php -v | head -n 1 | grep -q "PHP 7.2." +RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}." # #-------------------------------------------------------------------------- diff --git a/php-worker/Dockerfile-70 b/php-worker/Dockerfile-70 deleted file mode 100644 index 2b182b76..00000000 --- a/php-worker/Dockerfile-70 +++ /dev/null @@ -1,73 +0,0 @@ -# -#-------------------------------------------------------------------------- -# Image Setup -#-------------------------------------------------------------------------- -# - -FROM php:7.0-alpine - -LABEL maintainer="Mahmoud Zalt " - -RUN apk --update add wget \ - curl \ - git \ - build-base \ - libmemcached-dev \ - libmcrypt-dev \ - libxml2-dev \ - zlib-dev \ - autoconf \ - cyrus-sasl-dev \ - libgsasl-dev \ - supervisor - -RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql mcrypt tokenizer xml -RUN pecl channel-update pecl.php.net && pecl install memcached && docker-php-ext-enable memcached - -# Install PostgreSQL drivers: -ARG INSTALL_PGSQL=false -RUN if [ ${INSTALL_PGSQL} = true ]; then \ - apk --update add postgresql-dev \ - && docker-php-ext-install pdo_pgsql \ -;fi - -RUN rm /var/cache/apk/* \ - && mkdir -p /var/www - -# -#-------------------------------------------------------------------------- -# Optional Supervisord Configuration -#-------------------------------------------------------------------------- -# -# Modify the ./supervisor.conf file to match your App's requirements. -# Make sure you rebuild your container with every change. -# - -COPY supervisord.conf /etc/supervisord.conf - -ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"] - -# -#-------------------------------------------------------------------------- -# Optional Software's Installation -#-------------------------------------------------------------------------- -# -# If you need to modify this image, feel free to do it right here. -# - # -- Your awesome modifications go here -- # - -# -#-------------------------------------------------------------------------- -# Check PHP version -#-------------------------------------------------------------------------- -# - -RUN php -v | head -n 1 | grep -q "PHP 7.0." - -# -#-------------------------------------------------------------------------- -# Final Touch -#-------------------------------------------------------------------------- -# - -WORKDIR /etc/supervisor/conf.d/ diff --git a/php-worker/Dockerfile-71 b/php-worker/Dockerfile-71 deleted file mode 100644 index ad943cf1..00000000 --- a/php-worker/Dockerfile-71 +++ /dev/null @@ -1,73 +0,0 @@ -# -#-------------------------------------------------------------------------- -# Image Setup -#-------------------------------------------------------------------------- -# - -FROM php:7.1-alpine - -LABEL maintainer="Mahmoud Zalt " - -RUN apk --update add wget \ - curl \ - git \ - build-base \ - libmemcached-dev \ - libmcrypt-dev \ - libxml2-dev \ - zlib-dev \ - autoconf \ - cyrus-sasl-dev \ - libgsasl-dev \ - supervisor - -RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql mcrypt tokenizer xml -RUN pecl channel-update pecl.php.net && pecl install memcached && docker-php-ext-enable memcached - -# Install PostgreSQL drivers: -ARG INSTALL_PGSQL=false -RUN if [ ${INSTALL_PGSQL} = true ]; then \ - apk --update add postgresql-dev \ - && docker-php-ext-install pdo_pgsql \ -;fi - -RUN rm /var/cache/apk/* \ - && mkdir -p /var/www - -# -#-------------------------------------------------------------------------- -# Optional Supervisord Configuration -#-------------------------------------------------------------------------- -# -# Modify the ./supervisor.conf file to match your App's requirements. -# Make sure you rebuild your container with every change. -# - -COPY supervisord.conf /etc/supervisord.conf - -ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"] - -# -#-------------------------------------------------------------------------- -# Optional Software's Installation -#-------------------------------------------------------------------------- -# -# If you need to modify this image, feel free to do it right here. -# - # -- Your awesome modifications go here -- # - -# -#-------------------------------------------------------------------------- -# Check PHP version -#-------------------------------------------------------------------------- -# - -RUN php -v | head -n 1 | grep -q "PHP 7.1." - -# -#-------------------------------------------------------------------------- -# Final Touch -#-------------------------------------------------------------------------- -# - -WORKDIR /etc/supervisor/conf.d/ diff --git a/workspace/Dockerfile-71 b/workspace/Dockerfile similarity index 64% rename from workspace/Dockerfile-71 rename to workspace/Dockerfile index ac0def39..66374198 100644 --- a/workspace/Dockerfile-71 +++ b/workspace/Dockerfile @@ -12,19 +12,35 @@ # Note: Base Image name format {image-tag}-{php-version} # -FROM laradock/workspace:2.0-71 +ARG PHP_VERSION=${PHP_VERSION} + +FROM laradock/workspace:2.2-${PHP_VERSION} LABEL maintainer="Mahmoud Zalt " -# Remove Faillog and Lastlog to reduce the size of the final image. -RUN rm /var/log/lastlog /var/log/faillog +# Start as root +USER root + +########################################################################### +# Laradock non-root user: +########################################################################### + +# Add a non-root user to prevent files being created with root permissions on host machine. +ARG PUID=1000 +ENV PUID ${PUID} +ARG PGID=1000 +ENV PGID ${PGID} + +RUN groupadd -g ${PGID} laradock && \ + useradd -u ${PUID} -g laradock -m laradock -G docker_env && \ + usermod -p "*" laradock # #-------------------------------------------------------------------------- # Mandatory Software's Installation #-------------------------------------------------------------------------- # -# Mandatory Software's such as ("php7.1-cli", "git", "vim", ....) are +# Mandatory Software's such as ("php-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). @@ -42,106 +58,19 @@ RUN rm /var/log/lastlog /var/log/faillog # - ... # -##################################### -# 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 -G docker_env && \ - usermod -p "*" 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 root COPY ./aliases.sh /root/aliases.sh @@ -162,31 +91,124 @@ RUN echo "" >> ~/.bashrc && \ echo "source ~/aliases.sh" >> ~/.bashrc && \ echo "" >> ~/.bashrc -##################################### +########################################################################### +# Composer: +########################################################################### + +USER root + +# 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 + +# Export composer vendor path +RUN echo "" >> ~/.bashrc && \ + echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc + +########################################################################### +# 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 + +########################################################################### +# Crontab +########################################################################### + +USER root + +COPY ./crontab /etc/cron.d + +RUN chmod -R 644 /etc/cron.d + +########################################################################### +# SOAP: +########################################################################### + +USER root + +ARG INSTALL_SOAP=false +ARG PHP_VERSION=${PHP_VERSION} + +RUN if [ ${INSTALL_SOAP} = true ]; then \ + # Install the PHP SOAP extension + apt-get -y install libxml2-dev php${PHP_VERSION}-soap \ +;fi + +########################################################################### +# LDAP: +########################################################################### + +ARG INSTALL_LDAP=false +ARG PHP_VERSION=${PHP_VERSION} + +RUN if [ ${INSTALL_LDAP} = true ]; then \ + apt-get install -y libldap2-dev && \ + apt-get install -y php${PHP_VERSION}-ldap \ +;fi + +########################################################################### +# IMAP: +########################################################################### + +ARG INSTALL_IMAP=false +ARG PHP_VERSION=${PHP_VERSION} + +RUN if [ ${INSTALL_IMAP} = true ]; then \ + apt-get install -y php${PHP_VERSION}-imap \ +;fi + +########################################################################### # xDebug: -##################################### +########################################################################### + USER root ARG INSTALL_XDEBUG=false +ARG PHP_VERSION=${PHP_VERSION} + 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 && \ + apt-get install -y --force-yes php${PHP_VERSION}-xdebug && \ + sed -i 's/^;//g' /etc/php/${PHP_VERSION}/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 -##################################### +# ADD for REMOTE debugging +COPY ./xdebug.ini /etc/php/${PHP_VERSION}/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} +ARG BLACKFIRE_CLIENT_TOKEN ENV BLACKFIRE_CLIENT_TOKEN ${BLACKFIRE_CLIENT_TOKEN} RUN if [ ${INSTALL_XDEBUG} = false -a ${INSTALL_BLACKFIRE} = true ]; then \ @@ -196,11 +218,11 @@ RUN if [ ${INSTALL_XDEBUG} = false -a ${INSTALL_BLACKFIRE} = true ]; then \ apt-get install blackfire-agent \ ;fi -##################################### +########################################################################### # ssh: -##################################### +########################################################################### + ARG INSTALL_WORKSPACE_SSH=false -ENV INSTALL_WORKSPACE_SSH ${INSTALL_WORKSPACE_SSH} COPY insecure_id_rsa /tmp/id_rsa COPY insecure_id_rsa.pub /tmp/id_rsa.pub @@ -217,82 +239,87 @@ RUN if [ ${INSTALL_WORKSPACE_SSH} = true ]; then \ && 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} +ARG PHP_VERSION=${PHP_VERSION} + 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 \ + echo "extension=mongodb.so" >> /etc/php/${PHP_VERSION}/mods-available/mongodb.ini && \ + ln -s /etc/php/${PHP_VERSION}/mods-available/mongodb.ini /etc/php/${PHP_VERSION}/cli/conf.d/30-mongodb.ini \ ;fi -##################################### +########################################################################### # AMQP: -##################################### +########################################################################### ARG INSTALL_AMQP=false -ENV INSTALL_AMQP ${INSTALL_AMQP} +ARG PHP_VERSION=${PHP_VERSION} + RUN if [ ${INSTALL_AMQP} = true ]; then \ apt-get install librabbitmq-dev -y && \ 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 \ + echo "extension=amqp.so" >> /etc/php/${PHP_VERSION}/mods-available/amqp.ini && \ + ln -s /etc/php/${PHP_VERSION}/mods-available/amqp.ini /etc/php/${PHP_VERSION}/cli/conf.d/30-amqp.ini \ ;fi -##################################### -# PHP REDIS EXTENSION FOR PHP 7.1 -##################################### +########################################################################### +# PHP REDIS EXTENSION +########################################################################### ARG INSTALL_PHPREDIS=false -ENV INSTALL_PHPREDIS ${INSTALL_PHPREDIS} +ARG PHP_VERSION=${PHP_VERSION} + 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 && \ + echo "extension=redis.so" >> /etc/php/${PHP_VERSION}/mods-available/redis.ini && \ phpenmod redis \ ;fi -##################################### -# Swoole EXTENSION FOR PHP 7 -##################################### +########################################################################### +# Swoole EXTENSION +########################################################################### ARG INSTALL_SWOOLE=false +ARG PHP_VERSION=${PHP_VERSION} + 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 \ + echo "extension=swoole.so" >> /etc/php/${PHP_VERSION}/mods-available/swoole.ini && \ + ln -s /etc/php/${PHP_VERSION}/mods-available/swoole.ini /etc/php/${PHP_VERSION}/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 && \ + 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 && \ @@ -301,18 +328,18 @@ RUN if [ ${INSTALL_DRUPAL_CONSOLE} = true ]; then \ 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 && \ @@ -350,14 +377,13 @@ 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} @@ -381,20 +407,20 @@ RUN if [ ${INSTALL_YARN} = true ]; then \ echo 'export PATH="$YARN_DIR/bin:$PATH"' >> ~/.bashrc \ ;fi -##################################### +########################################################################### # PHP Aerospike: -##################################### +########################################################################### + USER root ARG INSTALL_AEROSPIKE=false -ENV INSTALL_AEROSPIKE ${INSTALL_AEROSPIKE} +ARG PHP_VERSION=${PHP_VERSION} 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" \ + curl -L -o /tmp/aerospike-client-php.tar.gz ${AEROSPIKE_PHP_REPOSITORY} \ && mkdir -p aerospike-client-php \ && tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1 \ && ( \ @@ -404,54 +430,46 @@ RUN if [ ${INSTALL_AEROSPIKE} = true ]; then \ && make install \ ) \ && rm /tmp/aerospike-client-php.tar.gz \ - && echo 'extension=aerospike.so' >> /etc/php/7.1/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_system_path=/usr/local/aerospike/lua' >> /etc/php/7.1/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua' >> /etc/php/7.1/cli/conf.d/aerospike.ini \ + && echo 'extension=aerospike.so' >> /etc/php/${PHP_VERSION}/cli/conf.d/aerospike.ini \ + && echo 'aerospike.udf.lua_system_path=/usr/local/aerospike/lua' >> /etc/php/${PHP_VERSION}/cli/conf.d/aerospike.ini \ + && echo 'aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua' >> /etc/php/${PHP_VERSION}/cli/conf.d/aerospike.ini \ ;fi -##################################### +########################################################################### # PHP V8JS: -##################################### +########################################################################### + USER root ARG INSTALL_V8JS=false -ENV INSTALL_V8JS ${INSTALL_V8JS} +ARG PHP_VERSION=${PHP_VERSION} RUN if [ ${INSTALL_V8JS} = true ]; then \ # Install the php V8JS extension add-apt-repository -y ppa:pinepain/libv8-archived \ && apt-get update -yqq \ - && apt-get install -y php7.1-xml php7.1-dev php-pear libv8-5.4 \ + && apt-get install -y php${PHP_VERSION}-xml php${PHP_VERSION}-dev php-pear libv8-5.4 \ && pecl install v8js \ - && echo "extension=v8js.so" >> /etc/php/7.1/cli/php.ini \ + && echo "extension=v8js.so" >> /etc/php/${PHP_VERSION}/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 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 @@ -462,24 +480,19 @@ RUN if [ ${COMPOSER_REPO_PACKAGIST} ]; then \ ;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" \ + 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 @@ -490,26 +503,25 @@ RUN if [ ${INSTALL_DEPLOYER} = true ]; then \ 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 @@ -531,20 +543,21 @@ RUN if [ ${INSTALL_LINUXBREW} = true ]; then \ 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} +ARG PHP_VERSION=${PHP_VERSION} RUN set -eux; if [ ${INSTALL_MSSQL} = true ]; then \ - ##################################### + ########################################################################### # The following steps were taken from # https://github.com/Microsoft/msphpsql/wiki/Install-and-configuration - ##################################### + ########################################################################### curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ - apt-get update && \ + apt-get update -yqq && \ ACCEPT_EULA=Y apt-get install -yqq msodbcsql=13.0.1.0-1 mssql-tools=14.0.2.0-1 && \ apt-get install -yqq unixodbc-dev-utf16 && \ ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd && \ @@ -562,32 +575,35 @@ RUN set -eux; if [ ${INSTALL_MSSQL} = true ]; then \ 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 \ + echo "extension=sqlsrv.so" > /etc/php/${PHP_VERSION}/cli/conf.d/20-sqlsrv.ini && \ + echo "extension=pdo_sqlsrv.so" > /etc/php/${PHP_VERSION}/cli/conf.d/20-pdo_sqlsrv.ini \ && php -m | grep -q 'sqlsrv' \ && php -m | grep -q 'pdo_sqlsrv' \ ;fi -##################################### +########################################################################### # Minio: -##################################### +########################################################################### + USER root -ARG INSTALL_MC=false -ENV INSTALL_MC ${INSTALL_MC} COPY mc/config.json /root/.mc/config.json +ARG INSTALL_MC=false + 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 \ @@ -597,12 +613,14 @@ RUN if [ ${INSTALL_IMAGE_OPTIMIZERS} = true ]; then \ 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 \ @@ -615,68 +633,70 @@ RUN if [ ${INSTALL_SYMFONY} = true ]; then \ # && 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 \ + apt-get -y install python python-pip python-dev build-essential \ && pip install --upgrade pip \ && pip install --upgrade virtualenv \ ;fi -##################################### +########################################################################### # ImageMagick: -##################################### +########################################################################### + USER root + ARG INSTALL_IMAGEMAGICK=false -ENV INSTALL_IMAGEMAGICK ${INSTALL_IMAGEMAGICK} + RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get update -yqq \ - && apt-get install -y --force-yes imagemagick php-imagick \ + 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 \ + 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 && \ + # Install the pgsql client 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 \ + 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 \ @@ -691,11 +711,13 @@ RUN if [ ${INSTALL_DUSK_DEPS} = true ]; then \ && rm chromedriver_linux64.zip \ ;fi -##################################### +########################################################################### # Check PHP version: -##################################### +########################################################################### -RUN php -v | head -n 1 | grep -q "PHP 7.1." +ARG PHP_VERSION=${PHP_VERSION} + +RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}." # #-------------------------------------------------------------------------- @@ -703,10 +725,12 @@ RUN php -v | head -n 1 | grep -q "PHP 7.1." #-------------------------------------------------------------------------- # -# Clean up USER root + +# Clean up RUN apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ + rm /var/log/lastlog /var/log/faillog # Set default work directory WORKDIR /var/www diff --git a/workspace/Dockerfile-56 b/workspace/Dockerfile-56 deleted file mode 100644 index 86083232..00000000 --- a/workspace/Dockerfile-56 +++ /dev/null @@ -1,696 +0,0 @@ -# -#-------------------------------------------------------------------------- -# 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-56 - -LABEL maintainer="Mahmoud Zalt " - -# 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 ("php5.6-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 -G docker_env && \ - usermod -p "*" 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 php5.6-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 php5.6-ldap \ -;fi - -##################################### -# IMAP: -##################################### -USER root - -ARG INSTALL_IMAP=false -ENV INSTALL_IMAP ${INSTALL_IMAP} - -RUN if [ ${INSTALL_IMAP} = true ]; then \ - # Install the PHP IMAP extension - add-apt-repository -y ppa:ondrej/php && \ - apt-get update -yqq && \ - apt-get -y install php5.6-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 - -# Export composer vendor path -RUN echo "" >> ~/.bashrc && \ -echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc - -##################################### -# Crontab -##################################### -USER root - -COPY ./crontab /etc/cron.d -RUN chmod -R 644 /etc/cron.d - -##################################### -# User Aliases -##################################### -USER root - -COPY ./aliases.sh /root/aliases.sh -COPY ./aliases.sh /home/laradock/aliases.sh - -RUN sed -i 's/\r//' /root/aliases.sh && \ - sed -i 's/\r//' /home/laradock/aliases.sh && \ - chown laradock:laradock /home/laradock/aliases.sh && \ - echo "" >> ~/.bashrc && \ - echo "# Load Custom Aliases" >> ~/.bashrc && \ - echo "source ~/aliases.sh" >> ~/.bashrc && \ - echo "" >> ~/.bashrc - -USER laradock - -RUN echo "" >> ~/.bashrc && \ - echo "# Load Custom Aliases" >> ~/.bashrc && \ - echo "source ~/aliases.sh" >> ~/.bashrc && \ - echo "" >> ~/.bashrc - -##################################### -# xDebug: -##################################### -USER root - -ARG INSTALL_XDEBUG=false -RUN if [ ${INSTALL_XDEBUG} = true ]; then \ - # Load the xdebug extension only with phpunit commands - apt-get install -y --force-yes php5.6-xdebug && \ - sed -i 's/^;//g' /etc/php/5.6/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/5.6/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} - -COPY insecure_id_rsa /tmp/id_rsa -COPY 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 channel-update pecl.php.net && \ - pecl install mongodb && \ - echo "extension=mongodb.so" >> /etc/php/5.6/mods-available/mongodb.ini && \ - ln -s /etc/php/5.6/mods-available/mongodb.ini /etc/php/5.6/cli/conf.d/30-mongodb.ini \ -;fi - -##################################### -# AMQP: -##################################### - -ARG INSTALL_AMQP=false -ENV INSTALL_AMQP ${INSTALL_AMQP} -RUN if [ ${INSTALL_AMQP} = true ]; then \ - apt-get install librabbitmq-dev -y && \ - pecl -q install amqp && \ - echo "extension=amqp.so" >> /etc/php/5.6/mods-available/amqp.ini && \ - ln -s /etc/php/5.6/mods-available/amqp.ini /etc/php/5.6/cli/conf.d/30-amqp.ini \ -;fi - -##################################### -# PHP REDIS EXTENSION FOR PHP 5.6 -##################################### - -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/5.6/mods-available/redis.ini && \ - phpenmod redis \ -;fi - -##################################### -# Swoole EXTENSION FOR PHP 5.6 -##################################### - -ARG INSTALL_SWOOLE=false -RUN if [ ${INSTALL_SWOOLE} = true ]; then \ - # Install Php Swoole Extension - pecl -q install -f swoole-1.10.1 && \ - echo "extension=swoole.so" >> /etc/php/5.6/mods-available/swoole.ini && \ - ln -s /etc/php/5.6/mods-available/swoole.ini /etc/php/5.6/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} - -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-php5/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/aerospike \ - && phpize \ - && ./build.sh \ - && make install \ - ) \ - && rm /tmp/aerospike-client-php.tar.gz \ - && echo 'extension=aerospike.so' >> /etc/php/5.6/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_system_path=/usr/local/aerospike/lua' >> /etc/php/5.6/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua' >> /etc/php/5.6/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-archived \ - && apt-get update -yqq \ - && apt-get install -y php5.6-xml php5.6-dev php-pear libv8-dev \ - && pecl install v8js-0.6.4 \ - && echo "extension=v8js.so" >> /etc/php/5.6/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 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 laradock - -ARG INSTALL_DEPLOYER=false -ENV INSTALL_DEPLOYER ${INSTALL_DEPLOYER} - -RUN if [ ${INSTALL_DEPLOYER} = true ]; then \ - # Install the Deployer - composer global require "deployer/deployer" \ -;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=true -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 set -eux; if [ ${INSTALL_MSSQL} = true ]; then \ - apt-get -y install php5.6-sybase freetds-bin freetds-common libsybdb5 \ - && echo "extension=mssql.so" > /etc/php/5.6/cli/conf.d/20-mssql.ini \ - && echo "extension=pdo_dblib.so" > /etc/php/5.6/cli/conf.d/20-pdo_dblib.ini \ - && php -m | grep -q 'mssql' \ - && php -m | grep -q 'pdo_dblib' \ -;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 - -##################################### -# ImageMagick: -##################################### -USER root -ARG INSTALL_IMAGEMAGICK=false -ENV INSTALL_IMAGEMAGICK ${INSTALL_IMAGEMAGICK} -RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get update -yqq \ - && 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 \ - # Install required packages - 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 \ - # Install Google Chrome - && 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 \ - # Install Chrome Driver - && 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 5.6." - -# -#-------------------------------------------------------------------------- -# 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 diff --git a/workspace/Dockerfile-70 b/workspace/Dockerfile-70 deleted file mode 100644 index 2d9e9e0b..00000000 --- a/workspace/Dockerfile-70 +++ /dev/null @@ -1,710 +0,0 @@ -# -#-------------------------------------------------------------------------- -# 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-70 - -LABEL maintainer="Mahmoud Zalt " - -# 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.0-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 -G docker_env && \ - usermod -p "*" 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.0-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.0-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.0-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 - -# Export composer vendor path -RUN echo "" >> ~/.bashrc && \ -echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc - -##################################### -# Crontab -##################################### -USER root - -COPY ./crontab /etc/cron.d -RUN chmod -R 644 /etc/cron.d - -##################################### -# User Aliases -##################################### -USER root - -COPY ./aliases.sh /root/aliases.sh -COPY ./aliases.sh /home/laradock/aliases.sh - -RUN sed -i 's/\r//' /root/aliases.sh && \ - sed -i 's/\r//' /home/laradock/aliases.sh && \ - chown laradock:laradock /home/laradock/aliases.sh && \ - echo "" >> ~/.bashrc && \ - echo "# Load Custom Aliases" >> ~/.bashrc && \ - echo "source ~/aliases.sh" >> ~/.bashrc && \ - echo "" >> ~/.bashrc - -USER laradock - -RUN echo "" >> ~/.bashrc && \ - echo "# Load Custom Aliases" >> ~/.bashrc && \ - echo "source ~/aliases.sh" >> ~/.bashrc && \ - echo "" >> ~/.bashrc - -##################################### -# xDebug: -##################################### -USER root - -ARG INSTALL_XDEBUG=false -RUN if [ ${INSTALL_XDEBUG} = true ]; then \ - # Load the xdebug extension only with phpunit commands - apt-get install -y --force-yes php7.0-xdebug && \ - sed -i 's/^;//g' /etc/php/7.0/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.0/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} - -COPY insecure_id_rsa /tmp/id_rsa -COPY 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 install mongodb && \ - echo "extension=mongodb.so" >> /etc/php/7.0/mods-available/mongodb.ini && \ - ln -s /etc/php/7.0/mods-available/mongodb.ini /etc/php/7.0/cli/conf.d/30-mongodb.ini \ -;fi - -##################################### -# AMQP: -##################################### - -ARG INSTALL_AMQP=false -ENV INSTALL_AMQP ${INSTALL_AMQP} -RUN if [ ${INSTALL_AMQP} = true ]; then \ - apt-get install librabbitmq-dev -y && \ - pecl -q install amqp && \ - echo "extension=amqp.so" >> /etc/php/7.0/mods-available/amqp.ini && \ - ln -s /etc/php/7.0/mods-available/amqp.ini /etc/php/7.0/cli/conf.d/30-amqp.ini \ -;fi - -##################################### -# PHP REDIS EXTENSION FOR PHP 7 -##################################### - -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.0/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.0/mods-available/swoole.ini && \ - ln -s /etc/php/7.0/mods-available/swoole.ini /etc/php/7.0/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} - -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 \ - && echo 'extension=aerospike.so' >> /etc/php/7.0/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_system_path=/usr/local/aerospike/lua' >> /etc/php/7.0/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua' >> /etc/php/7.0/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-archived \ - && apt-get update -yqq \ - && apt-get install -y php7.0-xml php7.0-dev php-pear libv8-5.4 \ - && pecl install v8js \ - && echo "extension=v8js.so" >> /etc/php/7.0/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 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 laradock - -ARG INSTALL_DEPLOYER=false -ENV INSTALL_DEPLOYER ${INSTALL_DEPLOYER} - -RUN if [ ${INSTALL_DEPLOYER} = true ]; then \ - # Install the Deployer - composer global require "deployer/deployer" \ -;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=true -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=true -ENV INSTALL_MSSQL ${INSTALL_MSSQL} - -RUN set -eux; if [ ${INSTALL_MSSQL} = true ]; then \ - ##################################### - # The following steps were taken from - # https://github.com/Microsoft/msphpsql/wiki/Install-and-configuration - ##################################### - curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ - apt-get update && \ - ACCEPT_EULA=Y apt-get install -yqq msodbcsql=13.0.1.0-1 mssql-tools=14.0.2.0-1 && \ - apt-get install -yqq unixodbc-dev-utf16 && \ - ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd && \ - ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp && \ - ACCEPT_EULA=Y apt-get install -yqq \ - unixodbc \ - unixodbc-dev \ - libgss3 \ - odbcinst \ - msodbcsql \ - locales && \ - echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen && \ - pecl install sqlsrv-4.3.0 pdo_sqlsrv-4.3.0 && \ - apt-get install -y locales && \ - echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen && \ - echo "extension=sqlsrv.so" > /etc/php/7.0/cli/conf.d/20-sqlsrv.ini && \ - echo "extension=pdo_sqlsrv.so" > /etc/php/7.0/cli/conf.d/20-pdo_sqlsrv.ini \ - && php -m | grep -q 'sqlsrv' \ - && php -m | grep -q 'pdo_sqlsrv' \ -;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 - -##################################### -# 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 - -##################################### -# ImageMagick: -##################################### -USER root -ARG INSTALL_IMAGEMAGICK=false -ENV INSTALL_IMAGEMAGICK ${INSTALL_IMAGEMAGICK} -RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get update -yqq \ - && 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 client - 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.0." - -# -#-------------------------------------------------------------------------- -# 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 diff --git a/workspace/Dockerfile-72 b/workspace/Dockerfile-72 deleted file mode 100644 index 9e0e427d..00000000 --- a/workspace/Dockerfile-72 +++ /dev/null @@ -1,712 +0,0 @@ -# -#-------------------------------------------------------------------------- -# 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-72 - -LABEL maintainer="Mahmoud Zalt " - -# 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.2-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 -G docker_env && \ - usermod -p "*" 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.2-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.2-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.2-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 root - -COPY ./aliases.sh /root/aliases.sh -COPY ./aliases.sh /home/laradock/aliases.sh - -RUN sed -i 's/\r//' /root/aliases.sh && \ - sed -i 's/\r//' /home/laradock/aliases.sh && \ - chown laradock:laradock /home/laradock/aliases.sh && \ - echo "" >> ~/.bashrc && \ - echo "# Load Custom Aliases" >> ~/.bashrc && \ - echo "source ~/aliases.sh" >> ~/.bashrc && \ - echo "" >> ~/.bashrc - -USER laradock - -RUN echo "" >> ~/.bashrc && \ - echo "# Load Custom Aliases" >> ~/.bashrc && \ - echo "source ~/aliases.sh" >> ~/.bashrc && \ - echo "" >> ~/.bashrc - -##################################### -# xDebug: -##################################### -USER root - -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.2-xdebug && \ - sed -i 's/^;//g' /etc/php/7.2/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.2/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} - -COPY insecure_id_rsa /tmp/id_rsa -COPY 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.2/mods-available/mongodb.ini && \ - ln -s /etc/php/7.2/mods-available/mongodb.ini /etc/php/7.2/cli/conf.d/30-mongodb.ini \ -;fi - -##################################### -# AMQP: -##################################### - -ARG INSTALL_AMQP=false -ENV INSTALL_AMQP ${INSTALL_AMQP} -RUN if [ ${INSTALL_AMQP} = true ]; then \ - apt-get install librabbitmq-dev -y && \ - pecl -q install amqp && \ - echo "extension=amqp.so" >> /etc/php/7.2/mods-available/amqp.ini && \ - ln -s /etc/php/7.2/mods-available/amqp.ini /etc/php/7.2/cli/conf.d/30-amqp.ini \ -;fi - -##################################### -# PHP REDIS EXTENSION FOR PHP 7.2 -##################################### - -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.2/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.2/mods-available/swoole.ini && \ - ln -s /etc/php/7.2/mods-available/swoole.ini /etc/php/7.2/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} -ENV NVM_DIR /home/laradock/.nvm -ARG NPM_REGISTRY -ENV NPM_REGISTRY ${NPM_REGISTRY} -RUN if [ ${INSTALL_NODE} = true ]; then \ - # Install nvm (A Node Version Manager) - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/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} - -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 (using 7.2.0-in-progress branch until support for 7.2 on master) - curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/aerospike/aerospike-client-php/archive/7.2.0-in-progress.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 \ - && echo 'extension=aerospike.so' >> /etc/php/7.2/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_system_path=/usr/local/aerospike/lua' >> /etc/php/7.2/cli/conf.d/aerospike.ini \ - && echo 'aerospike.udf.lua_user_path=/usr/local/aerospike/usr-lua' >> /etc/php/7.2/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-archived \ - && apt-get update -yqq \ - && apt-get install -y php-xml php-dev php-pear libv8-5.4 \ - && pecl install v8js \ - && echo "extension=v8js.so" >> /etc/php/7.2/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 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 set -eux; if [ ${INSTALL_MSSQL} = true ]; then \ - ##################################### - # The following steps were taken from - # https://github.com/Microsoft/msphpsql/wiki/Install-and-configuration - ##################################### - curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ - apt-get update && \ - ACCEPT_EULA=Y apt-get install -yqq msodbcsql=13.0.1.0-1 mssql-tools=14.0.2.0-1 && \ - apt-get install -yqq unixodbc-dev-utf16 && \ - ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd && \ - ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp && \ - ACCEPT_EULA=Y apt-get install -yqq \ - unixodbc \ - unixodbc-dev \ - libgss3 \ - odbcinst \ - msodbcsql \ - locales && \ - echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen && \ - pecl install sqlsrv-4.3.0 pdo_sqlsrv-4.3.0 && \ - apt-get install -y locales && \ - echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen && \ - echo "extension=sqlsrv.so" > /etc/php/7.2/cli/conf.d/20-sqlsrv.ini && \ - echo "extension=pdo_sqlsrv.so" > /etc/php/7.2/cli/conf.d/20-pdo_sqlsrv.ini \ - && php -m | grep -q 'sqlsrv' \ - && php -m | grep -q 'pdo_sqlsrv' \ -;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 - -##################################### -# ImageMagick: -##################################### -USER root -ARG INSTALL_IMAGEMAGICK=false -ENV INSTALL_IMAGEMAGICK ${INSTALL_IMAGEMAGICK} -RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get update -yqq \ - && 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.2." - -# -#-------------------------------------------------------------------------- -# 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