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 0673206..06eccb5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,4 +13,7 @@
/nginx/ssl/*.key
/nginx/ssl/*.csr
-.DS_Store
\ No newline at end of file
+/.devcontainer/*
+!/.devcontainer/devcontainer.example.json
+
+.DS_Store
diff --git a/.travis.yml b/.travis.yml
index 8773aa3..821b0f6 100644
--- a/.travis.yml
+++ b/.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"
diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md
index b98fe30..399db68 100644
--- a/DOCUMENTATION/content/documentation/index.md
+++ b/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
+
## 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.
+
## 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
+
+
+## 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..8511555 100644
--- a/DOCUMENTATION/content/introduction/index.md
+++ b/DOCUMENTATION/content/introduction/index.md
@@ -12,7 +12,7 @@ Supporting a variety of common services, all pre-configured to provide a full PH
## Features
-- Easy switch between PHP versions: 7.3, 7.2, 7.1, 5.6...
+- 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...
@@ -36,7 +36,6 @@ Supporting a variety of common services, all pre-configured to provide a full PH
## Sponsors
-
@@ -194,6 +193,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..53e29e0 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
Philippe Trépanier
- @philtrep
+ @philtrep
|
Mike Erickson
- @mikeerickson
+ @mikeerickson
|
Dwi Fahni Denni
- @zeroc0d3
+ @zeroc0d3
|
@@ -83,35 +83,35 @@ Laradock exists thanks to all the people who contribute.
Thor Erik
- @thorerik
+ @thorerik
Winfried van Loon
- @winfried-van-loon
+ @winfried-van-loon
|
TJ Miller
- @sixlive
+ @sixlive
|
Yu-Lung Shao (Allen)
- @bestlong
+ @bestlong
|
Milan Urukalo
- @urukalo
+ @urukalo
|
@@ -120,28 +120,28 @@ Laradock exists thanks to all the people who contribute.
Vince Chu
- @vwchu
+ @vwchu
Huadong Zuo
- @zuohuadong
+ @zuohuadong
|
Lan Phan
- @lanphan
+ @lanphan
|
Ahkui
- @ahkui
+ @ahkui
|
@@ -156,7 +156,7 @@ Laradock exists thanks to all the people who contribute.
### Code Contributors
-
+
### Financial Contributors
@@ -176,7 +176,6 @@ Contribute and help us sustain the project.
## Sponsors
-
diff --git a/docker-compose.yml b/docker-compose.yml
index 9ed17d1..5eb2cf0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -47,6 +47,10 @@ volumes:
driver: ${VOLUMES_DRIVER}
cassandra:
driver: ${VOLUMES_DRIVER}
+ graylog:
+ driver: ${VOLUMES_DRIVER}
+ dind:
+ driver: ${VOLUMES_DRIVER}
services:
@@ -70,8 +74,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}
@@ -110,6 +116,8 @@ services:
- 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}
@@ -121,13 +129,17 @@ 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
- 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:
@@ -147,6 +159,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}
@@ -159,6 +172,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}
@@ -183,15 +197,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
@@ -218,6 +238,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}
@@ -228,11 +249,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:
@@ -256,6 +279,7 @@ services:
- 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
@@ -492,6 +516,7 @@ services:
- "${MONGODB_PORT}:27017"
volumes:
- ${DATA_PATH_HOST}/mongo:/data/db
+ - ${DATA_PATH_HOST}/mongo_config:/data/configdb
networks:
- backend
@@ -626,6 +651,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
@@ -892,9 +950,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
@@ -1174,6 +1232,7 @@ services:
privileged: true
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
+ - ${DATA_PATH_HOST}/dind:/var/lib/docker
expose:
- 2375
networks:
@@ -1577,4 +1636,4 @@ services:
depends_on:
- postgres
volumes:
- - ${DATA_PATH_HOST}/Confluence:/var/atlassian/application-data
+ - ${DATA_PATH_HOST}/Confluence:/var/atlassian/application-data
\ No newline at end of file
diff --git a/env-example b/env-example
index 09304a2..4b571b7 100644
--- a/env-example
+++ b/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
@@ -165,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
@@ -185,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
@@ -210,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
@@ -228,6 +245,7 @@ NGINX_SSL_PATH=./nginx/ssl/
LARAVEL_HORIZON_INSTALL_SOCKETS=false
LARAVEL_HORIZON_INSTALL_PHPREDIS=true
+LARAVEL_HORIZON_INSTALL_MONGO=false
### APACHE ################################################
@@ -774,3 +792,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
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 "
+
diff --git a/kibana/Dockerfile b/kibana/Dockerfile
index badfd80..b831d6d 100644
--- a/kibana/Dockerfile
+++ b/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
diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile
index 766b245..425499d 100644
--- a/laravel-horizon/Dockerfile
+++ b/laravel-horizon/Dockerfile
@@ -74,6 +74,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
###########################################################################
@@ -87,7 +93,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 \
diff --git a/mariadb/Dockerfile b/mariadb/Dockerfile
index 1d04826..b6b8023 100644
--- a/mariadb/Dockerfile
+++ b/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
diff --git a/mysql/Dockerfile b/mysql/Dockerfile
index 3fe5bdc..03bb15c 100644
--- a/mysql/Dockerfile
+++ b/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
diff --git a/nginx/sites/confluence.conf.example b/nginx/sites/confluence.conf.example
new file mode 100644
index 0000000..f804956
--- /dev/null
+++ b/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;
+}
diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile
index 3e39d2e..b51e988 100644
--- a/php-fpm/Dockerfile
+++ b/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 "
@@ -319,6 +319,30 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \
docker-php-ext-install sockets \
;fi
+###########################################################################
+# GEARMAN:
+###########################################################################
+
+ARG INSTALL_GEARMAN=false
+
+RUN if [ ${INSTALL_GEARMAN} = true ]; then \
+ apt-get update && \
+ apt-get -y install libgearman-dev && \
+ cd /tmp && \
+ curl -L https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.5.zip -O && \
+ unzip gearman-2.0.5.zip && \
+ mv pecl-gearman-gearman-2.0.5 pecl-gearman && \
+ cd /tmp/pecl-gearman && \
+ phpize && \
+ ./configure && \
+ make -j$(nproc) && \
+ make install && \
+ cd / && \
+ rm /tmp/gearman-2.0.5.zip && \
+ rm -r /tmp/pecl-gearman && \
+ docker-php-ext-enable gearman \
+;fi
+
###########################################################################
# pcntl
###########################################################################
@@ -364,21 +388,10 @@ ARG INSTALL_MEMCACHED=false
RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
# Install the php memcached extension
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
- curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/2.2.0.tar.gz"; \
+ pecl install memcached-2.2.0; \
else \
- curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/master.tar.gz"; \
+ pecl install memcached-3.1.3; \
fi \
- && mkdir -p memcached \
- && tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
- && ( \
- cd memcached \
- && phpize \
- && ./configure \
- && make -j$(nproc) \
- && make install \
- ) \
- && rm -r memcached \
- && rm /tmp/memcached.tar.gz \
&& docker-php-ext-enable memcached \
;fi
@@ -669,6 +682,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:
###########################################################################
@@ -695,7 +719,11 @@ ARG INSTALL_MYSQL_CLIENT=false
RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \
apt-get update -yqq && \
- apt-get -y install mysql-client \
+ if [ ${LARADOCK_PHP_VERSION} = "7.3" ]; then \
+ apt-get -y install default-mysql-client \
+ ;else \
+ apt-get -y install mysql-client \
+ ;fi \
;fi
###########################################################################
@@ -737,6 +765,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:
###########################################################################
@@ -759,7 +816,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
diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile
index b2e496f..350c40d 100644
--- a/php-worker/Dockerfile
+++ b/php-worker/Dockerfile
@@ -9,6 +9,14 @@ FROM php:${PHP_VERSION}-alpine
LABEL maintainer="Mahmoud Zalt "
+# 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/
diff --git a/phpmyadmin/Dockerfile b/phpmyadmin/Dockerfile
index 75812d9..ded59ba 100644
--- a/phpmyadmin/Dockerfile
+++ b/phpmyadmin/Dockerfile
@@ -5,5 +5,10 @@ LABEL maintainer="Bo-Yi Wu "
# 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
diff --git a/postgres/docker-entrypoint-initdb.d/init_confluence_db.sh b/postgres/docker-entrypoint-initdb.d/init_confluence_db.sh
index ce5e9f7..aa744a1 100644
--- a/postgres/docker-entrypoint-initdb.d/init_confluence_db.sh
+++ b/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
\ No newline at end of file
+fi
diff --git a/workspace/Dockerfile b/workspace/Dockerfile
index baf8f22..cdeae23 100644
--- a/workspace/Dockerfile
+++ b/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 "
@@ -36,6 +36,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 +445,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
###########################################################################
@@ -583,6 +604,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)
@@ -780,13 +802,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:
###########################################################################
@@ -960,6 +975,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
###########################################################################
@@ -1090,6 +1119,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:
###########################################################################
@@ -1102,6 +1150,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:
###########################################################################
diff --git a/workspace/sources.sh b/workspace/sources.sh
new file mode 100755
index 0000000..eef0670
--- /dev/null
+++ b/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
\ No newline at end of file
|