Browse Source

Merge branch 'master' into develop

Miguel Ortiz 5 years ago
parent
commit
6b96891e47

+ 9 - 0
.devcontainer/devcontainer.example.json

@@ -0,0 +1,9 @@
+{
+  "name": "Laradock",
+  "dockerComposeFile": ["../docker-compose.yml"],
+  "runServices": ["nginx", "postgres", "pgadmin"],
+  "service": "workspace",
+  "workspaceFolder": "/var/www",
+  "shutdownAction": "stopCompose",
+  "postCreateCommand": "uname -a"
+}

+ 3 - 0
.gitignore

@@ -18,4 +18,7 @@
 /apache2/ssl/*.csr
 /apache2/ssl/*.org
 
+/.devcontainer/*
+!/.devcontainer/devcontainer.example.json
+
 .DS_Store

+ 1 - 1
.travis.yml

@@ -31,7 +31,7 @@ env:
     - PHP_VERSION=NA BUILD_SERVICE="mssql rethinkdb aerospike"
     - PHP_VERSION=NA BUILD_SERVICE="blackfire minio percona nginx caddy apache2 mysql mariadb postgres postgres-postgis neo4j mongo redis cassandra"
     - PHP_VERSION=NA BUILD_SERVICE="adminer phpmyadmin pgadmin"
-    - PHP_VERSION=NA BUILD_SERVICE="memcached beanstalkd beanstalkd-console rabbitmq elasticsearch certbot mailhog maildev selenium jenkins proxy proxy2 haproxy"
+    - PHP_VERSION=NA BUILD_SERVICE="memcached beanstalkd beanstalkd-console rabbitmq elasticsearch certbot mailhog maildev selenium jenkins proxy proxy2 haproxy gearman"
     - PHP_VERSION=NA BUILD_SERVICE="kibana grafana laravel-echo-server"
     - PHP_VERSION=NA BUILD_SERVICE="ipython-controller manticore"
     # - PHP_VERSION=NA BUILD_SERVICE="aws"

+ 23 - 2
DOCUMENTATION/content/documentation/index.md

@@ -650,7 +650,7 @@ docker-compose up -d metabase
 
 1) Boot the container `docker-compose up -d jenkins`. To enter the container type `docker-compose exec jenkins bash`.
 
-2) Go to `http://localhost:8090/` (if you didn't chanhed your default port mapping)
+2) Go to `http://localhost:8090/` (if you didn't change your default port mapping)
 
 3) Authenticate from the web app.
 
@@ -1054,7 +1054,7 @@ docker-compose up -d confluence
 
 2 - Open your browser and visit the localhost on port **8090**:  `http://localhost:8090`
 
-**Note:** You can you trial version and then you have to buy a licence to use it.
+**Note:** Confluence is a licensed application - an evaluation licence can be obtained from Atlassian.
 
 You can set custom confluence version in `CONFLUENCE_VERSION`. [Find more info in section 'Versioning'](https://hub.docker.com/r/atlassian/confluence-server/)
 
@@ -1865,6 +1865,27 @@ To install GNU Parallel in the Workspace container
 
 
 
+<br>
+<a name="Install-Supervisor"></a>
+## Install Supervisor
+
+Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.
+
+(see http://supervisord.org/index.html)
+
+To install Supervisor in the Workspace container
+
+1 - Open the `.env` file
+
+2 - Set `WORKSPACE_INSTALL_SUPERVISOR` and `WORKSPACE_INSTALL_PYTHON` to `true`.
+
+3 - Re-build the container `docker-compose build workspace` Or `docker-composer up --build -d workspace` 
+
+
+
+
+
+
 <br>
 <a name="Common-Aliases"></a>
 <br>

+ 10 - 0
DOCUMENTATION/content/guides/index.md

@@ -70,6 +70,16 @@ If you want to only execute some command and don't want to enter bash, you can e
 docker-compose run workspace php artisan migrate
 ```
 
+### Prepare for Visual Studio Code remote development
+
+If you want to use Visual Studio Code for [remote development](https://code.visualstudio.com/docs/remote/containers) directly on your `workspace` container, copy file `devcontainer.example.json` to `devcontainer.json` and customize it (see [devcontainer.json reference](https://code.visualstudio.com/docs/remote/containers#_devcontainerjson-reference) for more options):
+```
+cd .devcontainer
+cp devcontainer.example.json devcontainer.json
+```
+
+Then open your `laradock` folder in Visual Studio Code and click on popup button **Reopen in Container**.
+
 ### Install and configure Laravel
 
 Let's install Laravel's dependencies, add the `.env` file, generate the key and give proper permissions to the cache folder.

+ 1 - 0
DOCUMENTATION/content/introduction/index.md

@@ -194,6 +194,7 @@ That's it! enjoy :)
     - Eclipse Mosquitto
     - PHP Worker
     - Laravel Horizon
+    - Gearman
 
 - **Mail Servers:**
     - Mailu 

+ 13 - 13
README.md

@@ -53,28 +53,28 @@ Laradock exists thanks to all the people who contribute.
             <br>
             <strong>Bo-Yi Wu</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@appleboy</a>
+            <a href="https://github.com/appleboy">@appleboy</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/philtrep.png?s=150">
             <br>
             <strong>Philippe Trépanier</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@philtrep</a>
+            <a href="https://github.com/philtrep">@philtrep</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/mikeerickson.png?s=150">
             <br>
             <strong>Mike Erickson</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@mikeerickson</a>
+            <a href="https://github.com/mikeerickson">@mikeerickson</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/zeroc0d3.png?s=150">
             <br>
             <strong>Dwi Fahni Denni</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@zeroc0d3</a>
+            <a href="https://github.com/zeroc0d3">@zeroc0d3</a>
         </td>
      </tr>
      <tr>
@@ -83,35 +83,35 @@ Laradock exists thanks to all the people who contribute.
             <br>
             <strong>Thor Erik</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@thorerik</a>
+            <a href="https://github.com/thorerik">@thorerik</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/winfried-van-loon.png?s=150">
             <br>
             <strong>Winfried van Loon</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@winfried-van-loon</a>
+            <a href="https://github.com/winfried-van-loon">@winfried-van-loon</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/sixlive.png?s=150">
             <br>
             <strong>TJ Miller</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@sixlive</a>
+            <a href="https://github.com/sixlive">@sixlive</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/bestlong.png?s=150">
             <br>
             <strong>Yu-Lung Shao (Allen)</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@bestlong</a>
+            <a href="https://github.com/bestlong">@bestlong</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/urukalo.png?s=150">
             <br>
             <strong>Milan Urukalo</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@urukalo</a>
+            <a href="https://github.com/urukalo">@urukalo</a>
         </td>
      </tr>
      <tr>
@@ -120,28 +120,28 @@ Laradock exists thanks to all the people who contribute.
             <br>
             <strong>Vince Chu</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@vwchu</a>
+            <a href="https://github.com/vwchu">@vwchu</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/zuohuadong.png?s=150">
             <br>
             <strong>Huadong Zuo</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@zuohuadong</a>
+            <a href="https://github.com/zuohuadong">@zuohuadong</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/lanphan.png?s=150">
             <br>
             <strong>Lan Phan</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@lanphan</a>
+            <a href="https://github.com/lanphan">@lanphan</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://github.com/ahkui.png?s=150">
             <br>
             <strong>Ahkui</strong>
             <br>
-            <a href="https://github.com/Mahmoudz">@ahkui</a>
+            <a href="https://github.com/ahkui">@ahkui</a>
         </td>
         <td align="center" valign="top">
             <img width="125" height="125" src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/join-us.png">

+ 43 - 0
docker-compose.yml

@@ -70,6 +70,7 @@ services:
           - INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
           - INSTALL_AMQP=${WORKSPACE_INSTALL_AMQP}
           - INSTALL_CASSANDRA=${WORKSPACE_INSTALL_CASSANDRA}
+          - INSTALL_GEARMAN=${WORKSPACE_INSTALL_GEARMAN}
           - INSTALL_PHPREDIS=${WORKSPACE_INSTALL_PHPREDIS}
           - INSTALL_MSSQL=${WORKSPACE_INSTALL_MSSQL}
           - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
@@ -109,6 +110,7 @@ services:
           - INSTALL_MYSQL_CLIENT=${WORKSPACE_INSTALL_MYSQL_CLIENT}
           - INSTALL_PING=${WORKSPACE_INSTALL_PING}
           - INSTALL_SSHPASS=${WORKSPACE_INSTALL_SSHPASS}
+          - INSTALL_MAILPARSE=${WORKSPACE_INSTALL_MAILPARSE}
           - PUID=${WORKSPACE_PUID}
           - PGID=${WORKSPACE_PGID}
           - CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION}
@@ -119,6 +121,7 @@ services:
           - BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID}
           - BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN}
           - INSTALL_POWERLINE=${WORKSPACE_INSTALL_POWERLINE}
+          - INSTALL_SUPERVISOR=${WORKSPACE_INSTALL_SUPERVISOR}
           - INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG}
           - INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL}
           - http_proxy
@@ -126,6 +129,7 @@ services:
           - no_proxy
       volumes:
         - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
+        - ./php-worker/supervisord.d:/etc/supervisord.d
       extra_hosts:
         - "dockerhost:${DOCKER_HOST_IP}"
       ports:
@@ -145,6 +149,7 @@ services:
       build:
         context: ./php-fpm
         args:
+          - CHANGE_SOURCE=${CHANGE_SOURCE}
           - LARADOCK_PHP_VERSION=${PHP_VERSION}
           - LARADOCK_PHALCON_VERSION=${PHALCON_VERSION}
           - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
@@ -157,6 +162,7 @@ services:
           - INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
           - INSTALL_AMQP=${PHP_FPM_INSTALL_AMQP}
           - INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA}
+          - INSTALL_GEARMAN=${PHP_FPM_INSTALL_GEARMAN}
           - INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL}
           - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
           - INSTALL_GMP=${PHP_FPM_INSTALL_GMP}
@@ -187,6 +193,8 @@ services:
           - INSTALL_MYSQL_CLIENT=${PHP_FPM_INSTALL_MYSQL_CLIENT}
           - INSTALL_PING=${PHP_FPM_INSTALL_PING}
           - INSTALL_SSHPASS=${PHP_FPM_INSTALL_SSHPASS}
+          - INSTALL_MAILPARSE=${PHP_FPM_INSTALL_MAILPARSE}
+          - INSTALL_PCNTL=${PHP_FPM_INSTALL_PCNTL}
           - ADDITIONAL_LOCALES=${PHP_FPM_ADDITIONAL_LOCALES}
           - INSTALL_FFMPEG=${PHP_FPM_FFMPEG}
           - INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF}
@@ -226,11 +234,13 @@ services:
           - INSTALL_MYSQL_CLIENT=${PHP_WORKER_INSTALL_MYSQL_CLIENT}
           - INSTALL_AMQP=${PHP_WORKER_INSTALL_AMQP}
           - INSTALL_CASSANDRA=${PHP_WORKER_INSTALL_CASSANDRA}
+          - INSTALL_GEARMAN=${PHP_WORKER_INSTALL_GEARMAN}
           - INSTALL_GHOSTSCRIPT=${PHP_WORKER_INSTALL_GHOSTSCRIPT}
           - INSTALL_SWOOLE=${PHP_WORKER_INSTALL_SWOOLE}
           - INSTALL_TAINT=${PHP_WORKER_INSTALL_TAINT}
           - INSTALL_FFMPEG=${PHP_WORKER_INSTALL_FFMPEG}
           - INSTALL_GMP=${PHP_WORKER_INSTALL_GMP}
+          - INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS}
           - PUID=${PHP_WORKER_PUID}
           - PGID=${PHP_WORKER_PGID}
       volumes:
@@ -625,6 +635,39 @@ services:
       networks:
         - backend
 
+### Gearman ############################################
+    gearman:
+      build: ./gearman
+      ports:
+        - "${GEARMAN_PORT}:4730"
+      privileged: true
+      environment:
+        - GEARMAN_VERSION=${GEARMAN_VERSION}
+        - GEARMAN_VERBOSE=${GEARMAN_VERBOSE}
+        - GEARMAN_QUEUE_TYPE=${GEARMAN_QUEUE_TYPE}
+        - GEARMAN_THREADS=${GEARMAN_THREADS}
+        - GEARMAN_BACKLOG=${GEARMAN_BACKLOG}
+        - GEARMAN_FILE_DESCRIPTORS=${GEARMAN_FILE_DESCRIPTORS}
+        - GEARMAN_JOB_RETRIES=${GEARMAN_JOB_RETRIES}
+        - GEARMAN_ROUND_ROBIN=${GEARMAN_ROUND_ROBIN}
+        - GEARMAN_WORKER_WAKEUP=${GEARMAN_WORKER_WAKEUP}
+        - GEARMAN_KEEPALIVE=${GEARMAN_KEEPALIVE}
+        - GEARMAN_KEEPALIVE_IDLE=${GEARMAN_KEEPALIVE_IDLE}
+        - GEARMAN_KEEPALIVE_INTERVAL=${GEARMAN_KEEPALIVE_INTERVAL}
+        - GEARMAN_KEEPALIVE_COUNT=${GEARMAN_KEEPALIVE_COUNT}
+        - GEARMAN_MYSQL_HOST=${GEARMAN_MYSQL_HOST}
+        - GEARMAN_MYSQL_PORT=${GEARMAN_MYSQL_PORT}
+        - GEARMAN_MYSQL_USER=${GEARMAN_MYSQL_USER}
+        - GEARMAN_MYSQL_PASSWORD=${GEARMAN_MYSQL_PASSWORD}
+        - GEARMAN_MYSQL_PASSWORD_FILE=${GEARMAN_MYSQL_PASSWORD_FILE}
+        - GEARMAN_MYSQL_DB=${GEARMAN_MYSQL_DB}
+        - GEARMAN_MYSQL_TABLE=${GEARMAN_MYSQL_TABLE}
+      hostname: laradock-gearman
+      depends_on:
+        - php-fpm
+      networks:
+        - backend
+
 ### Beanstalkd Console ###################################
     beanstalkd-console:
       build: ./beanstalkd-console

+ 52 - 0
env-example

@@ -107,6 +107,7 @@ WORKSPACE_INSTALL_IMAP=false
 WORKSPACE_INSTALL_MONGO=false
 WORKSPACE_INSTALL_AMQP=false
 WORKSPACE_INSTALL_CASSANDRA=false
+WORKSPACE_INSTALL_GEARMAN=false
 WORKSPACE_INSTALL_MSSQL=false
 WORKSPACE_INSTALL_DRUSH=false
 WORKSPACE_DRUSH_VERSION=8.1.17
@@ -123,6 +124,7 @@ WORKSPACE_INSTALL_MC=false
 WORKSPACE_INSTALL_SYMFONY=false
 WORKSPACE_INSTALL_PYTHON=false
 WORKSPACE_INSTALL_POWERLINE=false
+WORKSPACE_INSTALL_SUPERVISOR=false
 WORKSPACE_INSTALL_IMAGE_OPTIMIZERS=false
 WORKSPACE_INSTALL_IMAGEMAGICK=false
 WORKSPACE_INSTALL_TERRAFORM=false
@@ -138,6 +140,7 @@ WORKSPACE_INSTALL_PING=false
 WORKSPACE_INSTALL_SSHPASS=false
 WORKSPACE_INSTALL_INOTIFY=false
 WORKSPACE_INSTALL_FSWATCH=false
+WORKSPACE_INSTALL_MAILPARSE=false
 WORKSPACE_PUID=1000
 WORKSPACE_PGID=1000
 WORKSPACE_CHROME_DRIVER_VERSION=2.42
@@ -163,6 +166,7 @@ PHP_FPM_INSTALL_IMAP=false
 PHP_FPM_INSTALL_MONGO=false
 PHP_FPM_INSTALL_AMQP=false
 PHP_FPM_INSTALL_CASSANDRA=false
+PHP_FPM_INSTALL_GEARMAN=false
 PHP_FPM_INSTALL_MSSQL=false
 PHP_FPM_INSTALL_SSH2=false
 PHP_FPM_INSTALL_SOAP=false
@@ -190,6 +194,7 @@ PHP_FPM_INSTALL_ADDITIONAL_LOCALES=false
 PHP_FPM_INSTALL_MYSQL_CLIENT=false
 PHP_FPM_INSTALL_PING=false
 PHP_FPM_INSTALL_SSHPASS=false
+PHP_FPM_INSTALL_MAILPARSE=false
 PHP_FPM_FFMPEG=false
 PHP_FPM_ADDITIONAL_LOCALES="es_ES.UTF-8 fr_FR.UTF-8"
 
@@ -208,6 +213,8 @@ PHP_WORKER_INSTALL_TAINT=false
 PHP_WORKER_INSTALL_FFMPEG=false
 PHP_WORKER_INSTALL_GMP=false
 PHP_WORKER_INSTALL_CASSANDRA=false
+PHP_WORKER_INSTALL_GEARMAN=false
+PHP_WORKER_INSTALL_REDIS=false
 
 PHP_WORKER_PUID=1000
 PHP_WORKER_PGID=1000
@@ -782,3 +789,48 @@ CASSANDRA_ENABLE_RPC=true
 CASSANDRA_DATACENTER=dc1
 # Rack name for the cluster. Ignored in SimpleSnitch endpoint snitch. Default: rack1.
 CASSANDRA_RACK=rack1
+
+### GEARMAN ##################################################
+
+# Gearman version to use. See available tags at https://hub.docker.com/r/artefactual/gearmand
+GEARMAN_VERSION=latest
+# Port to use (Default: 6379)
+GEARMAN_PORT=6379
+# Logging Level (Default: INFO)
+GEARMAN_VERBOSE=INFO
+# Persistent queue type to use (Default: builtin)
+GEARMAN_QUEUE_TYPE=builtin
+# Number of I/O threads to use (Default: 4)
+GEARMAN_THREADS=4
+# Number of backlog connections for listen (Default: 32)
+GEARMAN_BACKLOG=32
+# Number of file descriptors to allow for the process (Default is max allowed for user)
+GEARMAN_FILE_DESCRIPTORS=
+# Number of attempts to run the job before the job server removes it. (Default: no limit = 0)
+GEARMAN_JOB_RETRIES=0
+# Assign work in round-robin order per worker connection (Default: 0)
+GEARMAN_ROUND_ROBIN=0
+# Number of workers to wakeup for each job received (Default: 0)
+GEARMAN_WORKER_WAKEUP=0
+# Enable keepalive on sockets (Default: 0)
+GEARMAN_KEEPALIVE=0
+# The duration between two keepalive transmissions in idle condition (Default: 30)
+GEARMAN_KEEPALIVE_IDLE=30
+# The duration between two successive keepalive retransmissions, if acknowledgement to the previous keepalive transmission is not received	(Default: 10)
+GEARMAN_KEEPALIVE_INTERVAL=10
+# The number of retransmissions to be carried out before declaring that remote end is not available (Default: 5)
+GEARMAN_KEEPALIVE_COUNT=5
+# Mysql server host (Default: localhost)
+GEARMAN_MYSQL_HOST=localhost
+# Mysql server port (Default: 3306)
+GEARMAN_MYSQL_PORT=3306
+# Mysql server user (Default: root)
+GEARMAN_MYSQL_USER=root
+# Mysql password
+GEARMAN_MYSQL_PASSWORD=	
+# Path to file with mysql password(Docker secrets)
+GEARMAN_MYSQL_PASSWORD_FILE=
+# Database to use by Gearman (Default: Gearmand)
+GEARMAN_MYSQL_DB=Gearmand
+# Table to use by Gearman (Default: gearman_queue)
+GEARMAN_MYSQL_TABLE=gearman_queue

+ 5 - 0
gearman/Dockerfile

@@ -0,0 +1,5 @@
+ARG GEARMAN_VERSION=latest
+FROM artefactual/gearmand:${GEARMAN_VERSION}
+
+LABEL maintainer="Stefan Neuhaus <https://www.github.com/stefnats>"
+

+ 1 - 1
laravel-horizon/Dockerfile

@@ -87,7 +87,7 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
   if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
   curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/2.2.0.tar.gz"; \
   else \
-  curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz"; \
+  curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/v3.1.3.tar.gz"; \
   fi \
   && mkdir -p memcached \
   && tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \

+ 2 - 0
mariadb/Dockerfile

@@ -12,6 +12,8 @@ ENV TZ ${TZ}
 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && chown -R mysql:root /var/lib/mysql/
 COPY my.cnf /etc/mysql/conf.d/my.cnf
 
+RUN chmod -R 644 /etc/mysql/conf.d/my.cnf
+
 CMD ["mysqld"]
 
 EXPOSE 3306

+ 2 - 0
mysql/Dockerfile

@@ -13,6 +13,8 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone &
 
 COPY my.cnf /etc/mysql/conf.d/my.cnf
 
+RUN chmod 0444 /etc/mysql/conf.d/my.cnf
+
 CMD ["mysqld"]
 
 EXPOSE 3306

+ 44 - 14
php-fpm/Dockerfile

@@ -319,6 +319,30 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \
     docker-php-ext-install sockets \
 ;fi
 
+###########################################################################
+# GEARMAN:
+###########################################################################
+
+ARG INSTALL_GEARMAN=false
+
+RUN if [ ${INSTALL_GEARMAN} = true ]; then \
+    apt-get update && \
+    apt-get -y install libgearman-dev && \
+    cd /tmp && \
+    curl -L https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.5.zip -O && \
+    unzip gearman-2.0.5.zip && \
+    mv pecl-gearman-gearman-2.0.5 pecl-gearman && \
+    cd /tmp/pecl-gearman && \
+    phpize && \
+    ./configure && \
+    make -j$(nproc) && \
+    make install && \
+    cd / && \
+    rm /tmp/gearman-2.0.5.zip && \
+    rm -r /tmp/pecl-gearman && \
+    docker-php-ext-enable gearman \
+;fi
+
 ###########################################################################
 # pcntl
 ###########################################################################
@@ -364,21 +388,10 @@ ARG INSTALL_MEMCACHED=false
 RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
     # Install the php memcached extension
     if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
-      curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/2.2.0.tar.gz"; \
+      pecl install memcached-2.2.0; \
     else \
-      curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/master.tar.gz"; \
+      pecl install memcached-3.1.3; \
     fi \
-    && 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
 
@@ -695,7 +708,11 @@ ARG INSTALL_MYSQL_CLIENT=false
 
 RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \
     apt-get update -yqq && \
-    apt-get -y install mysql-client \
+    if [ ${LARADOCK_PHP_VERSION} = "7.3" ]; then \
+      apt-get -y install default-mysql-client \
+    ;else \
+      apt-get -y install mysql-client \
+    ;fi \
 ;fi
 
 ###########################################################################
@@ -737,6 +754,19 @@ RUN if [ ${INSTALL_FFMPEG} = true ]; then \
     apt-get -y install ffmpeg \
 ;fi
 
+###########################################################################
+# Mailparse extension:
+###########################################################################
+
+ARG INSTALL_MAILPARSE=false
+
+RUN if [ ${INSTALL_MAILPARSE} = true ]; then \
+    # Install mailparse extension
+    printf "\n" | pecl install -o -f mailparse \
+    &&  rm -rf /tmp/pear \
+    &&  docker-php-ext-enable mailparse \
+;fi
+
 ###########################################################################
 # Check PHP version:
 ###########################################################################

+ 24 - 5
php-worker/Dockerfile

@@ -66,7 +66,11 @@ RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
 # Install MySQL Client:
 ARG INSTALL_MYSQL_CLIENT=false
 RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \
-    apk --update add mysql-client \
+    if [ ${PHP_VERSION} = "7.3" ]; then \
+      apk --update add default-mysql-client \
+    ;else \
+      apk --update add mysql-client \
+    ;fi \
 ;fi
 
 # Install FFMPEG:
@@ -85,6 +89,13 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \
     docker-php-ext-install sockets \
 ;fi
 
+# Install Gearman:
+ARG INSTALL_GEARMAN=false
+
+RUN if [ ${INSTALL_GEARMAN} = true ]; then \
+    docker-php-ext-install gearman \
+;fi
+
 # Install Cassandra drivers:
 ARG INSTALL_CASSANDRA=false
 RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
@@ -130,10 +141,14 @@ RUN if [ ${INSTALL_GMP} = true ]; then \
    && docker-php-ext-install gmp \
 ;fi
 
-
-RUN rm /var/cache/apk/* \
-    && mkdir -p /var/www
-
+# Install Redis package:
+ARG INSTALL_REDIS=false
+RUN if [ ${INSTALL_REDIS} = true ]; then \
+    # Install Redis Extension
+    printf "\n" | pecl install -o -f redis \
+    &&  rm -rf /tmp/pear \
+    &&  docker-php-ext-enable redis \
+;fi
 
 ###########################################################################
 # Swoole EXTENSION
@@ -205,4 +220,8 @@ RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}."
 #--------------------------------------------------------------------------
 #
 
+# Clean up
+RUN rm /var/cache/apk/* \
+    && mkdir -p /var/www
+
 WORKDIR /etc/supervisor/conf.d/

+ 36 - 0
workspace/Dockerfile

@@ -436,6 +436,18 @@ RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
     ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-cassandra.ini \
 ;fi
 
+###########################################################################
+# Gearman:
+###########################################################################
+
+ARG INSTALL_GEARMAN=false
+
+RUN if [ ${INSTALL_GEARMAN} = true ]; then \
+    add-apt-repository -y ppa:ondrej/pkg-gearman && \
+    apt-get update && \
+    apt-get install php-gearman -y  \
+;fi
+
 ###########################################################################
 # PHP REDIS EXTENSION
 ###########################################################################
@@ -945,6 +957,20 @@ RUN if [ ${INSTALL_POWERLINE} = true ]; then \
   ;fi \
 ;fi
 
+###########################################################################
+# SUPERVISOR:
+###########################################################################
+ARG INSTALL_SUPERVISOR=false
+
+RUN if [ ${INSTALL_SUPERVISOR} = true ]; then \
+    if [ ${INSTALL_PYTHON} = true ]; then \
+    python -m pip install --upgrade supervisor && \
+    echo_supervisord_conf > /etc/supervisord.conf && \
+    sed -i 's/\;\[include\]/\[include\]/g' /etc/supervisord.conf && \
+    sed -i 's/\;files\s.*/files = supervisord.d\/*.conf/g' /etc/supervisord.conf \
+  ;fi \
+;fi
+
 USER laradock
 
 ###########################################################################
@@ -1087,6 +1113,16 @@ RUN if [ ${INSTALL_FFMPEG} = true ]; then \
   apt-get -y install ffmpeg \
 ;fi
 
+###########################################################################
+# Mailparse extension:
+###########################################################################
+
+ARG INSTALL_MAILPARSE=false
+
+RUN if [ ${INSTALL_MAILPARSE} = true ]; then \
+    apt-get install -yqq php-mailparse \
+;fi
+
 ###########################################################################
 # GNU Parallel:
 ###########################################################################