diff --git a/.devcontainer/devcontainer.example.json b/.devcontainer/devcontainer.example.json
new file mode 100644
index 0000000..4be22f7
--- /dev/null
+++ b/.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"
+}
diff --git a/.gitignore b/.gitignore
index 4248551..2e773a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,4 +18,7 @@
/apache2/ssl/*.csr
/apache2/ssl/*.org
+/.devcontainer/*
+!/.devcontainer/devcontainer.example.json
+
.DS_Store
diff --git a/.travis.yml b/.travis.yml
index 8773aa3..8d92a02 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -31,7 +31,7 @@ env:
- PHP_VERSION=NA BUILD_SERVICE="mssql rethinkdb aerospike"
- PHP_VERSION=NA BUILD_SERVICE="blackfire minio percona nginx caddy apache2 mysql mariadb postgres postgres-postgis neo4j mongo redis cassandra"
- PHP_VERSION=NA BUILD_SERVICE="adminer phpmyadmin pgadmin"
- - PHP_VERSION=NA BUILD_SERVICE="memcached beanstalkd beanstalkd-console rabbitmq elasticsearch certbot mailhog maildev selenium jenkins proxy proxy2 haproxy"
+ - PHP_VERSION=NA BUILD_SERVICE="memcached beanstalkd beanstalkd-console rabbitmq elasticsearch certbot mailhog maildev selenium jenkins proxy proxy2 haproxy gearman"
- PHP_VERSION=NA BUILD_SERVICE="kibana grafana laravel-echo-server"
- PHP_VERSION=NA BUILD_SERVICE="ipython-controller manticore"
# - PHP_VERSION=NA BUILD_SERVICE="aws"
diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md
index d83b442..d2d574c 100644
--- a/DOCUMENTATION/content/documentation/index.md
+++ b/DOCUMENTATION/content/documentation/index.md
@@ -650,7 +650,7 @@ docker-compose up -d metabase
1) Boot the container `docker-compose up -d jenkins`. To enter the container type `docker-compose exec jenkins bash`.
-2) Go to `http://localhost:8090/` (if you didn't chanhed your default port mapping)
+2) Go to `http://localhost:8090/` (if you didn't change your default port mapping)
3) Authenticate from the web app.
@@ -1054,7 +1054,7 @@ docker-compose up -d confluence
2 - Open your browser and visit the localhost on port **8090**: `http://localhost:8090`
-**Note:** You can you trial version and then you have to buy a licence to use it.
+**Note:** Confluence is a licensed application - an evaluation licence can be obtained from Atlassian.
You can set custom confluence version in `CONFLUENCE_VERSION`. [Find more info in section 'Versioning'](https://hub.docker.com/r/atlassian/confluence-server/)
@@ -1865,6 +1865,27 @@ To install GNU Parallel in the Workspace container
+
+
+## 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`
+
+
+
+
+
+
diff --git a/DOCUMENTATION/content/guides/index.md b/DOCUMENTATION/content/guides/index.md
index 9ffd014..ab8c9c7 100644
--- a/DOCUMENTATION/content/guides/index.md
+++ b/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.
diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md
index 8493fed..fc4f624 100644
--- a/DOCUMENTATION/content/introduction/index.md
+++ b/DOCUMENTATION/content/introduction/index.md
@@ -194,6 +194,7 @@ That's it! enjoy :)
- Eclipse Mosquitto
- PHP Worker
- Laravel Horizon
+ - Gearman
- **Mail Servers:**
- Mailu
diff --git a/README.md b/README.md
index ddb90d8..3e794ff 100644
--- a/README.md
+++ b/README.md
@@ -53,28 +53,28 @@ Laradock exists thanks to all the people who contribute.
Bo-Yi Wu
- @appleboy
+ @appleboy
diff --git a/docker-compose.yml b/docker-compose.yml
index dbc010c..4dfeb33 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -70,6 +70,7 @@ services:
- INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
- INSTALL_AMQP=${WORKSPACE_INSTALL_AMQP}
- INSTALL_CASSANDRA=${WORKSPACE_INSTALL_CASSANDRA}
+ - INSTALL_GEARMAN=${WORKSPACE_INSTALL_GEARMAN}
- INSTALL_PHPREDIS=${WORKSPACE_INSTALL_PHPREDIS}
- INSTALL_MSSQL=${WORKSPACE_INSTALL_MSSQL}
- INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
@@ -109,6 +110,7 @@ services:
- INSTALL_MYSQL_CLIENT=${WORKSPACE_INSTALL_MYSQL_CLIENT}
- INSTALL_PING=${WORKSPACE_INSTALL_PING}
- INSTALL_SSHPASS=${WORKSPACE_INSTALL_SSHPASS}
+ - INSTALL_MAILPARSE=${WORKSPACE_INSTALL_MAILPARSE}
- PUID=${WORKSPACE_PUID}
- PGID=${WORKSPACE_PGID}
- CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION}
@@ -119,6 +121,7 @@ services:
- BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID}
- BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN}
- INSTALL_POWERLINE=${WORKSPACE_INSTALL_POWERLINE}
+ - INSTALL_SUPERVISOR=${WORKSPACE_INSTALL_SUPERVISOR}
- INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG}
- INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL}
- http_proxy
@@ -126,6 +129,7 @@ services:
- no_proxy
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
+ - ./php-worker/supervisord.d:/etc/supervisord.d
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
ports:
@@ -145,6 +149,7 @@ services:
build:
context: ./php-fpm
args:
+ - CHANGE_SOURCE=${CHANGE_SOURCE}
- LARADOCK_PHP_VERSION=${PHP_VERSION}
- LARADOCK_PHALCON_VERSION=${PHALCON_VERSION}
- INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
@@ -157,6 +162,7 @@ services:
- INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
- INSTALL_AMQP=${PHP_FPM_INSTALL_AMQP}
- INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA}
+ - INSTALL_GEARMAN=${PHP_FPM_INSTALL_GEARMAN}
- INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL}
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
- INSTALL_GMP=${PHP_FPM_INSTALL_GMP}
@@ -187,6 +193,8 @@ services:
- INSTALL_MYSQL_CLIENT=${PHP_FPM_INSTALL_MYSQL_CLIENT}
- INSTALL_PING=${PHP_FPM_INSTALL_PING}
- INSTALL_SSHPASS=${PHP_FPM_INSTALL_SSHPASS}
+ - INSTALL_MAILPARSE=${PHP_FPM_INSTALL_MAILPARSE}
+ - INSTALL_PCNTL=${PHP_FPM_INSTALL_PCNTL}
- ADDITIONAL_LOCALES=${PHP_FPM_ADDITIONAL_LOCALES}
- INSTALL_FFMPEG=${PHP_FPM_FFMPEG}
- INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF}
@@ -226,11 +234,13 @@ services:
- INSTALL_MYSQL_CLIENT=${PHP_WORKER_INSTALL_MYSQL_CLIENT}
- INSTALL_AMQP=${PHP_WORKER_INSTALL_AMQP}
- INSTALL_CASSANDRA=${PHP_WORKER_INSTALL_CASSANDRA}
+ - INSTALL_GEARMAN=${PHP_WORKER_INSTALL_GEARMAN}
- INSTALL_GHOSTSCRIPT=${PHP_WORKER_INSTALL_GHOSTSCRIPT}
- INSTALL_SWOOLE=${PHP_WORKER_INSTALL_SWOOLE}
- INSTALL_TAINT=${PHP_WORKER_INSTALL_TAINT}
- INSTALL_FFMPEG=${PHP_WORKER_INSTALL_FFMPEG}
- INSTALL_GMP=${PHP_WORKER_INSTALL_GMP}
+ - INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS}
- PUID=${PHP_WORKER_PUID}
- PGID=${PHP_WORKER_PGID}
volumes:
@@ -625,6 +635,39 @@ services:
networks:
- backend
+### Gearman ############################################
+ gearman:
+ build: ./gearman
+ ports:
+ - "${GEARMAN_PORT}:4730"
+ privileged: true
+ environment:
+ - GEARMAN_VERSION=${GEARMAN_VERSION}
+ - GEARMAN_VERBOSE=${GEARMAN_VERBOSE}
+ - GEARMAN_QUEUE_TYPE=${GEARMAN_QUEUE_TYPE}
+ - GEARMAN_THREADS=${GEARMAN_THREADS}
+ - GEARMAN_BACKLOG=${GEARMAN_BACKLOG}
+ - GEARMAN_FILE_DESCRIPTORS=${GEARMAN_FILE_DESCRIPTORS}
+ - GEARMAN_JOB_RETRIES=${GEARMAN_JOB_RETRIES}
+ - GEARMAN_ROUND_ROBIN=${GEARMAN_ROUND_ROBIN}
+ - GEARMAN_WORKER_WAKEUP=${GEARMAN_WORKER_WAKEUP}
+ - GEARMAN_KEEPALIVE=${GEARMAN_KEEPALIVE}
+ - GEARMAN_KEEPALIVE_IDLE=${GEARMAN_KEEPALIVE_IDLE}
+ - GEARMAN_KEEPALIVE_INTERVAL=${GEARMAN_KEEPALIVE_INTERVAL}
+ - GEARMAN_KEEPALIVE_COUNT=${GEARMAN_KEEPALIVE_COUNT}
+ - GEARMAN_MYSQL_HOST=${GEARMAN_MYSQL_HOST}
+ - GEARMAN_MYSQL_PORT=${GEARMAN_MYSQL_PORT}
+ - GEARMAN_MYSQL_USER=${GEARMAN_MYSQL_USER}
+ - GEARMAN_MYSQL_PASSWORD=${GEARMAN_MYSQL_PASSWORD}
+ - GEARMAN_MYSQL_PASSWORD_FILE=${GEARMAN_MYSQL_PASSWORD_FILE}
+ - GEARMAN_MYSQL_DB=${GEARMAN_MYSQL_DB}
+ - GEARMAN_MYSQL_TABLE=${GEARMAN_MYSQL_TABLE}
+ hostname: laradock-gearman
+ depends_on:
+ - php-fpm
+ networks:
+ - backend
+
### Beanstalkd Console ###################################
beanstalkd-console:
build: ./beanstalkd-console
diff --git a/env-example b/env-example
index 51dc687..44d826f 100644
--- a/env-example
+++ b/env-example
@@ -107,6 +107,7 @@ WORKSPACE_INSTALL_IMAP=false
WORKSPACE_INSTALL_MONGO=false
WORKSPACE_INSTALL_AMQP=false
WORKSPACE_INSTALL_CASSANDRA=false
+WORKSPACE_INSTALL_GEARMAN=false
WORKSPACE_INSTALL_MSSQL=false
WORKSPACE_INSTALL_DRUSH=false
WORKSPACE_DRUSH_VERSION=8.1.17
@@ -123,6 +124,7 @@ WORKSPACE_INSTALL_MC=false
WORKSPACE_INSTALL_SYMFONY=false
WORKSPACE_INSTALL_PYTHON=false
WORKSPACE_INSTALL_POWERLINE=false
+WORKSPACE_INSTALL_SUPERVISOR=false
WORKSPACE_INSTALL_IMAGE_OPTIMIZERS=false
WORKSPACE_INSTALL_IMAGEMAGICK=false
WORKSPACE_INSTALL_TERRAFORM=false
@@ -138,6 +140,7 @@ WORKSPACE_INSTALL_PING=false
WORKSPACE_INSTALL_SSHPASS=false
WORKSPACE_INSTALL_INOTIFY=false
WORKSPACE_INSTALL_FSWATCH=false
+WORKSPACE_INSTALL_MAILPARSE=false
WORKSPACE_PUID=1000
WORKSPACE_PGID=1000
WORKSPACE_CHROME_DRIVER_VERSION=2.42
@@ -163,6 +166,7 @@ PHP_FPM_INSTALL_IMAP=false
PHP_FPM_INSTALL_MONGO=false
PHP_FPM_INSTALL_AMQP=false
PHP_FPM_INSTALL_CASSANDRA=false
+PHP_FPM_INSTALL_GEARMAN=false
PHP_FPM_INSTALL_MSSQL=false
PHP_FPM_INSTALL_SSH2=false
PHP_FPM_INSTALL_SOAP=false
@@ -190,6 +194,7 @@ PHP_FPM_INSTALL_ADDITIONAL_LOCALES=false
PHP_FPM_INSTALL_MYSQL_CLIENT=false
PHP_FPM_INSTALL_PING=false
PHP_FPM_INSTALL_SSHPASS=false
+PHP_FPM_INSTALL_MAILPARSE=false
PHP_FPM_FFMPEG=false
PHP_FPM_ADDITIONAL_LOCALES="es_ES.UTF-8 fr_FR.UTF-8"
@@ -208,6 +213,8 @@ PHP_WORKER_INSTALL_TAINT=false
PHP_WORKER_INSTALL_FFMPEG=false
PHP_WORKER_INSTALL_GMP=false
PHP_WORKER_INSTALL_CASSANDRA=false
+PHP_WORKER_INSTALL_GEARMAN=false
+PHP_WORKER_INSTALL_REDIS=false
PHP_WORKER_PUID=1000
PHP_WORKER_PGID=1000
@@ -782,3 +789,48 @@ CASSANDRA_ENABLE_RPC=true
CASSANDRA_DATACENTER=dc1
# Rack name for the cluster. Ignored in SimpleSnitch endpoint snitch. Default: rack1.
CASSANDRA_RACK=rack1
+
+### GEARMAN ##################################################
+
+# Gearman version to use. See available tags at https://hub.docker.com/r/artefactual/gearmand
+GEARMAN_VERSION=latest
+# Port to use (Default: 6379)
+GEARMAN_PORT=6379
+# Logging Level (Default: INFO)
+GEARMAN_VERBOSE=INFO
+# Persistent queue type to use (Default: builtin)
+GEARMAN_QUEUE_TYPE=builtin
+# Number of I/O threads to use (Default: 4)
+GEARMAN_THREADS=4
+# Number of backlog connections for listen (Default: 32)
+GEARMAN_BACKLOG=32
+# Number of file descriptors to allow for the process (Default is max allowed for user)
+GEARMAN_FILE_DESCRIPTORS=
+# Number of attempts to run the job before the job server removes it. (Default: no limit = 0)
+GEARMAN_JOB_RETRIES=0
+# Assign work in round-robin order per worker connection (Default: 0)
+GEARMAN_ROUND_ROBIN=0
+# Number of workers to wakeup for each job received (Default: 0)
+GEARMAN_WORKER_WAKEUP=0
+# Enable keepalive on sockets (Default: 0)
+GEARMAN_KEEPALIVE=0
+# The duration between two keepalive transmissions in idle condition (Default: 30)
+GEARMAN_KEEPALIVE_IDLE=30
+# The duration between two successive keepalive retransmissions, if acknowledgement to the previous keepalive transmission is not received (Default: 10)
+GEARMAN_KEEPALIVE_INTERVAL=10
+# The number of retransmissions to be carried out before declaring that remote end is not available (Default: 5)
+GEARMAN_KEEPALIVE_COUNT=5
+# Mysql server host (Default: localhost)
+GEARMAN_MYSQL_HOST=localhost
+# Mysql server port (Default: 3306)
+GEARMAN_MYSQL_PORT=3306
+# Mysql server user (Default: root)
+GEARMAN_MYSQL_USER=root
+# Mysql password
+GEARMAN_MYSQL_PASSWORD=
+# Path to file with mysql password(Docker secrets)
+GEARMAN_MYSQL_PASSWORD_FILE=
+# Database to use by Gearman (Default: Gearmand)
+GEARMAN_MYSQL_DB=Gearmand
+# Table to use by Gearman (Default: gearman_queue)
+GEARMAN_MYSQL_TABLE=gearman_queue
\ No newline at end of file
diff --git a/gearman/Dockerfile b/gearman/Dockerfile
new file mode 100644
index 0000000..79a0e75
--- /dev/null
+++ b/gearman/Dockerfile
@@ -0,0 +1,5 @@
+ARG GEARMAN_VERSION=latest
+FROM artefactual/gearmand:${GEARMAN_VERSION}
+
+LABEL maintainer="Stefan Neuhaus