فهرست منبع

Merge branch 'master' into add-tomcat

Shao Yu-Lung (Allen) 5 سال پیش
والد
کامیت
f608c6a45d

+ 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"
+}

+ 0 - 98
.github/README.md

@@ -1,98 +0,0 @@
-<p align="center">
-    <img src="/.github/home-page-images/laradock-logo.jpg?raw=true" alt="Laradock Logo"/>
-</p>
-
-<p align="center">PHP development environment that runs on Docker</p>
-
-<p align="center">
-   <a href="https://travis-ci.org/laradock/laradock"><img src="https://travis-ci.org/laradock/laradock.svg?branch=master" alt="Build status"></a>
-   <a href="https://github.com/laradock/laradock/stargazers"><a href="#backers" alt="sponsors on Open Collective"><img src="https://opencollective.com/laradock/backers/badge.svg" /></a> <a href="#sponsors" alt="Sponsors on Open Collective"><img src="https://opencollective.com/laradock/sponsors/badge.svg" /></a> <img src="https://img.shields.io/github/stars/laradock/laradock.svg" alt="GitHub stars"></a>
-   <a href="https://github.com/laradock/laradock/network"><img src="https://img.shields.io/github/forks/laradock/laradock.svg" alt="GitHub forks"></a>
-   <a href="https://github.com/laradock/laradock/issues"><img src="https://img.shields.io/github/issues/laradock/laradock.svg" alt="GitHub issues"></a>
-   <a href="https://raw.githubusercontent.com/laradock/laradock/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="GitHub license"></a>
-    <a href="http://laradock.io/contributing"><img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat" alt="contributions welcome"></a>
-</p>
-
-<h4 align="center" style="color:#7d58c2">Use Docker First - Then Learn About It Later</h4>
-
-<p align="center">
-    <a href="http://zalt.me"><img src="http://forthebadge.com/images/badges/built-by-developers.svg" alt="forthebadge" width="240"></a>
-</p>
-
-
----
-
-<p align="center">
-	<a href="http://laradock.io">
-	   <img src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/documentation-button.png" width="300px" alt="Laradock Documentation"/>
-	</a>
-</p>
-
-## Sponsors 
-
-<p align="center">
-    <!-- Golden Sponsors -->
-	<a href="https://edubirdie.com/?ref=Laradock" target="_blank">
-	   <img src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/sponsor-1.png?raw=true" width="300px" alt="Writing essays service Edubirdie"/>
-	</a>
-</p>
-                                                                
-<!-- OpenCollective Sponsors -->
-<a href="https://opencollective.com/laradock/sponsor/0/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/0/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/1/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/1/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/2/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/2/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/3/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/3/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/4/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/4/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/5/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/5/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/6/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/6/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/7/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/7/avatar.svg"></a>
-
-For basic sponsorships go to [Open Collective](https://opencollective.com/laradock#sponsor), for golden sponsorships contact <a href = "mailto: support@laradock.io">support@laradock.io</a>.
-
-*Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page.* 
-
-## People
-
-#### Maintainers:
-- [Mahmoud Zalt](https://github.com/Mahmoudz) @mahmoudz | [Twitter](https://twitter.com/Mahmoud_Zalt) | [Site](http://zalt.me)
-- [Bo-Yi Wu](https://github.com/appleboy) @appleboy | [Twitter](https://twitter.com/appleboy)
-- [Philippe Trépanier](https://github.com/philtrep) @philtrep
-- [Mike Erickson](https://github.com/mikeerickson) @mikeerickson
-- [Dwi Fahni Denni](https://github.com/zeroc0d3) @zeroc0d3
-- [Thor Erik](https://github.com/thorerik) @thorerik
-- [Winfried van Loon](https://github.com/winfried-van-loon) @winfried-van-loon
-- [TJ Miller](https://github.com/sixlive) @sixlive
-- [Yu-Lung Shao (Allen)](https://github.com/bestlong) @bestlong
-- [Milan Urukalo](https://github.com/urukalo) @urukalo
-- [Vince Chu](https://github.com/vwchu) @vwchu
-- [Huadong Zuo](https://github.com/zuohuadong) @zuohuadong
-- [Lan Phan](https://github.com/lanphan) @lanphan
-- [Ahkui](https://github.com/ahkui) @ahkui
-- Join us.
-
-#### Awesome Contributors:
-
-<a href="https://github.com/laradock/laradock/graphs/contributors"><img src="https://opencollective.com/laradock/contributors.svg?width=890" /></a>
-
-
-## Donations
-
-> Help keeping the project development going, by [contributing](http://laradock.io/contributing) or donating a little. 
-> Thanks in advance.
-
-Donate directly via [Paypal](https://paypal.me/mzmmzz)
-
-[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mzmmzz) 
-
-or show your support via [Beerpay](https://beerpay.io/laradock/laradock) 
-
-[![Beerpay](https://beerpay.io/laradock/laradock/badge.svg?style=flat)](https://beerpay.io/laradock/laradock)
-
-or become a backer on [Open Collective](https://opencollective.com/laradock#backer)
-
-<a href="https://opencollective.com/laradock#backers" target="_blank"><img src="https://opencollective.com/laradock/backers.svg?width=890"></a>
-
-
-## License
-
-[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE)

BIN
.github/home-page-images/join-us.png


BIN
.github/home-page-images/sponsor-1.png


+ 4 - 1
.gitignore

@@ -13,4 +13,7 @@
 /nginx/ssl/*.key
 /nginx/ssl/*.csr
 
-.DS_Store
+/.devcontainer/*
+!/.devcontainer/devcontainer.example.json
+
+.DS_Store

+ 8 - 5
.travis.yml

@@ -12,26 +12,29 @@ env:
     - PHP_VERSION=7.1 BUILD_SERVICE=workspace
     - PHP_VERSION=7.2 BUILD_SERVICE=workspace
     - PHP_VERSION=7.3 BUILD_SERVICE=workspace
+    - PHP_VERSION=7.4 BUILD_SERVICE=workspace
 
     - PHP_VERSION=5.6 BUILD_SERVICE=php-fpm
     - PHP_VERSION=7.0 BUILD_SERVICE=php-fpm
     - PHP_VERSION=7.1 BUILD_SERVICE=php-fpm
     - PHP_VERSION=7.2 BUILD_SERVICE=php-fpm
     - PHP_VERSION=7.3 BUILD_SERVICE=php-fpm
+    - PHP_VERSION=7.4 BUILD_SERVICE=php-fpm
 
     - PHP_VERSION=hhvm BUILD_SERVICE=hhvm
 
     # - PHP_VERSION=5.6 BUILD_SERVICE=php-worker
-    - PHP_VERSION=7.0 BUILD_SERVICE=php-worker
-    - PHP_VERSION=7.1 BUILD_SERVICE=php-worker
-    - PHP_VERSION=7.2 BUILD_SERVICE=php-worker
-    - PHP_VERSION=7.3 BUILD_SERVICE=php-worker
+    - PHP_VERSION=7.0 BUILD_SERVICE="php-worker laravel-horizon"
+    - PHP_VERSION=7.1 BUILD_SERVICE="php-worker laravel-horizon"
+    - PHP_VERSION=7.2 BUILD_SERVICE="php-worker laravel-horizon"
+    - PHP_VERSION=7.3 BUILD_SERVICE="php-worker laravel-horizon"
+    - PHP_VERSION=7.4 BUILD_SERVICE="php-worker laravel-horizon"
 
     - PHP_VERSION=NA BUILD_SERVICE=solr
     - 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"

+ 56 - 5
DOCUMENTATION/content/documentation/index.md

@@ -76,7 +76,7 @@ docker-compose exec mysql bash
 *Example: enter to MySQL prompt within MySQL container*
 
 ```bash
-docker-compose exec mysql mysql -u homestead -psecret
+docker-compose exec mysql mysql -udefault -psecret
 ```
 
 3 - To exit a container, type `exit`.
@@ -536,7 +536,7 @@ Note: Should add `--user=laradock` (example `docker-compose exec --user=laradock
 php artisan
 ```
 ```bash
-Composer update
+composer update
 ```
 ```bash
 phpunit
@@ -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.
 
@@ -1044,6 +1044,7 @@ _Note: You can customize the port on which beanstalkd console is listening by ch
 
 <br>
 <a name="Use-Confluence"></a>
+
 ## Use Confluence
 
 1 - Run the Confluence Container (`confluence`) with the `docker-compose up` command. Example:
@@ -1054,10 +1055,19 @@ 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/)
 
+
+##### Confluence usage with Nginx and SSL.
+
+1. Find an instance configuration file in `nginx/sites/confluence.conf.example` and replace sample domain with yours.
+
+2. Configure ssl keys to your domain.
+
+Keep in mind that Confluence is still accessible on 8090 anyway.
+
 <br>
 <a name="Use-ElasticSearch"></a>
 ## Use ElasticSearch
@@ -1575,7 +1585,7 @@ The default username and password for the root MySQL user are `root` and `root `
 
 1 - Enter the MySQL container: `docker-compose exec mysql bash`.
 
-2 - Enter mysql: `mysql -uroot -proot` for non root access use `mysql -uhomestead -psecret`.
+2 - Enter mysql: `mysql -uroot -proot` for non root access use `mysql -udefault -psecret`.
 
 3 - See all users: `SELECT User FROM mysql.user;`
 
@@ -1865,6 +1875,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>
@@ -1973,6 +2004,26 @@ YAML PHP extension allows you to easily parse and create YAML structured data. I
 4 - Re-build the container `docker-compose build php-fpm`<br>
 
 
+
+
+<br>
+<a name="Install-AST"></a>
+## Install AST PHP extension
+AST exposes the abstract syntax tree generated by PHP 7+. This extension is required by tools such as `Phan`, a static analyzer for PHP.
+
+1 - Open the `.env` file
+
+2 - Search for the `WORKSPACE_INSTALL_AST` argument under the Workspace Container
+
+3 - Set it to `true`
+
+4 - Re-build the container `docker-compose build workspace`
+
+**Note** If you need a specific version of AST then search for the `WORKSPACE_AST_VERSION` argument under the Workspace Container and set it to the desired version and continue step 4.
+
+
+
+
 <br>
 <a name="phpstorm-debugging"></a>
 ## PHPStorm Debugging Guide

+ 12 - 2
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.
@@ -345,7 +355,7 @@ You could choose to use either:
 1. Chrome Driver shipped with Laravel Dusk. (Default)
 2. Chrome Driver installed in `workspace` container. (Required tweak on DuskTestCase class)
 
-For Laravel 2.x, you need to update `DuskTestCase#prepare` method if you wish to go with option #2.
+For Laravel Dusk 2.x, you need to update `DuskTestCase#prepare` method if you wish to go with option #2.
 
 ```
 
@@ -365,7 +375,7 @@ abstract class DuskTestCase extends BaseTestCase
     }
 ```
 
-For Laravel 1.x, you need to add `DuskTestCase#buildChromeProcess` method if you wish to go with option #2.
+For Laravel Dusk 1.x, you need to add `DuskTestCase#buildChromeProcess` method if you wish to go with option #2.
 
 ```
 <?php

+ 211 - 95
DOCUMENTATION/content/introduction/index.md

@@ -4,44 +4,97 @@ type: index
 weight: 1
 ---
 
+<b>Laradock is a full PHP development environment based on Docker.</b>
 
-## Use Docker First - Then Learn About It Later
+Supporting a variety of common services, all pre-configured to provide a full PHP development environment.
 
-Laradock is a PHP development environment that runs on Docker.
-
-Supports a variety of useful Docker Images, pre-configured to provide a wonderful PHP development environment.
 
+<a name="features"></a>
+## Features
 
-![](https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/laradock-logo.jpg)
+- Easy switch between PHP versions: 7.4, 7.3, 7.2, 7.1, 5.6...
+- Choose your favorite database engine: MySQL, Postgres, MariaDB...
+- Run your own stack: Memcached, HHVM, RabbitMQ...
+- Each software runs on its own container: PHP-FPM, NGINX, PHP-CLI...
+- Easy to customize any container, with simple edit to the `Dockerfile`.
+- All Images extends from an official base Image. (Trusted base Images).
+- Pre-configured NGINX to host any code at your root directory.
+- Can use Laradock per project, or single Laradock for all projects.
+- Easy to install/remove software's in Containers using environment variables.
+- Clean and well structured Dockerfiles (`Dockerfile`).
+- Latest version of the Docker Compose file (`docker-compose`).
+- Everything is visible and editable.
+- Fast Images Builds.
 
+<br>
 
+---
+### Use Docker First - Then Learn About It Later</q>
+---
 
 
 <a name="sponsors"></a>
 ## Sponsors
 
-<p align="center">
-<!-- Golden Sponsors -->
-    <a href="https://edubirdie.com/?ref=Laradock" target="_blank">
-       <img src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/sponsor-1.png?raw=true" width="300px" alt="Writing essays service Edubirdie"/>
-    </a>
-</p>
-
+<a href="https://opencollective.com/laradock/sponsor/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/0/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/1/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/2/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/2/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/3/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/3/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/4/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/4/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/5/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/5/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/6/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/6/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/7/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/7/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/8/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/8/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/9/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/9/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/10/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/10/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/11/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/11/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/12/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/12/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/13/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/13/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/14/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/14/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/15/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/15/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/16/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/16/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/17/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/17/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/18/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/18/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/19/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/19/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/20/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/20/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/21/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/21/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/22/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/22/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/23/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/23/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/24/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/24/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/25/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/25/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/26/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/26/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/27/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/27/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/28/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/28/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/29/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/29/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/30/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/30/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/31/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/31/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/32/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/32/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/33/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/33/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/34/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/34/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/35/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/35/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/36/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/36/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/37/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/37/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/38/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/38/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/39/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/39/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/40/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/40/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/41/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/41/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/42/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/42/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/43/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/43/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/44/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/44/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/45/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/45/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/46/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/46/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/47/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/47/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/48/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/48/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/49/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/49/avatar.svg?requireActive=false"></a>
+
+Support Laradock with your [organization](https://opencollective.com/laradock/contribute/).
+<br>
+Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page.
 <br>
+For more info contact <a href = "mailto: support@laradock.io">support@laradock.io</a>.
 
-<!-- OpenCollective Sponsors -->
-<a href="https://opencollective.com/laradock/sponsor/0/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/0/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/1/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/1/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/2/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/2/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/3/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/3/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/4/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/4/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/5/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/5/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/6/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/6/avatar.svg"></a>
-<a href="https://opencollective.com/laradock/sponsor/7/website" target="_blank"><img src="https://opencollective.com/laradock/sponsor/7/avatar.svg"></a>
-
-For basic sponsorships go to [Open Collective](https://opencollective.com/laradock#sponsor), for golden sponsorships contact <a href = "mailto: support@laradock.io">support@laradock.io</a>.
 <br>
-*Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page.* 
+
 
 ## Quick Overview
 
@@ -82,25 +135,6 @@ That's it! enjoy :)
 
 
 
-<a name="features"></a>
-## Features
-
-- Easy switch between PHP versions: 7.3, 7.2, 7.1, 5.6...
-- Choose your favorite database engine: MySQL, Postgres, MariaDB...
-- Run your own stack: Memcached, HHVM, RabbitMQ...
-- Each software runs on its own container: PHP-FPM, NGINX, PHP-CLI...
-- Easy to customize any container, with simple edit to the `Dockerfile`.
-- All Images extends from an official base Image. (Trusted base Images).
-- Pre-configured NGINX to host any code at your root directory.
-- Can use Laradock per project, or single Laradock for all projects.
-- Easy to install/remove software's in Containers using environment variables.
-- Clean and well structured Dockerfiles (`Dockerfile`).
-- Latest version of the Docker Compose file (`docker-compose`).
-- Everything is visible and editable.
-- Fast Images Builds.
-
-
-
 <a name="Supported-Containers"></a>
 ## Supported Software (Docker Images)
 
@@ -159,6 +193,7 @@ That's it! enjoy :)
     - Eclipse Mosquitto
     - PHP Worker
     - Laravel Horizon
+    - Gearman
 
 - **Mail Servers:**
     - Mailu 
@@ -233,49 +268,7 @@ You can choose, which tools to install in your workspace container and other con
 
 *If you can't find your Software in the list, build it yourself and submit it. Contributions are welcomed :)*
 
-
-
-<a name="what-is-docker"></a>
-## What is Docker?
-
-[Docker](https://www.docker.com) is an open platform for developing, shipping, and running applications.
-Docker enables you to separate your applications from your infrastructure so you can deliver software quickly.
-With Docker, you can manage your infrastructure in the same ways you manage your applications.
-By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.
-
-
-
-
-
-<a name="why-docker-not-vagrant"></a>
-## Why Docker not Vagrant!?
-
-[Vagrant](https://www.vagrantup.com) creates Virtual Machines in minutes while Docker creates Virtual Containers in seconds.
-
-Instead of providing a full Virtual Machines, like you get with Vagrant, Docker provides you **lightweight** Virtual Containers, that share the same kernel and allow to safely execute independent processes.
-
-In addition to the speed, Docker gives tons of features that cannot be achieved with Vagrant.
-
-Most importantly Docker can run on Development and on Production (same environment everywhere). While Vagrant is designed for Development only, (so you have to re-provision your server on Production every time).
-
-
-
-
-
-
-<a name="Demo"></a>
-## Demo Video
-
-What's better than a **Demo Video**:
-
-- Laradock [v4.*](https://www.youtube.com/watch?v=TQii1jDa96Y)
-- Laradock [v2.*](https://www.youtube.com/watch?v=-DamFMczwDA)
-- Laradock [v0.3](https://www.youtube.com/watch?v=jGkyO6Is_aI)
-- Laradock [v0.1](https://www.youtube.com/watch?v=3YQsHe6oF80)
-
-
-
-
+---
 
 
 
@@ -286,24 +279,147 @@ You are welcome to join our chat room on Gitter.
 
 [![Gitter](https://badges.gitter.im/Laradock/laradock.svg)](https://gitter.im/Laradock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
 
+---
 
+Laradock exists thanks to all the people who contribute.
+
+## Project Maintainers
+
+<table>
+  <tbody>
+    <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/mahmoudz.png?s=150">
+            <br>
+            <strong>Mahmoud Zalt</strong>
+            <br>
+            <a href="https://github.com/Mahmoudz">@mahmoudz</a>
+        </td>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/appleboy.png?s=150">
+            <br>
+            <strong>Bo-Yi Wu</strong>
+            <br>
+            <a href="https://github.com/Mahmoudz">@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>
+        </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>
+        </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>
+        </td>
+     </tr>
+     <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/thorerik.png?s=150">
+            <br>
+            <strong>Thor Erik</strong>
+            <br>
+            <a href="https://github.com/Mahmoudz">@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>
+        </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>
+        </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>
+        </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>
+        </td>
+     </tr>
+     <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/vwchu.png?s=150">
+            <br>
+            <strong>Vince Chu</strong>
+            <br>
+            <a href="https://github.com/Mahmoudz">@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>
+        </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>
+        </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>
+        </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">
+            <br>
+            <strong>< Join Us ></strong>
+            <br>
+            <a href="https://github.com/laradock">@laradock</a>
+        </td>
+     </tr>
+  </tbody>
+</table>
+
+## Code Contributors
+
+<a href="https://github.com/undefined/undefined/graphs/contributors"><img src="https://opencollective.com/laradock/contributors.svg?width=890&button=false" /></a>
 
-
+---
 
 <a name="Donations"></a>
-## Donations
+## Financial Contributors
 
-> Help keeping the project development going, by [contributing](http://laradock.io/contributing) or donating a little. 
-> Thanks in advance.
+Contribute and help us sustain the project.
 
-Donate directly via [Paypal](https://paypal.me/mzmmzz)
+<b>Option 1:</b> Donate directly to [Paypal](https://paypal.me/mzmmzz).
 
-[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mzmmzz) 
+[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mzmmzz)
 
-or show your support via [Beerpay](https://beerpay.io/laradock/laradock) 
+<b>Option 2:</b> Support us via [BeerPay](https://beerpay.io/laradock/laradock).
 
 [![Beerpay](https://beerpay.io/laradock/laradock/badge.svg?style=flat)](https://beerpay.io/laradock/laradock)
 
-or become a backer on [Open Collective](https://opencollective.com/laradock#backer)
+<b>Option 3:</b> Become a backer on [Open Collective](https://opencollective.com/laradock/contribute).
 
-<a href="https://opencollective.com/laradock#backers" target="_blank"><img src="https://opencollective.com/laradock/backers.svg?width=890"></a>
+<a href="https://opencollective.com/laradock"><img src="https://opencollective.com/laradock/backer.svg?width=890"></a>

+ 17 - 0
DOCUMENTATION/static/custom-style.css

@@ -11,3 +11,20 @@
     height: 70px;
     padding: 25px;
 }
+.palette-primary-deep-purple .article h1{
+    color: #7e57c2;
+    font-size: 35px;
+}
+.palette-primary-deep-purple .article h2{
+
+    color: #ce2046;
+    font-size: 25px;
+}
+.palette-primary-deep-purple .article h3{
+    color: #851d54;
+    font-size: 18px;
+}
+.palette-primary-deep-purple .article code{
+    color: #851d54;
+    background: #eeeeeea8;
+}

+ 27 - 21
DOCUMENTATION/themes/hugo-material-docs/layouts/index.html

@@ -1,8 +1,8 @@
 {{ partial "head" . }}
 
 {{ if (eq (trim .Site.Params.provider " " | lower) "github") | and (isset .Site.Params "repo_url") }}
-	{{ $repo_id := replace .Site.Params.repo_url "https://github.com/" ""}}
-	{{ .Scratch.Set "repo_id" $repo_id }}
+    {{ $repo_id := replace .Site.Params.repo_url "https://github.com/" ""}}
+    {{ .Scratch.Set "repo_id" $repo_id }}
 {{ end }}
 
 <div class="backdrop">
@@ -25,26 +25,32 @@
 	<article class="article">
 		<div class="wrapper">
 
-            <!-- Wrapper arround google ads for seedanddew -->
-            <div class='snd-ad'>
-                <!-- ------------------------------------------------------------------------- -->
-                <!-- Google Ads -->
-                <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
-                <!-- Laradock Horizontal -->
-                <ins class="adsbygoogle"
-                     style="display:inline-block;width:890px;height:100px"
-                     data-ad-client="ca-pub-9826129398689742"
-                     data-ad-slot="2340256024"></ins>
-                <script>
-                    (adsbygoogle = window.adsbygoogle || []).push({});
-                </script>
-                <!-- ------------------------------------------------------------------------- -->
-            </div>
+			<!-- Wrapper arround google ads for seedanddew -->
+			<div class='snd-ad'>
+				<!-- ------------------------------------------------------------------------- -->
+				<!-- Google Ads -->
+				<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+				<!-- Laradock Horizontal -->
+				<ins class="adsbygoogle"
+					 style="display:inline-block;width:890px;height:100px"
+					 data-ad-client="ca-pub-9826129398689742"
+					 data-ad-slot="2340256024"></ins>
+				<script>
+					(adsbygoogle = window.adsbygoogle || []).push({});
+				</script>
+				<!-- ------------------------------------------------------------------------- -->
+			</div>
+
+			<br><br><br>
+			<img src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/laradock-logo.jpg" alt="laradock logo">
 
 			{{ range where .Site.Pages "Type" "index" }}
-				<h1>{{ .Title }} {{ if .IsDraft }} (Draft){{ end }}</h1>
+			<br><br><br><br><br><br>
+			<hr>
+			<br>
+			<h1>{{ .Title }} {{ if .IsDraft }} (Draft){{ end }}</h1>
 
-				{{ .Content }}
+			{{ .Content }}
 			{{ end }}
 
 			<aside class="copyright" role="note">
@@ -55,8 +61,8 @@
 				<a href="https://www.gohugo.io" target="_blank">Hugo</a>
 				using the
 				<a href="http://github.com/digitalcraftsman/hugo-material-docs" target="_blank">Material</a> theme,
-                by
-                <a href="https://zalt.me">Mahmoud Zalt</a>.
+				by
+				<a href="https://zalt.me">Mahmoud Zalt</a>.
 			</aside>
 
 			<footer class="footer">

+ 0 - 0
.github/README-zh.md → README-zh.md


+ 238 - 0
README.md

@@ -0,0 +1,238 @@
+<p align="center">
+    <img src="/.github/home-page-images/laradock-logo.jpg?raw=true" alt="Laradock Logo"/>
+</p>
+
+---
+
+<p align="center"><b>Full PHP development environment based on Docker.</b></p>
+
+<p align="center">Supporting a variety of common services, all pre-configured to provide a full PHP development environment.</p>
+
+<p align="center">
+   <a href="http://laradock.io/contributing"><img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat" alt="contributions welcome"></a>
+   <a href="https://github.com/laradock/laradock/network"><img src="https://img.shields.io/github/forks/laradock/laradock.svg" alt="GitHub forks"></a>
+   <a href="https://github.com/laradock/laradock/issues"><img src="https://img.shields.io/github/issues/laradock/laradock.svg" alt="GitHub issues"></a>
+   <a href="https://github.com/laradock/laradock/stargazers"><a href="#backers" alt="sponsors on Open Collective"><img src="https://opencollective.com/laradock/backers/badge.svg" /></a> <a href="#sponsors" alt="Sponsors on Open Collective"><img src="https://opencollective.com/laradock/sponsors/badge.svg" /></a> <img src="https://img.shields.io/github/stars/laradock/laradock.svg" alt="GitHub stars"></a>
+   <a href="https://travis-ci.org/laradock/laradock"><img src="https://travis-ci.org/laradock/laradock.svg?branch=master" alt="Build status"></a>
+   <a href="https://raw.githubusercontent.com/laradock/laradock/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="GitHub license"></a>
+</p>
+
+<p align="center">
+    <a href="http://zalt.me"><img src="http://forthebadge.com/images/badges/built-by-developers.svg" alt="forthebadge" width="240"></a>
+</p>
+
+
+
+<h4 align="center" style="color:#7d58c2">Use Docker First - Then Learn About It Later</h4>
+
+<p align="center">
+	<a href="http://laradock.io">
+	   <img src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/documentation-button.png" width="300px" alt="Laradock Documentation"/>
+	</a>
+</p>
+
+---
+
+## Awesome People
+Laradock exists thanks to all the people who contribute.
+
+### Project Maintainers
+
+<table>
+  <tbody>
+    <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/mahmoudz.png?s=150">
+            <br>
+            <strong>Mahmoud Zalt</strong>
+            <br>
+            <a href="https://github.com/Mahmoudz">@mahmoudz</a>
+        </td>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/appleboy.png?s=150">
+            <br>
+            <strong>Bo-Yi Wu</strong>
+            <br>
+            <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/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/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/zeroc0d3">@zeroc0d3</a>
+        </td>
+     </tr>
+     <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/thorerik.png?s=150">
+            <br>
+            <strong>Thor Erik</strong>
+            <br>
+            <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/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/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/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/urukalo">@urukalo</a>
+        </td>
+     </tr>
+     <tr>
+        <td align="center" valign="top">
+            <img width="125" height="125" src="https://github.com/vwchu.png?s=150">
+            <br>
+            <strong>Vince Chu</strong>
+            <br>
+            <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/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/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/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">
+            <br>
+            <strong>< Join Us ></strong>
+            <br>
+            <a href="https://github.com/laradock">@laradock</a>
+        </td>
+     </tr>
+  </tbody>
+</table>
+
+### Code Contributors
+
+<a href="https://github.com/laradock/laradock/graphs/contributors"><img src="https://opencollective.com/laradock/contributors.svg?width=890&button=false" /></a>
+
+### Financial Contributors
+
+Contribute and help us sustain the project.
+
+<b>Option 1:</b> Donate directly to [Paypal](https://paypal.me/mzmmzz).
+
+[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mzmmzz)
+
+<b>Option 2:</b> Support us via [BeerPay](https://beerpay.io/laradock/laradock).
+
+[![Beerpay](https://beerpay.io/laradock/laradock/badge.svg?style=flat)](https://beerpay.io/laradock/laradock)
+
+<b>Option 3:</b> Become a backer on [Open Collective](https://opencollective.com/laradock/contribute).
+
+<a href="https://opencollective.com/laradock"><img src="https://opencollective.com/laradock/backer.svg?width=890"></a>
+
+## Sponsors
+
+<a href="https://opencollective.com/laradock/sponsor/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/0/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/1/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/2/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/2/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/3/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/3/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/4/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/4/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/5/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/5/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/6/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/6/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/7/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/7/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/8/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/8/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/9/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/9/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/10/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/10/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/11/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/11/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/12/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/12/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/13/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/13/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/14/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/14/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/15/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/15/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/16/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/16/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/17/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/17/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/18/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/18/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/19/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/19/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/20/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/20/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/21/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/21/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/22/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/22/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/23/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/23/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/24/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/24/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/25/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/25/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/26/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/26/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/27/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/27/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/28/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/28/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/29/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/29/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/30/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/30/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/31/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/31/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/32/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/32/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/33/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/33/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/34/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/34/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/35/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/35/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/36/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/36/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/37/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/37/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/38/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/38/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/39/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/39/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/40/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/40/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/41/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/41/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/42/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/42/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/43/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/43/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/44/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/44/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/45/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/45/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/46/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/46/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/47/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/47/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/48/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/48/avatar.svg?requireActive=false"></a>
+<a href="https://opencollective.com/laradock/sponsor/49/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/49/avatar.svg?requireActive=false"></a>
+
+Support Laradock with your [organization](https://opencollective.com/laradock/contribute/).
+<br>
+Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page.
+<br>
+For more info contact <a href = "mailto: support@laradock.io">support@laradock.io</a>.
+
+## License
+
+[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE)

+ 67 - 3
docker-compose.yml

@@ -47,6 +47,10 @@ volumes:
     driver: ${VOLUMES_DRIVER}
   cassandra:
     driver: ${VOLUMES_DRIVER}
+  graylog:
+    driver: ${VOLUMES_DRIVER}
+  dind:
+    driver: ${VOLUMES_DRIVER}
 
 services:
 
@@ -55,6 +59,7 @@ services:
       build:
         context: ./workspace
         args:
+          - CHANGE_SOURCE=${CHANGE_SOURCE}
           - LARADOCK_PHP_VERSION=${PHP_VERSION}
           - LARADOCK_PHALCON_VERSION=${PHALCON_VERSION}
           - INSTALL_SUBVERSION=${WORKSPACE_INSTALL_SUBVERSION}
@@ -70,8 +75,10 @@ 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}
+          - NVM_NODEJS_ORG_MIRROR=${WORKSPACE_NVM_NODEJS_ORG_MIRROR}
           - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
           - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY}
           - INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
@@ -109,23 +116,31 @@ services:
           - INSTALL_MYSQL_CLIENT=${WORKSPACE_INSTALL_MYSQL_CLIENT}
           - INSTALL_PING=${WORKSPACE_INSTALL_PING}
           - INSTALL_SSHPASS=${WORKSPACE_INSTALL_SSHPASS}
+          - INSTALL_AST=${WORKSPACE_INSTALL_AST}
+          - INSTALL_YAML=${WORKSPACE_INSTALL_YAML}
+          - INSTALL_MAILPARSE=${WORKSPACE_INSTALL_MAILPARSE}
           - PUID=${WORKSPACE_PUID}
           - PGID=${WORKSPACE_PGID}
           - CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION}
           - NODE_VERSION=${WORKSPACE_NODE_VERSION}
           - YARN_VERSION=${WORKSPACE_YARN_VERSION}
           - DRUSH_VERSION=${WORKSPACE_DRUSH_VERSION}
+          - AST_VERSION=${WORKSPACE_AST_VERSION}
           - TZ=${WORKSPACE_TIMEZONE}
           - 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
           - https_proxy
           - no_proxy
+          - CHANGE_SOURCE=${CHANGE_SOURCE}
+          - UBUNTU_SOURCE=${UBUNTU_SOURCE}
       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 +160,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 +173,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}
@@ -181,15 +198,21 @@ services:
           - INSTALL_FAKETIME=${PHP_FPM_INSTALL_FAKETIME}
           - INSTALL_IONCUBE=${PHP_FPM_INSTALL_IONCUBE}
           - INSTALL_APCU=${PHP_FPM_INSTALL_APCU}
+          - INSTALL_CACHETOOL=${PHP_FPM_INSTALL_CACHETOOL}
           - INSTALL_YAML=${PHP_FPM_INSTALL_YAML}
           - INSTALL_RDKAFKA=${PHP_FPM_INSTALL_RDKAFKA}
+          - INSTALL_GETTEXT=${PHP_FPM_INSTALL_GETTEXT}
           - INSTALL_ADDITIONAL_LOCALES=${PHP_FPM_INSTALL_ADDITIONAL_LOCALES}
           - 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}
+          - PUID=${PHP_FPM_PUID}
+          - PGID=${PHP_FPM_PGID}
           - http_proxy
           - https_proxy
           - no_proxy
@@ -216,6 +239,7 @@ services:
       build:
         context: ./php-worker
         args:
+          - CHANGE_SOURCE=${CHANGE_SOURCE}
           - PHP_VERSION=${PHP_VERSION}
           - PHALCON_VERSION=${PHALCON_VERSION}
           - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL}
@@ -226,11 +250,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:
@@ -247,12 +273,15 @@ services:
       build:
         context: ./laravel-horizon
         args:
+          - CHANGE_SOURCE=${CHANGE_SOURCE}
           - PHP_VERSION=${PHP_VERSION}
           - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
           - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
           - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
           - INSTALL_SOCKETS=${LARAVEL_HORIZON_INSTALL_SOCKETS}
           - INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA}
+          - INSTALL_PHPREDIS=${LARAVEL_HORIZON_INSTALL_PHPREDIS}
+          - INSTALL_MONGO=${LARAVEL_HORIZON_INSTALL_MONGO}
       volumes:
         - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
         - ./laravel-horizon/supervisord.d:/etc/supervisord.d
@@ -268,9 +297,9 @@ services:
       build:
         context: ./nginx
         args:
+          - CHANGE_SOURCE=${CHANGE_SOURCE}
           - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
           - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
-          - CHANGE_SOURCE=${CHANGE_SOURCE}
           - http_proxy
           - https_proxy
           - no_proxy
@@ -489,6 +518,7 @@ services:
         - "${MONGODB_PORT}:27017"
       volumes:
         - ${DATA_PATH_HOST}/mongo:/data/db
+        - ${DATA_PATH_HOST}/mongo_config:/data/configdb
       networks:
         - backend
 
@@ -623,6 +653,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
@@ -889,9 +952,9 @@ services:
           - ${GRAYLOG_GELF_TCP_PORT}:12201
           # GELF UDP
           - ${GRAYLOG_GELF_UDP_PORT}:12201/udp
-        user: root
+        user: graylog
         volumes:
-          - ./graylog/config:/usr/share/graylog/data/config
+          - ${DATA_PATH_HOST}/graylog:/usr/share/graylog/data
         networks:
           - backend
 
@@ -1171,6 +1234,7 @@ services:
       privileged: true
       volumes:
         - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
+        - ${DATA_PATH_HOST}/dind:/var/lib/docker
       expose:
         - 2375
       networks:

+ 66 - 1
env-example

@@ -37,7 +37,8 @@ COMPOSE_PROJECT_NAME=laradock
 
 ### PHP Version ###########################################
 
-# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 7.3 - 7.2 - 7.1 - 7.0 - 5.6
+# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM).
+# Accepted values: 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6
 PHP_VERSION=7.3
 
 ### Phalcon Version ###########################################
@@ -69,6 +70,8 @@ COMPOSE_CONVERT_WINDOWS_PATHS=1
 
 # If you need to change the sources (i.e. to China), set CHANGE_SOURCE to true
 CHANGE_SOURCE=false
+# Set CHANGE_SOURCE and UBUNTU_SOURCE option if you want to change the Ubuntu system sources.list file.
+UBUNTU_SOURCE=aliyun
 
 ### Docker Sync ###########################################
 
@@ -84,6 +87,7 @@ DOCKER_SYNC_STRATEGY=native_osx
 WORKSPACE_COMPOSER_GLOBAL_INSTALL=true
 WORKSPACE_COMPOSER_AUTH=false
 WORKSPACE_COMPOSER_REPO_PACKAGIST=
+WORKSPACE_NVM_NODEJS_ORG_MIRROR=
 WORKSPACE_INSTALL_NODE=true
 WORKSPACE_NODE_VERSION=node
 WORKSPACE_NPM_REGISTRY=
@@ -107,6 +111,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 +128,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 +144,8 @@ WORKSPACE_INSTALL_PING=false
 WORKSPACE_INSTALL_SSHPASS=false
 WORKSPACE_INSTALL_INOTIFY=false
 WORKSPACE_INSTALL_FSWATCH=false
+WORKSPACE_INSTALL_YAML=false
+WORKSPACE_INSTALL_MAILPARSE=false
 WORKSPACE_PUID=1000
 WORKSPACE_PGID=1000
 WORKSPACE_CHROME_DRIVER_VERSION=2.42
@@ -145,6 +153,8 @@ WORKSPACE_TIMEZONE=UTC
 WORKSPACE_SSH_PORT=2222
 WORKSPACE_INSTALL_FFMPEG=false
 WORKSPACE_INSTALL_GNU_PARALLEL=false
+WORKSPACE_INSTALL_AST=true
+WORKSPACE_AST_VERSION=1.0.3
 
 ### PHP_FPM ###############################################
 
@@ -163,6 +173,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
@@ -183,16 +194,22 @@ PHP_FPM_INSTALL_CALENDAR=false
 PHP_FPM_INSTALL_FAKETIME=false
 PHP_FPM_INSTALL_IONCUBE=false
 PHP_FPM_INSTALL_RDKAFKA=false
+PHP_FPM_INSTALL_GETTEXT=false
 PHP_FPM_FAKETIME=-0
 PHP_FPM_INSTALL_APCU=false
+PHP_FPM_INSTALL_CACHETOOL=false
 PHP_FPM_INSTALL_YAML=false
 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"
 
+PHP_FPM_PUID=1000
+PHP_FPM_PGID=1000
+
 ### PHP_WORKER ############################################
 
 PHP_WORKER_INSTALL_PGSQL=false
@@ -208,6 +225,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
@@ -225,6 +244,8 @@ NGINX_SSL_PATH=./nginx/ssl/
 ### LARAVEL_HORIZON ################################################
 
 LARAVEL_HORIZON_INSTALL_SOCKETS=false
+LARAVEL_HORIZON_INSTALL_PHPREDIS=true
+LARAVEL_HORIZON_INSTALL_MONGO=false
 
 ### APACHE ################################################
 
@@ -776,3 +797,47 @@ 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
kibana/Dockerfile

@@ -1,3 +1,3 @@
-FROM docker.elastic.co/kibana/kibana:6.6.0
+FROM docker.elastic.co/kibana/kibana:7.1.1
 
 EXPOSE 5601

+ 24 - 1
laravel-horizon/Dockerfile

@@ -9,6 +9,14 @@ FROM php:${PHP_VERSION}-alpine
 
 LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
 
+# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env.
+
+ARG CHANGE_SOURCE=false
+RUN if [ ${CHANGE_SOURCE} = true ]; then \
+    # Change application source from dl-cdn.alpinelinux.org to aliyun source
+    sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \
+;fi
+
 RUN apk --update add wget \
   curl \
   git \
@@ -51,6 +59,15 @@ RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
   apk --update add cassandra-cpp-driver \
   ;fi
 
+# Install PhpRedis package:
+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
+
 WORKDIR /usr/src
 RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
   git clone https://github.com/datastax/php-driver.git \
@@ -65,6 +82,12 @@ RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
   && docker-php-ext-enable cassandra \
 ;fi
 
+# Install MongoDB drivers:
+ARG INSTALL_MONGO=false
+RUN if [ ${INSTALL_MONGO} = true ]; then \
+  pecl install mongodb \
+  && docker-php-ext-enable mongodb \
+  ;fi
 
 
 ###########################################################################
@@ -78,7 +101,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

+ 43 - 0
nginx/sites/confluence.conf.example

@@ -0,0 +1,43 @@
+server {
+    listen 80;
+    listen [::]:80;
+    server_name www.confluence-domain.com;
+    rewrite ^(.*) https://confluence-domain.com$1/ permanent;
+}
+
+server {
+    listen 80;
+    listen [::]:80;
+    server_name confluence-domain.com;
+    rewrite ^(.*) https://confluence-domain.com/ permanent;
+}
+
+server {
+    listen 443 ssl;
+    listen [::]:443 ssl;
+    ssl_certificate /etc/nginx/ssl/confluence-domain.com.crt;
+    ssl_certificate_key /etc/nginx/ssl/confluence-domain.com.key;
+
+    server_name confluence-domain.com;
+
+    location / {
+            client_max_body_size 100m;
+            proxy_set_header X-Forwarded-Host $host;
+            proxy_set_header X-Forwarded-Server $host;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_pass http://confluence-domain.com:8090/;
+    }
+
+    location /synchrony {
+        proxy_set_header X-Forwarded-Host $host;
+        proxy_set_header X-Forwarded-Server $host;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_pass http://confluence-domain.com:8090/synchrony-proxy;
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "Upgrade";
+    }
+
+    error_log /var/log/nginx/bookchangerru_error.log;
+    access_log /var/log/nginx/bookchangerru_access.log;
+}

+ 99 - 21
php-fpm/Dockerfile

@@ -14,7 +14,7 @@
 
 ARG LARADOCK_PHP_VERSION
 
-FROM laradock/php-fpm:2.5-${LARADOCK_PHP_VERSION}
+FROM laradock/php-fpm:2.6.1-${LARADOCK_PHP_VERSION}
 
 LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
 
@@ -23,6 +23,16 @@ ARG LARADOCK_PHP_VERSION
 # Set Environment Variables
 ENV DEBIAN_FRONTEND noninteractive
 
+# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env.
+
+ARG CHANGE_SOURCE=false
+RUN if [ ${CHANGE_SOURCE} = true ]; then \
+    # Change application source from deb.debian.org to aliyun source
+    sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \
+    sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \
+    sed -i 's/security-cdn.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list \
+;fi
+
 # always run apt update when start and after add new source list, then clean up at end.
 RUN set -xe; \
     apt-get update -yqq && \
@@ -196,9 +206,13 @@ 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 \
+    if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
+      pecl install -o -f redis-4.3.0; \
+    else \
+      pecl install -o -f redis; \
+    fi \
+    && rm -rf /tmp/pear \
+    && docker-php-ext-enable redis \
 ;fi
 
 ###########################################################################
@@ -260,9 +274,9 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \
 ARG INSTALL_XHPROF=false
 
 RUN if [ ${INSTALL_XHPROF} = true ]; then \
-    # Install the php xhprof extension 
+    # Install the php xhprof extension
     if [ $(php -r "echo PHP_MAJOR_VERSION;") = 7 ]; then \
-      curl -L -o /tmp/xhprof.tar.gz "https://github.com/tideways/php-xhprof-extension/archive/v4.1.7.tar.gz"; \
+      curl -L -o /tmp/xhprof.tar.gz "https://github.com/tideways/php-xhprof-extension/archive/v5.0.1.tar.gz"; \
     else \ 
       curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \
     fi \
@@ -309,6 +323,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
 ###########################################################################
@@ -354,21 +392,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
 
@@ -659,6 +686,17 @@ RUN if [ ${INSTALL_RDKAFKA} = true ]; then \
     docker-php-ext-enable rdkafka \
 ;fi
 
+###########################################################################
+# GETTEXT:
+###########################################################################
+
+ARG INSTALL_GETTEXT=false
+
+RUN if [ ${INSTALL_GETTEXT} = true ]; then \
+    apt-get install -y zlib1g-dev libicu-dev g++ libpq-dev libssl-dev gettext && \
+    docker-php-ext-install gettext \
+;fi
+
 ###########################################################################
 # Install additional locales:
 ###########################################################################
@@ -685,7 +723,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
 
 ###########################################################################
@@ -727,6 +769,35 @@ 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
+
+###########################################################################
+# CacheTool:
+###########################################################################
+
+ARG INSTALL_CACHETOOL=false
+
+RUN if [ ${INSTALL_CACHETOOL} = true ]; then \
+    if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") -ge 1 ]; then \
+            curl -sO http://gordalina.github.io/cachetool/downloads/cachetool.phar; \
+    else \
+        curl http://gordalina.github.io/cachetool/downloads/cachetool-3.2.1.phar -o cachetool.phar; \
+    fi && \
+    chmod +x cachetool.phar && \
+    mv cachetool.phar /usr/local/bin/cachetool \
+;fi
+
 ###########################################################################
 # Check PHP version:
 ###########################################################################
@@ -749,7 +820,14 @@ 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
+# Configure non-root user.
+ARG PUID=1000
+ENV PUID ${PUID}
+ARG PGID=1000
+ENV PGID ${PGID}
+
+RUN groupmod -o -g ${PGID} www-data && \
+    usermod -o -u ${PUID} -g www-data www-data
 
 # Adding the faketime library to the preload file needs to be done last
 # otherwise it will preload it for all commands that follow in this file

+ 1 - 1
php-fpm/xhprof.ini

@@ -1,6 +1,6 @@
 [xhprof]
 ; extension=xhprof.so
-extension=tideways.so
+extension=tideways_xhprof.so
 xhprof.output_dir=/var/www/xhprof
 ; no need to autoload, control in the program
 tideways.auto_prepend_library=0

+ 32 - 5
php-worker/Dockerfile

@@ -9,6 +9,14 @@ FROM php:${PHP_VERSION}-alpine
 
 LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
 
+# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env.
+
+ARG CHANGE_SOURCE=false
+RUN if [ ${CHANGE_SOURCE} = true ]; then \
+    # Change application source from dl-cdn.alpinelinux.org to aliyun source
+    sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories \
+;fi
+
 RUN apk --update add wget \
   curl \
   git \
@@ -66,7 +74,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 +97,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 +149,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 +228,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/

+ 5 - 0
phpmyadmin/Dockerfile

@@ -5,5 +5,10 @@ LABEL maintainer="Bo-Yi Wu <appleboy.tw@gmail.com>"
 # Add volume for sessions to allow session persistence
 VOLUME /sessions
 
+RUN echo '' >> /usr/local/etc/php/conf.d/php-phpmyadmin.ini \
+ && echo '[PHP]' >> /usr/local/etc/php/conf.d/php-phpmyadmin.ini \
+ && echo 'post_max_size = 2G' >> /usr/local/etc/php/conf.d/php-phpmyadmin.ini \
+ && echo 'upload_max_filesize = 2G' >> /usr/local/etc/php/conf.d/php-phpmyadmin.ini
+
 # We expose phpMyAdmin on port 80
 EXPOSE 80

+ 2 - 2
postgres/docker-entrypoint-initdb.d/init_confluence_db.sh

@@ -33,7 +33,7 @@
 # EOSQL
 # 
 ### default database and user for confluence ##############################################
-if [ "$POSTGRES_CONFLUENCE_INIT" == 'true' ]; then
+if [ "$CONFLUENCE_POSTGRES_INIT" == 'true' ]; then
 	psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
 		CREATE USER $POSTGRES_CONFLUENCE_USER WITH PASSWORD '$POSTGRES_CONFLUENCE_PASSWORD';
 		CREATE DATABASE $POSTGRES_CONFLUENCE_DB;
@@ -41,4 +41,4 @@ if [ "$POSTGRES_CONFLUENCE_INIT" == 'true' ]; then
 		ALTER ROLE $POSTGRES_CONFLUENCE_USER CREATEROLE SUPERUSER;
 	EOSQL
 	echo
-fi
+fi

+ 91 - 8
workspace/Dockerfile

@@ -14,7 +14,7 @@
 
 ARG LARADOCK_PHP_VERSION
 
-FROM laradock/workspace:2.5-${LARADOCK_PHP_VERSION}
+FROM laradock/workspace:2.6.1-${LARADOCK_PHP_VERSION}
 
 LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
 
@@ -23,6 +23,16 @@ ARG LARADOCK_PHP_VERSION
 # Set Environment Variables
 ENV DEBIAN_FRONTEND noninteractive
 
+# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env.
+
+ARG CHANGE_SOURCE=false
+RUN if [ ${CHANGE_SOURCE} = true ]; then \
+    # Change application source from deb.debian.org to aliyun source
+    sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \
+    sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \
+    sed -i 's/security-cdn.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list \
+;fi
+
 # Start as root
 USER root
 
@@ -36,6 +46,15 @@ ENV PUID ${PUID}
 ARG PGID=1000
 ENV PGID ${PGID}
 
+ARG CHANGE_SOURCE=false
+ARG UBUNTU_SOURCE
+COPY ./sources.sh /tmp/sources.sh
+
+RUN if [ ${CHANGE_SOURCE} = true ]; then \
+    /bin/sh -c /tmp/sources.sh && \
+    rm -rf /tmp/sources.sh \
+;fi
+
 # always run apt update when start and after add new source list, then clean up at end.
 RUN set -xe; \
     apt-get update -yqq && \
@@ -436,6 +455,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
 ###########################################################################
@@ -508,6 +539,21 @@ RUN if [ ${INSTALL_INOTIFY} = true ]; then \
     ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-inotify.ini \
 ;fi
 
+###########################################################################
+# AST EXTENSION
+###########################################################################
+
+ARG INSTALL_AST=false
+ARG AST_VERSION=1.0.3
+ENV AST_VERSION ${AST_VERSION}
+
+RUN if [ ${INSTALL_AST} = true ]; then \
+    # Install AST extension
+    printf "\n" | pecl -q install ast-${AST_VERSION} && \
+    echo "extension=ast.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/ast.ini && \
+    phpenmod -v ${LARADOCK_PHP_VERSION} -s cli ast \
+;fi
+
 ###########################################################################
 # fswatch
 ###########################################################################
@@ -568,6 +614,7 @@ ARG INSTALL_NPM_ANGULAR_CLI=false
 ARG NPM_REGISTRY
 ENV NPM_REGISTRY ${NPM_REGISTRY}
 ENV NVM_DIR /home/laradock/.nvm
+ENV NVM_NODEJS_ORG_MIRROR=${NVM_NODEJS_ORG_MIRROR}
 
 RUN if [ ${INSTALL_NODE} = true ]; then \
     # Install nvm (A Node Version Manager)
@@ -765,13 +812,6 @@ RUN if [ ${COMPOSER_REPO_PACKAGIST} ]; then \
     composer config -g repo.packagist composer ${COMPOSER_REPO_PACKAGIST} \
 ;fi
 
-ARG INSTALL_LARAVEL_INSTALLER=false
-
-RUN if [ ${INSTALL_LARAVEL_INSTALLER} = true ]; then \
-    # Install the Laravel Installer
-	composer global require "laravel/installer" \
-;fi
-
 ###########################################################################
 # Deployer:
 ###########################################################################
@@ -945,6 +985,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
 
 ###########################################################################
@@ -1075,6 +1129,25 @@ RUN if [ ${INSTALL_SSHPASS} = true ]; then \
     apt-get -y install sshpass \
 ;fi
 
+###########################################################################
+# YAML: extension for PHP-CLI
+###########################################################################
+
+USER root
+
+ARG INSTALL_YAML=false
+
+RUN if [ ${INSTALL_YAML} = true ]; then \
+    apt-get install libyaml-dev -y ; \
+    if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
+        pecl install -a yaml-1.3.2; \
+    else \
+        pecl install yaml; \
+    fi && \
+    echo "extension=yaml.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/yaml.ini && \
+    ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/yaml.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/35-yaml.ini \
+;fi
+
 ###########################################################################
 # FFMpeg:
 ###########################################################################
@@ -1087,6 +1160,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:
 ###########################################################################

+ 83 - 0
workspace/sources.sh

@@ -0,0 +1,83 @@
+#!/bin/bash
+
+set -xe;
+
+if type "tee" 2>/dev/null && [ -n "${UBUNTU_SOURCE}" ]; then
+    SOURCE_PATH="/etc/apt/sources.list"
+    cp ${SOURCE_PATH} ${SOURCE_PATH}.bak && rm -rf ${SOURCE_PATH}
+    case "${UBUNTU_SOURCE}" in
+        "aliyun")
+            tee ${SOURCE_PATH} <<-'EOF'
+deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
+deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
+deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
+deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
+deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
+deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
+EOF
+;;
+        "zju")
+            tee ${SOURCE_PATH} <<-'EOF'
+deb http://mirrors.zju.edu.cn/ubuntu/ bionic main multiverse restricted universe
+deb http://mirrors.zju.edu.cn/ubuntu/ bionic-backports main multiverse restricted universe
+deb http://mirrors.zju.edu.cn/ubuntu/ bionic-proposed main multiverse restricted universe
+deb http://mirrors.zju.edu.cn/ubuntu/ bionic-security main multiverse restricted universe
+deb http://mirrors.zju.edu.cn/ubuntu/ bionic-updates main multiverse restricted universe
+deb-src http://mirrors.zju.edu.cn/ubuntu/ bionic main multiverse restricted universe
+deb-src http://mirrors.zju.edu.cn/ubuntu/ bionic-backports main multiverse restricted universe
+deb-src http://mirrors.zju.edu.cn/ubuntu/ bionic-proposed main multiverse restricted universe
+deb-src http://mirrors.zju.edu.cn/ubuntu/ bionic-security main multiverse restricted universe
+deb-src http://mirrors.zju.edu.cn/ubuntu/ bionic-updates main multiverse restricted universe
+EOF
+;;
+        "tsinghua")
+            tee ${SOURCE_PATH} <<-'EOF'
+deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
+deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
+deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
+deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
+deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
+deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
+deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
+deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
+deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
+deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
+EOF
+;;
+        "163")
+            tee ${SOURCE_PATH} <<-'EOF'
+deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
+deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
+deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
+deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
+deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
+deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
+deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
+deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
+deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
+deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
+EOF
+;;
+        "ustc")
+            tee ${SOURCE_PATH} <<-'EOF'
+deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
+deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
+deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
+deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
+deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
+deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
+deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
+deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
+deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
+deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
+EOF
+;;
+        *)
+            echo "Please check whether there is aliyun|zju|tsinghua|163|ustc in the parameter"
+            exit 1;;
+    esac
+fi