diff --git a/.devcontainer/devcontainer.example.json b/.devcontainer/devcontainer.example.json new file mode 100644 index 00000000..4be22f7f --- /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 06732062..06eccb52 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 8d92a02b..821b0f62 100644 --- a/.travis.yml +++ b/.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" diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index d83b4422..399db68e 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` + + + + + +

@@ -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`
+ + +
+ +## 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. + + + +
## PHPStorm Debugging Guide diff --git a/DOCUMENTATION/content/guides/index.md b/DOCUMENTATION/content/guides/index.md index 9ffd0140..ab8c9c7e 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 fc4f6241..85115551 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 - diff --git a/README.md b/README.md index 3e794ffc..53e29e0a 100644 --- a/README.md +++ b/README.md @@ -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 896adb59..1bddaebd 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: @@ -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: diff --git a/env-example b/env-example index 1b714796..4b571b71 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= @@ -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 \ No newline at end of file +GEARMAN_MYSQL_TABLE=gearman_queue diff --git a/kibana/Dockerfile b/kibana/Dockerfile index badfd80a..b831d6d0 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 5ce1d8ef..9edbe14b 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/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 \ @@ -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 ########################################################################### diff --git a/mariadb/Dockerfile b/mariadb/Dockerfile index 1d048265..b6b8023e 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 3fe5bdcf..03bb15ca 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 00000000..f804956b --- /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 a19390da..042341f3 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 " @@ -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 diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index ac0c1404..350c40dc 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: diff --git a/phpmyadmin/Dockerfile b/phpmyadmin/Dockerfile index 75812d9b..ded59baf 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 ce5e9f72..aa744a1b 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 f413e903..02fe4bd3 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 " @@ -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: ########################################################################### diff --git a/workspace/sources.sh b/workspace/sources.sh new file mode 100755 index 00000000..eef06706 --- /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