Ver Fonte

Merge branch 'master' into fix_xhprof_version

Shao Yu-Lung (Allen) há 5 anos atrás
pai
commit
76b046f321

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

+ 4 - 1
.gitignore

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

+ 7 - 4
.travis.yml

@@ -12,20 +12,23 @@ 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"

+ 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

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

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

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

@@ -12,7 +12,7 @@ Supporting a variety of common services, all pre-configured to provide a full PH
 <a name="features"></a>
 ## 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
 <a name="sponsors"></a>
 ## Sponsors
 
-<a href="https://opencollective.com/socketio/sponsor/23/website" target="_blank"><img src="https://opencollective.com/socketio/sponsor/23/avatar.svg"></a>
 <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>

+ 1 - 2
README.md

@@ -156,7 +156,7 @@ Laradock exists thanks to all the people who contribute.
 
 ### 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 href="https://github.com/laradock/laradock/graphs/contributors"><img src="https://opencollective.com/laradock/contributors.svg?width=890&button=false" /></a>
 
 ### Financial Contributors
 
@@ -176,7 +176,6 @@ Contribute and help us sustain the project.
 
 ## Sponsors
 
-<a href="https://opencollective.com/socketio/sponsor/23/website" target="_blank"><img src="https://opencollective.com/socketio/sponsor/23/avatar.svg"></a>
 <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>

+ 25 - 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}
@@ -73,6 +78,7 @@ services:
           - 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_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}
@@ -117,17 +125,22 @@ services:
           - 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:
@@ -185,8 +198,10 @@ 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}
@@ -196,6 +211,8 @@ services:
           - 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
@@ -222,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}
@@ -255,6 +273,7 @@ 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}
@@ -262,6 +281,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
@@ -277,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
@@ -498,6 +518,7 @@ services:
         - "${MONGODB_PORT}:27017"
       volumes:
         - ${DATA_PATH_HOST}/mongo:/data/db
+        - ${DATA_PATH_HOST}/mongo_config:/data/configdb
       networks:
         - backend
 
@@ -931,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
 
@@ -1213,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:

+ 16 - 2
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=
@@ -124,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
@@ -139,6 +144,7 @@ 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
@@ -147,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 ###############################################
 
@@ -186,8 +194,10 @@ 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
@@ -197,6 +207,9 @@ 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
@@ -232,6 +245,7 @@ NGINX_SSL_PATH=./nginx/ssl/
 
 LARAVEL_HORIZON_INSTALL_SOCKETS=false
 LARAVEL_HORIZON_INSTALL_PHPREDIS=true
+LARAVEL_HORIZON_INSTALL_MONGO=false
 
 ### APACHE ################################################
 
@@ -822,4 +836,4 @@ 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
+GEARMAN_MYSQL_TABLE=gearman_queue

+ 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

+ 15 - 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 \
@@ -50,7 +58,7 @@ ARG INSTALL_CASSANDRA=false
 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 \
@@ -74,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
 
 
 ###########################################################################

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

+ 47 - 5
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,10 +23,14 @@ 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.aliyun.com/' /etc/apt/sources.list \
+    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.
@@ -270,7 +274,7 @@ 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/v5.0.1.tar.gz"; \
     else \ 
@@ -682,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:
 ###########################################################################
@@ -708,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
 
 ###########################################################################
@@ -763,6 +782,22 @@ RUN if [ ${INSTALL_MAILPARSE} = true ]; then \
     &&  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:
 ###########################################################################
@@ -785,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

+ 13 - 1
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:

+ 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

+ 69 - 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 && \
@@ -520,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
 ###########################################################################
@@ -580,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)
@@ -777,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:
 ###########################################################################
@@ -957,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
 
 ###########################################################################
@@ -1087,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:
 ###########################################################################

+ 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