From 5a61c134f34cc3387d2831fc87bd3c425d76b249 Mon Sep 17 00:00:00 2001 From: Nazariy Hazdun Date: Fri, 17 Aug 2018 14:24:48 +0300 Subject: [PATCH 001/372] Add Weaver-athenapdf --- weaver/conf/sample.env | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 weaver/conf/sample.env diff --git a/weaver/conf/sample.env b/weaver/conf/sample.env new file mode 100644 index 00000000..ccb48de5 --- /dev/null +++ b/weaver/conf/sample.env @@ -0,0 +1,19 @@ +GIN_MODE=debug + +# Weaver +WEAVER_AUTH_KEY=arachnys-weaver +WEAVER_ATHENA_CMD=athenapdf -S +WEAVER_MAX_WORKERS=10 +WEAVER_MAX_CONVERSION_QUEUE=50 +WEAVER_WORKER_TIMEOUT=90 +WEAVER_CONVERSION_FALLBACK=false + +# CloudConvert +# API key can be found: https://cloudconvert.com/user/profile +# CLOUDCONVERT_API=https://api.cloudconvert.com +# CLOUDCONVERT_KEY= + +# Monitoring +# STATSD_ADDRESS= +# STATSD_PREFIX= +# SENTRY_DSN= \ No newline at end of file From 006946ce6a8c48110efe4236b4bb5e1353d266e7 Mon Sep 17 00:00:00 2001 From: Nazariy Hazdun Date: Fri, 17 Aug 2018 14:31:38 +0300 Subject: [PATCH 002/372] Add Weaver-athenapdf --- docker-compose.yml | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e1a6f18c..276ea89e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -685,7 +685,7 @@ services: networks: - frontend - backend - + ### Solr ################################################ solr: build: @@ -730,15 +730,15 @@ services: context: ./gitlab environment: GITLAB_OMNIBUS_CONFIG: | - external_url '${GITLAB_DOMAIN_NAME}' - redis['enable'] = false - nginx['listen_https'] = false - nginx['listen_port'] = 80 - postgresql['enable'] = false - gitlab_rails['trusted_proxies'] = ['caddy','nginx','apache2'] - gitlab_rails['redis_host'] = 'redis' + external_url '${GITLAB_DOMAIN_NAME}' + redis['enable'] = false + nginx['listen_https'] = false + nginx['listen_port'] = 80 + postgresql['enable'] = false + gitlab_rails['trusted_proxies'] = ['caddy','nginx','apache2'] + gitlab_rails['redis_host'] = 'redis' gitlab_rails['redis_database'] = 8 - gitlab_rails['db_host'] = 'postgres' + gitlab_rails['db_host'] = 'postgres' gitlab_rails['db_username'] = 'laradock_gitlab' gitlab_rails['db_password'] = 'laradock_gitlab' gitlab_rails['db_database'] = 'laradock_gitlab' @@ -765,7 +765,7 @@ services: - ${DATA_PATH_HOST}/gitlab/runner:/etc/gitlab-runner - /var/run/docker.sock:/var/run/docker.sock:rw restart: always - + ### JupyterHub ######################################### jupyterhub: build: @@ -876,7 +876,7 @@ services: - backend depends_on: - mongo - + ### Metabase ################################################# metabase: image: metabase/metabase:latest @@ -889,3 +889,14 @@ services: networks: - backend +### Weaver (Athena PDF) ################################################ + weaver: + image: arachnysdocker/athenapdf-service + ports: + - "8080:8080" + env_file: + - ./weaver/conf/sample.env + networks: + - backend + depends_on: + - workspace \ No newline at end of file From d178613e660cd11aac2d529ee6c4523b236f9b03 Mon Sep 17 00:00:00 2001 From: Nazariy Hazdun Date: Fri, 17 Aug 2018 14:33:24 +0300 Subject: [PATCH 003/372] code style fix --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 276ea89e..ad5f2363 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -889,7 +889,7 @@ services: networks: - backend -### Weaver (Athena PDF) ################################################ +### Weaver (Athena PDF) ################################################# weaver: image: arachnysdocker/athenapdf-service ports: From 897b5704dcdfee7147a443b2c8419521a1cc0c40 Mon Sep 17 00:00:00 2001 From: Lan Phan Date: Sat, 16 Mar 2019 14:17:58 +0700 Subject: [PATCH 004/372] update adminer to support SQL Server --- adminer/Dockerfile | 18 +++++++++--------- docker-compose.yml | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/adminer/Dockerfile b/adminer/Dockerfile index cb399771..61ca8d92 100644 --- a/adminer/Dockerfile +++ b/adminer/Dockerfile @@ -9,19 +9,19 @@ VOLUME /sessions # SQL SERVER: ##################################### USER root + ARG INSTALL_MSSQL=false ENV INSTALL_MSSQL ${INSTALL_MSSQL} + RUN if [ ${INSTALL_MSSQL} = true ]; then \ set -xe \ - # && apk --update add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc unixodbc-dev \ - # && pecl channel-update pecl.php.net \ - # && pecl install pdo_sqlsrv-4.1.8preview sqlsrv-4.1.8preview \ - # && echo "extension=sqlsrv.so" > /usr/local/etc/php/conf.d/20-sqlsrv.ini \ - # && echo "extension=pdo_sqlsrv.so" > /usr/local/etc/php/conf.d/20-pdo_sqlsrv.ini \ - && apk --update add --no-cache freetds unixodbc \ - && apk --update add --no-cache --virtual .build-deps $PHPIZE_DEPS freetds-dev unixodbc-dev \ - && docker-php-ext-install pdo_dblib \ - && apk del .build-deps \ + && apk update \ + && apk add --no-cache --virtual .php-build-dependencies unixodbc-dev freetds-dev \ + && apk add --virtual .php-runtime-dependencies unixodbc freetds \ + && docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr \ + && docker-php-ext-install pdo_odbc pdo_dblib \ + && apk del .php-build-dependencies \ + && rm -rf /var/cache/apk/* \ ;fi USER adminer diff --git a/docker-compose.yml b/docker-compose.yml index aeb6d163..f5ccf4a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -359,7 +359,7 @@ services: - SA_PASSWORD=${MSSQL_PASSWORD} - ACCEPT_EULA=Y volumes: - - ${DATA_PATH_HOST}/mssql:/var/opt/mssql + - mssql:/var/opt/mssql ports: - "${MSSQL_PORT}:1433" networks: From 5d56cc83e64b4311854c22a024a4c7c652e95fda Mon Sep 17 00:00:00 2001 From: "Daniel F. J. Dantur" Date: Sat, 29 Jun 2019 01:34:49 -0300 Subject: [PATCH 005/372] Add LOG_STDOUT and LOG_SDERR required environment variables Fixes Apache crashes due permission errors related to log files docker.stdout and docker.stderr. Logs are now created in /var/log/apache2 as defined in docker-compose.yml apahce2 volumes. Logs are named access.log and error.log like the Apache default log names are. --- apache2/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apache2/Dockerfile b/apache2/Dockerfile index 71cad501..58cc12ff 100644 --- a/apache2/Dockerfile +++ b/apache2/Dockerfile @@ -13,6 +13,10 @@ ENV WEB_DOCUMENT_ROOT=${DOCUMENT_ROOT} ENV WEB_PHP_TIMEOUT=${PHP_UPSTREAM_TIMEOUT} +ENV LOG_STDOUT=/var/log/apache2/access.log + +ENV LOG_STDERR=/var/log/apache2/error.log + EXPOSE 80 443 WORKDIR /var/www/ From f8ec06ac1cd32aee0f5083fe847b6b510c04fa02 Mon Sep 17 00:00:00 2001 From: anribras Date: Sat, 6 Jul 2019 17:41:11 +0800 Subject: [PATCH 006/372] Add mariadb timezone setting via WORKSPACE_TIMEZONE in .env --- docker-compose.yml | 1 + mariadb/Dockerfile | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index a136f741..49a4c3a9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -407,6 +407,7 @@ services: ports: - "${MARIADB_PORT}:3306" environment: + - TZ=${WORKSPACE_TIMEZONE} - MYSQL_DATABASE=${MARIADB_DATABASE} - MYSQL_USER=${MARIADB_USER} - MYSQL_PASSWORD=${MARIADB_PASSWORD} diff --git a/mariadb/Dockerfile b/mariadb/Dockerfile index 0dcb9481..7538b4e2 100644 --- a/mariadb/Dockerfile +++ b/mariadb/Dockerfile @@ -2,6 +2,13 @@ FROM mariadb:latest LABEL maintainer="Mahmoud Zalt " +##################################### +# Set Timezone +##################################### + +ARG TZ=UTC +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 CMD ["mysqld"] From a0365437c55c8bf460c356c95b0a671ad299180f Mon Sep 17 00:00:00 2001 From: Miguel Ortiz Date: Mon, 23 Sep 2019 20:03:43 -0500 Subject: [PATCH 007/372] Apache2 certificate location settings --- .gitignore | 7 ++++++- apache2/ssl/.gitkeep | 0 docker-compose.yml | 1 + env-example | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 apache2/ssl/.gitkeep diff --git a/.gitignore b/.gitignore index 06732062..42485519 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,9 @@ /nginx/ssl/*.key /nginx/ssl/*.csr -.DS_Store \ No newline at end of file +/apache2/ssl/*.crt +/apache2/ssl/*.key +/apache2/ssl/*.csr +/apache2/ssl/*.org + +.DS_Store diff --git a/apache2/ssl/.gitkeep b/apache2/ssl/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docker-compose.yml b/docker-compose.yml index 07c47f65..b55a9ca3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -313,6 +313,7 @@ services: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - ${APACHE_HOST_LOG_PATH}:/var/log/apache2 - ${APACHE_SITES_PATH}:/etc/apache2/sites-available + - ${APACHE_SSL_PATH}:/etc/apache2/ssl ports: - "${APACHE_HOST_HTTP_PORT}:80" - "${APACHE_HOST_HTTPS_PORT}:443" diff --git a/env-example b/env-example index 0fd9d9db..1148e307 100644 --- a/env-example +++ b/env-example @@ -233,6 +233,7 @@ APACHE_HOST_HTTP_PORT=80 APACHE_HOST_HTTPS_PORT=443 APACHE_HOST_LOG_PATH=./logs/apache2 APACHE_SITES_PATH=./apache2/sites +APACHE_SSL_PATH=./apache2/ssl APACHE_PHP_UPSTREAM_CONTAINER=php-fpm APACHE_PHP_UPSTREAM_PORT=9000 APACHE_PHP_UPSTREAM_TIMEOUT=60 From da040d7b02ab7e20f051736592e6b71b0b3c6cd6 Mon Sep 17 00:00:00 2001 From: Miguel Ortiz Date: Mon, 23 Sep 2019 20:12:03 -0500 Subject: [PATCH 008/372] Swagger implementation to document Rest APIs --- docker-compose.yml | 18 ++++++++++++++++++ env-example | 9 +++++++++ swagger-editor/Dockerfile | 3 +++ swagger-ui/Dockerfile | 3 +++ 4 files changed, 33 insertions(+) create mode 100644 swagger-editor/Dockerfile create mode 100644 swagger-ui/Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml index b55a9ca3..dbc010ca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1577,3 +1577,21 @@ services: - postgres volumes: - ${DATA_PATH_HOST}/Confluence:/var/atlassian/application-data + +### SWAGGER EDITOR ############################################ + swagger-editor: + build: ./swagger-editor + ports: + - ${SWAGGER_EDITOR_PORT}:8080 + networks: + - backend + +### SWAGGER UI ################################################ + swagger-ui: + build: ./swagger-ui + environment: + - API_URL=${SWAGGER_API_URL} + ports: + - ${SWAGGER_UI_PORT}:8080 + networks: + - backend \ No newline at end of file diff --git a/env-example b/env-example index 1148e307..51dc6878 100644 --- a/env-example +++ b/env-example @@ -725,6 +725,15 @@ PGADMIN_PORT=5050 PGADMIN_DEFAULT_EMAIL=pgadmin4@pgadmin.org PGADMIN_DEFAULT_PASSWORD=admin +### SWAGGER EDITOR ########################################### + +SWAGGER_EDITOR_PORT=5151 + +### SWAGGER UI ############################################### + +SWAGGER_API_URL=http://generator.swagger.io/api/swagger.json +SWAGGER_UI_PORT=5555 + ### SONARQUBE ################################################ ## docker-compose up -d sonarqube ## (If you encounter a database error) diff --git a/swagger-editor/Dockerfile b/swagger-editor/Dockerfile new file mode 100644 index 00000000..f151dfe5 --- /dev/null +++ b/swagger-editor/Dockerfile @@ -0,0 +1,3 @@ +FROM swaggerapi/swagger-editor:latest + +LABEL maintainer="Miguel Ortiz " diff --git a/swagger-ui/Dockerfile b/swagger-ui/Dockerfile new file mode 100644 index 00000000..0f8c6fd1 --- /dev/null +++ b/swagger-ui/Dockerfile @@ -0,0 +1,3 @@ +FROM swaggerapi/swagger-ui:latest + +LABEL maintainer="Miguel Ortiz " From c6a8e5495d9b9c2b8e74eae77ec8e77dd1da57a7 Mon Sep 17 00:00:00 2001 From: Miguel Ortiz Date: Mon, 23 Sep 2019 20:14:32 -0500 Subject: [PATCH 009/372] Add nginx example for nodejs --- nginx/sites/laravel.conf.example | 6 ++++ nginx/sites/node.conf.example | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 nginx/sites/node.conf.example diff --git a/nginx/sites/laravel.conf.example b/nginx/sites/laravel.conf.example index c30bf8ad..c9ba2d96 100644 --- a/nginx/sites/laravel.conf.example +++ b/nginx/sites/laravel.conf.example @@ -1,3 +1,9 @@ +#server { +# listen 80; +# server_name laravel.com.co; +# return 301 https://laravel.com.co$request_uri; +#} + server { listen 80; diff --git a/nginx/sites/node.conf.example b/nginx/sites/node.conf.example new file mode 100644 index 00000000..6fe0c754 --- /dev/null +++ b/nginx/sites/node.conf.example @@ -0,0 +1,47 @@ +#server { +# listen 80; +# server_name node.com.co; +# return 301 https://node.com.co$request_uri; +#} + +server { + + listen 80; + listen [::]:80; + + #listen 443; + #listen [::]:443; + + server_name node.com.co; + + #ssl on; + #ssl_certificate /var/certs/node.com.co/cert.pem; + #ssl_certificate_key /var/certs/node.com.co/privkey.pem; + #ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; + #ssl_ciphers HIGH:!aNULL:!MD5; + + + location / { + proxy_pass http://node.com.co:3001; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_cache_bypass $http_upgrade; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } + + error_log /var/log/nginx/node.com.co.local_error.log; + access_log /var/log/nginx/node.com.co.local_access.log; +} From 0ac954b0974db60b51256243de6b3306a40c2819 Mon Sep 17 00:00:00 2001 From: Mike Hingley Date: Fri, 25 Oct 2019 18:18:22 +0100 Subject: [PATCH 010/372] updating docs Attempting to replace some of the mark-up with more semantically correct (using ordered lists etc) Fixed some seplling, grammar errors. --- DOCUMENTATION/content/documentation/index.md | 683 ++++++++----------- 1 file changed, 285 insertions(+), 398 deletions(-) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index d2b91fb4..b0e8c8fa 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -217,9 +217,9 @@ The PHP-CLI extensions should be installed in `workspace/Dockerfile`.
## Change the (PHP-FPM) Version -By default the latest stable PHP versin is configured to run. +By default, the latest stable PHP version is configured to run. ->The PHP-FPM is responsible of serving your application code, you don't have to change the PHP-CLI version if you are planning to run your application on different PHP-FPM version. +>The PHP-FPM is responsible for serving your application code, you don't have to change the PHP-CLI version if you are planning to run your application on different PHP-FPM version. ### A) Switch from PHP `7.2` to PHP `5.6` @@ -253,7 +253,7 @@ docker-compose build php-fpm >Note: it's not very essential to edit the PHP-CLI version. The PHP-CLI is only used for the Artisan Commands & Composer. It doesn't serve your Application code, this is the PHP-FPM job. -The PHP-CLI is installed in the Workspace container. To change the PHP-CLI version you need to simply change the `PHP_VERSION` in te .env file as follow: +The PHP-CLI is installed in the Workspace container. To change the PHP-CLI version you need to simply change the `PHP_VERSION` in the .env file as follow: 1 - Open the `.env`. @@ -274,7 +274,7 @@ docker-compose build workspace - +Change the PHP-CLI Version
@@ -294,7 +294,7 @@ e) set it to `true` 2 - Re-build the containers `docker-compose build workspace php-fpm` -For information on how to configure xDebug with your IDE and work it out, check this [Repository](https://github.com/LarryEitel/laravel-laradock-phpstorm) or follow up on the next section if you use linux and PhpStorm. +For information on how to configure xDebug with your IDE and work it out, check this [Repository](https://github.com/LarryEitel/laravel-laradock-phpstorm) or follow up on the next section if you use Linux and PhpStorm. @@ -426,11 +426,11 @@ docker-compose run --user=root --rm sonarqube chown sonarqube:sonarqube /opt/son ## Prepare Laradock for Production -It's recommended for production to create a custom `docker-compose.yml` file, for example `production-docker-compose.yml` +It's recommended for production to create a custom `docker-compose.yml` file, for example, `production-docker-compose.yml` -In your new production `docker-compose.yml` file you should contain only the containers you are planning to run in production (usage example: `docker-compose -f production-docker-compose.yml up -d nginx mysql redis ...`). +In your new production `docker-compose.yml` file, you should include only the containers you are planning to run in production (usage example: `docker-compose -f production-docker-compose.yml up -d nginx mysql redis ...`). -Note: The Database (MySQL/MariaDB/...) ports should not be forwarded on production, because Docker will automatically publish the port on the host, which is quite insecure, unless specifically told not to. So make sure to remove these lines: +Note: The Database (MySQL/MariaDB/...) ports should not be forwarded on production, because Docker will automatically publish the port on the host unless specifically told not to. Forwarding these ports on production is quite insecure - so make sure to remove these lines: ``` ports: @@ -551,7 +551,7 @@ phpunit ## Run Laravel Queue Worker -1 - Create supervisor configuration file (for ex., named `laravel-worker.conf`) for Laravel Queue Worker in `php-worker/supervisord.d/` by simply copy from `laravel-worker.conf.example` +1 - Create a suitable configuration file (for example named `laravel-worker.conf`) for Laravel Queue Worker in `php-worker/supervisord.d/` by simply copying from `laravel-worker.conf.example` 2 - Start everything up @@ -569,38 +569,29 @@ docker-compose up -d php-worker ## Run Laravel Scheduler Laradock provides 2 ways to run Laravel Scheduler -1 - Using cron in workspace container. Most of the time, when you start Laradock, it'll automatically start workspace container with cron inside, along with setting to run `schedule:run` command every minute. - -2 - Using Supervisord in php-worker to run `schedule:run`. This way is suggested when you don't want to start workspace in production environment. -
-a) Comment out cron setting in workspace container, file `workspace/crontab/laradock` - -```bash -# * * * * * laradock /usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1 -``` -
-b) Create supervisor configuration file (for ex., named `laravel-scheduler.conf`) for Laravel Scheduler in `php-worker/supervisord.d/` by simply copy from `laravel-scheduler.conf.example` -
-c) Start php-worker container - -```bash -docker-compose up -d php-worker -``` - - - - - +1. Using cron in workspace container. +Most of the time, when you start Laradock, it'll automatically start workspace container with cron inside, along with setting to run `schedule:run` command every minute. +2. Using Supervisord in php-worker to run `schedule:run`. +This way is suggested when you don't want to start workspace in production environment. + * Comment out cron setting in workspace container, file `workspace/crontab/laradock` + ```bash + # * * * * * laradock /usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1 + ``` + * Create a suitable configuration file (for ex., named `laravel-scheduler.conf`) for Laravel Scheduler in `php-worker/supervisord.d/` by simply copying from `laravel-scheduler.conf.example` + * Start php-worker container + ```bash + docker-compose up -d php-worker + ```
## Use Mailu -1 - You need register a domain. +1. You will need a registered domain. -2 - Required RECAPTCHA for signup email [HERE](https://www.google.com/recaptcha/admin) +2. Required RECAPTCHA for signup email [HERE](https://www.google.com/recaptcha/admin) -2 - modify following environment variable in `.env` file +3. Modify following environment variable in `.env` file ``` MAILU_RECAPTCHA_PUBLIC_KEY= @@ -609,36 +600,32 @@ MAILU_DOMAIN=laradock.io MAILU_HOSTNAMES=mail.laradock.io ``` -2 - Open your browser and visit `http://YOUR_DOMAIN`. - - +4. Open your browser and visit `http://YOUR_DOMAIN`.
## Use NetData -1 - Run the NetData Container (`netdata`) with the `docker-compose up` command. Example: +1. Run the NetData Container (`netdata`) with the `docker-compose up` command. Example: ```bash docker-compose up -d netdata ``` -2 - Open your browser and visit the localhost on port **19999**: `http://localhost:19999` +2. Open your browser and visit the localhost on port **19999**: `http://localhost:19999`
## Use Metabase -1 - Run the Metabase Container (`metbase`) with the `docker-compose up` command. Example: +1. Run the Metabase Container (`metabase`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d metabase + ``` +2. Open your browser and visit the localhost on port **3030**: `http://localhost:3030` -```bash -docker-compose up -d metabase -``` - -2 - Open your browser and visit the localhost on port **3030**: `http://localhost:3030` - -3 - You can use environment to configure Metabase container. See docs in: [Running Metabase on Docker](https://www.metabase.com/docs/v0.12.0/operations-guide/running-metabase-on-docker.html) +3. You can use environment to configure Metabase container. See docs in: [Running Metabase on Docker](https://www.metabase.com/docs/v0.12.0/operations-guide/running-metabase-on-docker.html) @@ -676,52 +663,40 @@ You may wanna change the default security configuration, so go to `http://localh ## Use Redis -1 - First make sure you run the Redis Container (`redis`) with the `docker-compose up` command. +1. First make sure you run the Redis Container (`redis`) with the `docker-compose up` command. + ```bash + docker-compose up -d redis + ``` + > To execute redis commands, enter the redis container first `docker-compose exec redis bash` then enter the `redis-cli`. -```bash -docker-compose up -d redis -``` - -> To execute redis commands, enter the redis container first `docker-compose exec redis bash` then enter the `redis-cli`. - -2 - Open your Laravel's `.env` file and set the `REDIS_HOST` to `redis` - -```env -REDIS_HOST=redis -``` - -If you're using Laravel, and you don't find the `REDIS_HOST` variable in your `.env` file. Go to the database configuration file `config/database.php` and replace the default `127.0.0.1` IP with `redis` for Redis like this: - -```php -'redis' => [ - 'cluster' => false, - 'default' => [ - 'host' => 'redis', - 'port' => 6379, - 'database' => 0, +2. Open your Laravel's `.env` file and set the `REDIS_HOST` to `redis` + ```env + REDIS_HOST=redis + ``` + If you're using Laravel, and you don't find the `REDIS_HOST` variable in your `.env` file. Go to the database configuration file `config/database.php` and replace the default `127.0.0.1` IP with `redis` for Redis like this: + ```php + 'redis' => [ + 'cluster' => false, + 'default' => [ + 'host' => 'redis', + 'port' => 6379, + 'database' => 0, + ], ], -], -``` - -3 - To enable Redis Caching and/or for Sessions Management. Also from the `.env` file set `CACHE_DRIVER` and `SESSION_DRIVER` to `redis` instead of the default `file`. - -```env -CACHE_DRIVER=redis -SESSION_DRIVER=redis -``` - -4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer: - -```bash -composer require predis/predis:^1.0 -``` - -5 - You can manually test it from Laravel with this code: - -```php -\Cache::store('redis')->put('Laradock', 'Awesome', 10); -``` - + ``` +3. To enable Redis Caching and/or for Sessions Management. Also from the `.env` file set `CACHE_DRIVER` and `SESSION_DRIVER` to `redis` instead of the default `file`. + ```env + CACHE_DRIVER=redis + SESSION_DRIVER=redis + ``` +4. Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer: + ```bash + composer require predis/predis:^1.0 + ``` +5. You can manually test it from Laravel with this code: + ```php + \Cache::store('redis')->put('Laradock', 'Awesome', 10); + ``` @@ -730,36 +705,30 @@ composer require predis/predis:^1.0
## Use Redis Cluster - -1 - First make sure you run the Redis-Cluster Container (`redis-cluster`) with the `docker-compose up` command. - -```bash -docker-compose up -d redis-cluster -``` - -2 - Open your Laravel's `config/database.php` and set the redis cluster configuration. Below is example configuration with phpredis. - -Read the [Laravel official documentation](https://laravel.com/docs/5.7/redis#configuration) for more details. - -```php -'redis' => [ - 'client' => 'phpredis', - 'options' => [ - 'cluster' => 'redis', - ], - 'clusters' => [ - 'default' => [ - [ - 'host' => 'redis-cluster', - 'password' => null, - 'port' => 7000, - 'database' => 0, +1. First make sure you run the Redis-Cluster Container (`redis-cluster`) with the `docker-compose up` command. + ```bash + docker-compose up -d redis-cluster + ``` +2. Open your Laravel's `config/database.php` and set the redis cluster configuration. Below is example configuration with phpredis. + Read the [Laravel official documentation](https://laravel.com/docs/5.7/redis#configuration) for more details. + ```php + 'redis' => [ + 'client' => 'phpredis', + 'options' => [ + 'cluster' => 'redis', + ], + 'clusters' => [ + 'default' => [ + [ + 'host' => 'redis-cluster', + 'password' => null, + 'port' => 7000, + 'database' => 0, + ], ], ], ], -], -``` - + ``` @@ -768,71 +737,51 @@ Read the [Laravel official documentation](https://laravel.com/docs/5.7/redis#con
## Use Mongo - -1 - First install `mongo` in the Workspace and the PHP-FPM Containers: -
-a) open the `.env` file -
-b) search for the `WORKSPACE_INSTALL_MONGO` argument under the Workspace Container -
-c) set it to `true` -
-d) search for the `PHP_FPM_INSTALL_MONGO` argument under the PHP-FPM Container -
-e) set it to `true` - -2 - Re-build the containers `docker-compose build workspace php-fpm` - - - -3 - Run the MongoDB Container (`mongo`) with the `docker-compose up` command. - -```bash -docker-compose up -d mongo -``` - - -4 - Add the MongoDB configurations to the `config/database.php` configuration file: - -```php -'connections' => [ - - 'mongodb' => [ - 'driver' => 'mongodb', - 'host' => env('DB_HOST', 'localhost'), - 'port' => env('DB_PORT', 27017), - 'database' => env('DB_DATABASE', 'database'), - 'username' => '', - 'password' => '', - 'options' => [ - 'database' => '', - ] +1. First install `mongo` in the Workspace and the PHP-FPM Containers: + * open the `.env` file + * search for the `WORKSPACE_INSTALL_MONGO` argument under the Workspace Container + * set it to `true` + * search for the `PHP_FPM_INSTALL_MONGO` argument under the PHP-FPM Container + * set it to `true` +2. Re-build the containers + * `docker-compose build workspace php-fpm` +3. Run the MongoDB Container (`mongo`) with the `docker-compose up` command. + ```bash + docker-compose up -d mongo + ``` +4. Add the MongoDB configurations to the `config/database.php` configuration file: + ```php + 'connections' => [ + + 'mongodb' => [ + 'driver' => 'mongodb', + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', 27017), + 'database' => env('DB_DATABASE', 'database'), + 'username' => '', + 'password' => '', + 'options' => [ + 'database' => '', + ] + ], + + // ... + ], - - // ... - -], -``` - -5 - Open your Laravel's `.env` file and update the following variables: - -- set the `DB_HOST` to your `mongo`. -- set the `DB_PORT` to `27017`. -- set the `DB_DATABASE` to `database`. - - -6 - Finally make sure you have the `jenssegers/mongodb` package installed via Composer and its Service Provider is added. - -```bash -composer require jenssegers/mongodb -``` -More details about this [here](https://github.com/jenssegers/laravel-mongodb#installation). - -7 - Test it: - -- First let your Models extend from the Mongo Eloquent Model. Check the [documentation](https://github.com/jenssegers/laravel-mongodb#eloquent). -- Enter the Workspace Container. -- Migrate the Database `php artisan migrate`. + ``` +5. Open your Laravel's `.env` file and update the following variables: + - set the `DB_HOST` to your `mongo`. + - set the `DB_PORT` to `27017`. + - set the `DB_DATABASE` to `database`. +6. Finally make sure you have the `jenssegers/mongodb` package installed via Composer and its Service Provider is added. + ```bash + composer require jenssegers/mongodb + ``` + More details about this [here](https://github.com/jenssegers/laravel-mongodb#installation). +7. Test it: + - First let your Models extend from the Mongo Eloquent Model. Check the [documentation](https://github.com/jenssegers/laravel-mongodb#eloquent). + - Enter the Workspace Container. + - Migrate the Database `php artisan migrate`. @@ -842,20 +791,16 @@ More details about this [here](https://github.com/jenssegers/laravel-mongodb#ins
## Use PhpMyAdmin +1. Run the phpMyAdmin Container (`phpmyadmin`) with the `docker-compose up` command. + ```bash + # use with mysql + docker-compose up -d mysql phpmyadmin -1 - Run the phpMyAdmin Container (`phpmyadmin`) with the `docker-compose up` command. Example: - -```bash -# use with mysql -docker-compose up -d mysql phpmyadmin - -# use with mariadb -docker-compose up -d mariadb phpmyadmin -``` - -*Note: To use with MariaDB, open `.env` and set `PMA_DB_ENGINE=mysql` to `PMA_DB_ENGINE=mariadb`.* - -2 - Open your browser and visit the localhost on port **8080**: `http://localhost:8080` + # use with mariadb + docker-compose up -d mariadb phpmyadmin + ``` + *Note: To use with MariaDB, open `.env` and set `PMA_DB_ENGINE=mysql` to `PMA_DB_ENGINE=mariadb`.* +2. Open your browser and visit the localhost on port **8080**: `http://localhost:8080` @@ -865,15 +810,11 @@ docker-compose up -d mariadb phpmyadmin
## Use Gitlab - -1 - Run the Gitlab Container (`gitlab`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d gitlab -``` - -2 - Open your browser and visit the localhost on port **8989**: `http://localhost:8989` -
+1. Run the Gitlab Container (`gitlab`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d gitlab + ``` +2. Open your browser and visit the localhost on port **8989**: `http://localhost:8989` *Note: You may change GITLAB_DOMAIN_NAME to your own domain name like `http://gitlab.example.com` default is `http://localhost`* @@ -884,58 +825,48 @@ docker-compose up -d gitlab
## Use Gitlab Runner +1. Retrieve the registration token in your gitlab project (Settings > CI / CD > Runners > Set up a specific Runner manually) +2. Open the `.env` file and set the following changes: + ``` + # so that gitlab container will pass the correct domain to gitlab-runner container + GITLAB_DOMAIN_NAME=http://gitlab -1 - Retrieve the registration token in your gitlab project (Settings > CI / CD > Runners > Set up a specific Runner manually) + GITLAB_RUNNER_REGISTRATION_TOKEN= -2 - Open the `.env` file and set the following changes: -``` -# so that gitlab container will pass the correct domain to gitlab-runner container -GITLAB_DOMAIN_NAME=http://gitlab + # so that gitlab-runner container will send POST request for registration to correct domain + GITLAB_CI_SERVER_URL=http://gitlab + ``` +3. Open the `docker-compose.yml` file and add the following changes: + ```yml + gitlab-runner: + environment: # these values will be used during `gitlab-runner register` + - RUNNER_EXECUTOR=docker # change from shell (default) + - DOCKER_IMAGE=alpine + - DOCKER_NETWORK_MODE=laradock_backend + networks: + - backend # connect to network where gitlab service is connected + ``` +4. Run the Gitlab-Runner Container (`gitlab-runner`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d gitlab-runner + ``` +5. Register the gitlab-runner to the gitlab container + ```bash + docker-compose exec gitlab-runner bash + gitlab-runner register + ``` -GITLAB_RUNNER_REGISTRATION_TOKEN= - -# so that gitlab-runner container will send POST request for registration to correct domain -GITLAB_CI_SERVER_URL=http://gitlab -``` - -3 - Open the `docker-compose.yml` file and add the following changes: -```yml - gitlab-runner: - environment: # these values will be used during `gitlab-runner register` - - RUNNER_EXECUTOR=docker # change from shell (default) - - DOCKER_IMAGE=alpine - - DOCKER_NETWORK_MODE=laradock_backend - networks: - - backend # connect to network where gitlab service is connected -``` - -4 - Run the Gitlab-Runner Container (`gitlab-runner`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d gitlab-runner -``` - -5 - Register the gitlab-runner to the gitlab container - -```bash -docker-compose exec gitlab-runner bash -gitlab-runner register -``` - -6 - Create a `.gitlab-ci.yml` file for your pipeline - -```yml -before_script: - - echo Hello! - -job1: - scripts: - - echo job1 -``` - -7 - Push changes to gitlab - -8 - Verify that pipeline is run successful +6. Create a `.gitlab-ci.yml` file for your pipeline + ```yml + before_script: + - echo Hello! + + job1: + scripts: + - echo job1 + ``` +7. Push changes to gitlab +8. Verify that pipeline is run successful @@ -945,14 +876,11 @@ job1:
## Use Adminer - -1 - Run the Adminer Container (`adminer`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d adminer -``` - -2 - Open your browser and visit the localhost on port **8080**: `http://localhost:8080` +1. Run the Adminer Container (`adminer`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d adminer + ``` +2. Open your browser and visit the localhost on port **8080**: `http://localhost:8080` **Note:** We've locked Adminer to version 4.3.0 as at the time of writing [it contained a major bug](https://sourceforge.net/p/adminer/bugs-and-features/548/) preventing PostgreSQL users from logging in. If that bug is fixed (or if you're not using PostgreSQL) feel free to set Adminer to the latest version within [the Dockerfile](https://github.com/laradock/laradock/blob/master/adminer/Dockerfile#L1): `FROM adminer:latest` @@ -964,14 +892,11 @@ docker-compose up -d adminer
## Use Portainer - -1 - Run the Portainer Container (`portainer`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d portainer -``` - -2 - Open your browser and visit the localhost on port **9010**: `http://localhost:9010` +1. Run the Portainer Container (`portainer`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d portainer + ``` +2. Open your browser and visit the localhost on port **9010**: `http://localhost:9010` @@ -981,21 +906,14 @@ docker-compose up -d portainer
## Use PgAdmin - -1 - Run the pgAdmin Container (`pgadmin`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d postgres pgadmin -``` - -2 - Open your browser and visit the localhost on port **5050**: `http://localhost:5050` - - -3 - At login page use default credentials: - -Username : pgadmin4@pgadmin.org - -Password : admin +1. Run the pgAdmin Container (`pgadmin`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d postgres pgadmin + ``` +2. Open your browser and visit the localhost on port **5050**: `http://localhost:5050` +3. At login page use default credentials: + Username : pgadmin4@pgadmin.org + Password : admin @@ -1004,53 +922,38 @@ Password : admin
## Use Beanstalkd +1. Run the Beanstalkd Container: + ```bash + docker-compose up -d beanstalkd + ``` +2. Configure Laravel to connect to that container by editing the `config/queue.php` config file. + * first set `beanstalkd` as default queue driver + * set the queue host to beanstalkd : `QUEUE_HOST=beanstalkd` + *beanstalkd is now available on default port `11300`.* +3. Require the dependency package [pda/pheanstalk](https://github.com/pda/pheanstalk) using composer. + Optionally you can use the Beanstalkd Console Container to manage your Queues from a web interface. + * Run the Beanstalkd Console Container: + ```bash + docker-compose up -d beanstalkd-console + ``` + * Open your browser and visit `http://localhost:2080/` + _Note: You can customize the port on which beanstalkd console is listening by changing `BEANSTALKD_CONSOLE_HOST_PORT` in `.env`. The default value is *2080*._ -1 - Run the Beanstalkd Container: + * Add the server + - Host: beanstalkd + - Port: 11300 +4. Done -```bash -docker-compose up -d beanstalkd -``` - -2 - Configure Laravel to connect to that container by editing the `config/queue.php` config file. - -a. first set `beanstalkd` as default queue driver -b. set the queue host to beanstalkd : `QUEUE_HOST=beanstalkd` - -*beanstalkd is now available on default port `11300`.* - -3 - Require the dependency package [pda/pheanstalk](https://github.com/pda/pheanstalk) using composer. - - -Optionally you can use the Beanstalkd Console Container to manage your Queues from a web interface. - -1 - Run the Beanstalkd Console Container: - -```bash -docker-compose up -d beanstalkd-console -``` - -2 - Open your browser and visit `http://localhost:2080/` - -_Note: You can customize the port on which beanstalkd console is listening by changing `BEANSTALKD_CONSOLE_HOST_PORT` in `.env`. The default value is *2080*._ - -3 - Add the server - -- Host: beanstalkd -- Port: 11300 - -4 - Done.
## Use Confluence - -1 - Run the Confluence Container (`confluence`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d confluence -``` +1. Run the Confluence Container (`confluence`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d confluence + ``` 2 - Open your browser and visit the localhost on port **8090**: `http://localhost:8090` @@ -1073,18 +976,14 @@ docker-compose up -d elasticsearch > The default username is `elastic` and the default password is `changeme`. ### Install ElasticSearch Plugin - -1 - Install an ElasticSearch plugin. - -```bash -docker-compose exec elasticsearch /usr/share/elasticsearch/bin/plugin install {plugin-name} -``` - -2 - Restart elasticsearch container - -```bash -docker-compose restart elasticsearch -``` +1. Install an ElasticSearch plugin. + ```bash + docker-compose exec elasticsearch /usr/share/elasticsearch/bin/plugin install {plugin-name} + ``` +2. Restart elasticsearch container + ```bash + docker-compose restart elasticsearch + ``` @@ -1094,14 +993,11 @@ docker-compose restart elasticsearch
## Use Selenium - -1 - Run the Selenium Container (`selenium`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d selenium -``` - -2 - Open your browser and visit the localhost on port **4444** at the following URL: `http://localhost:4444/wd/hub` +1. Run the Selenium Container (`selenium`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d selenium + ``` +2. Open your browser and visit the localhost on port **4444** at the following URL: `http://localhost:4444/wd/hub` @@ -1115,38 +1011,35 @@ docker-compose up -d selenium The RethinkDB is an open-source Database for Real-time Web ([RethinkDB](https://rethinkdb.com/)). A package ([Laravel RethinkDB](https://github.com/duxet/laravel-rethinkdb)) is being developed and was released a version for Laravel 5.2 (experimental). -1 - Run the RethinkDB Container (`rethinkdb`) with the `docker-compose up` command. +1. Run the RethinkDB Container (`rethinkdb`) with the `docker-compose up` command. + ```bash + docker-compose up -d rethinkdb + ``` -```bash -docker-compose up -d rethinkdb -``` +2. Access the RethinkDB Administration Console [http://localhost:8090/#tables](http://localhost:8090/#tables) for create a database called `database`. -2 - Access the RethinkDB Administration Console [http://localhost:8090/#tables](http://localhost:8090/#tables) for create a database called `database`. +3. Add the RethinkDB configurations to the `config/database.php` configuration file: + ```php + 'connections' => [ + + 'rethinkdb' => [ + 'name' => 'rethinkdb', + 'driver' => 'rethinkdb', + 'host' => env('DB_HOST', 'rethinkdb'), + 'port' => env('DB_PORT', 28015), + 'database' => env('DB_DATABASE', 'test'), + ] + + // ... + + ], + ``` -3 - Add the RethinkDB configurations to the `config/database.php` configuration file: - -```php -'connections' => [ - - 'rethinkdb' => [ - 'name' => 'rethinkdb', - 'driver' => 'rethinkdb', - 'host' => env('DB_HOST', 'rethinkdb'), - 'port' => env('DB_PORT', 28015), - 'database' => env('DB_DATABASE', 'test'), - ] - - // ... - -], -``` - -4 - Open your Laravel's `.env` file and update the following variables: - -- set the `DB_CONNECTION` to your `rethinkdb`. -- set the `DB_HOST` to `rethinkdb`. -- set the `DB_PORT` to `28015`. -- set the `DB_DATABASE` to `database`. +4. Open your Laravel's `.env` file and update the following variables: + - set the `DB_CONNECTION` to your `rethinkdb`. + - set the `DB_HOST` to `rethinkdb`. + - set the `DB_PORT` to `28015`. + - set the `DB_DATABASE` to `database`. #### Additional Notes @@ -1157,32 +1050,26 @@ docker-compose up -d rethinkdb
## Use Minio - -1 - Configure Minio: - - On the workspace container, change `INSTALL_MC` to true to get the client - - Set `MINIO_ACCESS_KEY` and `MINIO_ACCESS_SECRET` if you wish to set proper keys - -2 - Run the Minio Container (`minio`) with the `docker-compose up` command. Example: - -```bash -docker-compose up -d minio -``` - -3 - Open your browser and visit the localhost on port **9000** at the following URL: `http://localhost:9000` - -4 - Create a bucket either through the webui or using the mc client: - ```bash - mc mb minio/bucket - ``` - -5 - When configuring your other clients use the following details: - ``` - S3_HOST=http://minio - S3_KEY=access - S3_SECRET=secretkey - S3_REGION=us-east-1 - S3_BUCKET=bucket - ``` +1. Configure Minio: + - On the workspace container, change `INSTALL_MC` to true to get the client + - Set `MINIO_ACCESS_KEY` and `MINIO_ACCESS_SECRET` if you wish to set proper keys +2. Run the Minio Container (`minio`) with the `docker-compose up` command. Example: + ```bash + docker-compose up -d minio + ``` +3. Open your browser and visit the localhost on port **9000** at the following URL: `http://localhost:9000` +4. Create a bucket either through the webui or using the mc client: + ```bash + mc mb minio/bucket + ``` +5. When configuring your other clients use the following details: + ``` + S3_HOST=http://minio + S3_KEY=access + S3_SECRET=secretkey + S3_REGION=us-east-1 + S3_BUCKET=bucket + ``` From 980a4aa9ad9cfd0bb7bb7d3c86ce805c7ca654b9 Mon Sep 17 00:00:00 2001 From: Pratik Khanolkar Date: Sat, 2 May 2020 04:14:15 +0000 Subject: [PATCH 011/372] Docker files updated docker-neo4j-publish --- neo4j/.sentinel | 0 neo4j/Dockerfile | 52 ++- neo4j/docker-entrypoint.sh | 484 +++++++++++++++++++++ neo4j/local-package/.sentinel | 0 neo4j/local-package/neo4jlabs-plugins.json | 37 ++ 5 files changed, 569 insertions(+), 4 deletions(-) create mode 100644 neo4j/.sentinel create mode 100755 neo4j/docker-entrypoint.sh create mode 100644 neo4j/local-package/.sentinel create mode 100644 neo4j/local-package/neo4jlabs-plugins.json diff --git a/neo4j/.sentinel b/neo4j/.sentinel new file mode 100644 index 00000000..e69de29b diff --git a/neo4j/Dockerfile b/neo4j/Dockerfile index 112af5cd..de412e77 100644 --- a/neo4j/Dockerfile +++ b/neo4j/Dockerfile @@ -1,7 +1,51 @@ -FROM tpires/neo4j +FROM openjdk:8-jre-slim -LABEL maintainer="Mahmoud Zalt " +ENV NEO4J_SHA256=1c8b6ac0ffd346f0707fe1af713ef74f1c6ce1ea6feb5e9a0bd170e7a8a34a10 \ + NEO4J_TARBALL=neo4j-community-3.5.17-unix.tar.gz \ + NEO4J_EDITION=community \ + NEO4J_HOME="/var/lib/neo4j" \ + TINI_VERSION="v0.18.0" \ + TINI_SHA256="12d20136605531b09a2c2dac02ccee85e1b874eb322ef6baf7561cd93f93c855" +ARG NEO4J_URI=https://dist.neo4j.org/neo4j-community-3.5.17-unix.tar.gz -VOLUME /var/lib/neo4j/data +RUN addgroup --system neo4j && adduser --system --no-create-home --home "${NEO4J_HOME}" --ingroup neo4j neo4j -EXPOSE 7474 1337 +COPY ./local-package/* /tmp/ + +RUN apt update \ + && apt install -y curl wget gosu jq \ + && curl -L --fail --silent --show-error "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini" > /sbin/tini \ + && echo "${TINI_SHA256} /sbin/tini" | sha256sum -c --strict --quiet \ + && chmod +x /sbin/tini \ + && curl --fail --silent --show-error --location --remote-name ${NEO4J_URI} \ + && echo "${NEO4J_SHA256} ${NEO4J_TARBALL}" | sha256sum -c --strict --quiet \ + && tar --extract --file ${NEO4J_TARBALL} --directory /var/lib \ + && mv /var/lib/neo4j-* "${NEO4J_HOME}" \ + && rm ${NEO4J_TARBALL} \ + && mv "${NEO4J_HOME}"/data /data \ + && mv "${NEO4J_HOME}"/logs /logs \ + && chown -R neo4j:neo4j /data \ + && chmod -R 777 /data \ + && chown -R neo4j:neo4j /logs \ + && chmod -R 777 /logs \ + && chown -R neo4j:neo4j "${NEO4J_HOME}" \ + && chmod -R 777 "${NEO4J_HOME}" \ + && ln -s /data "${NEO4J_HOME}"/data \ + && ln -s /logs "${NEO4J_HOME}"/logs \ + && mv /tmp/neo4jlabs-plugins.json /neo4jlabs-plugins.json \ + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + && apt-get -y purge --auto-remove curl + +ENV PATH "${NEO4J_HOME}"/bin:$PATH + +WORKDIR "${NEO4J_HOME}" + +VOLUME /data /logs + +COPY docker-entrypoint.sh /docker-entrypoint.sh + +EXPOSE 7474 7473 7687 + +ENTRYPOINT ["/sbin/tini", "-g", "--", "/docker-entrypoint.sh"] +CMD ["neo4j"] diff --git a/neo4j/docker-entrypoint.sh b/neo4j/docker-entrypoint.sh new file mode 100755 index 00000000..fd83c042 --- /dev/null +++ b/neo4j/docker-entrypoint.sh @@ -0,0 +1,484 @@ +#!/bin/bash -eu + +cmd="$1" + +function running_as_root +{ + test "$(id -u)" = "0" +} + +function secure_mode_enabled +{ + test "${SECURE_FILE_PERMISSIONS:=no}" = "yes" +} + +function containsElement +{ + local e match="$1" + shift + for e; do [[ "$e" == "$match" ]] && return 0; done + return 1 +} + +function is_readable +{ + # this code is fairly ugly but works no matter who this script is running as. + # It would be nice if the writability tests could use this logic somehow. + local _file=${1} + perm=$(stat -c %a "${_file}") + + # everyone permission + if [[ ${perm:2:1} -ge 4 ]]; then + return 0 + fi + # owner permissions + if [[ ${perm:0:1} -ge 4 ]]; then + if [[ "$(stat -c %U ${_file})" = "${userid}" ]] || [[ "$(stat -c %u ${_file})" = "${userid}" ]]; then + return 0 + fi + fi + # group permissions + if [[ ${perm:1:1} -ge 4 ]]; then + if containsElement "$(stat -c %g ${_file})" "${groups[@]}" || containsElement "$(stat -c %G ${_file})" "${groups[@]}" ; then + return 0 + fi + fi + return 1 +} + +function is_writable +{ + # It would be nice if this and the is_readable function could combine somehow + local _file=${1} + perm=$(stat -c %a "${_file}") + + # everyone permission + if containsElement ${perm:2:1} 2 3 6 7; then + return 0 + fi + # owner permissions + if containsElement ${perm:0:1} 2 3 6 7; then + if [[ "$(stat -c %U ${_file})" = "${userid}" ]] || [[ "$(stat -c %u ${_file})" = "${userid}" ]]; then + return 0 + fi + fi + # group permissions + if containsElement ${perm:1:1} 2 3 6 7; then + if containsElement "$(stat -c %g ${_file})" "${groups[@]}" || containsElement "$(stat -c %G ${_file})" "${groups[@]}" ; then + return 0 + fi + fi + return 1 +} + + +function print_permissions_advice_and_fail +{ + _directory=${1} + echo >&2 " +Folder ${_directory} is not accessible for user: ${userid} or group ${groupid} or groups ${groups[@]}, this is commonly a file permissions issue on the mounted folder. + +Hints to solve the issue: +1) Make sure the folder exists before mounting it. Docker will create the folder using root permissions before starting the Neo4j container. The root permissions disallow Neo4j from writing to the mounted folder. +2) Pass the folder owner's user ID and group ID to docker run, so that docker runs as that user. +If the folder is owned by the current user, this can be done by adding this flag to your docker run command: + --user=\$(id -u):\$(id -g) + " + exit 1 +} + +function check_mounted_folder_readable +{ + local _directory=${1} + if ! is_readable "${_directory}"; then + print_permissions_advice_and_fail "${_directory}" + fi +} + +function check_mounted_folder_with_chown +{ +# The /data and /log directory are a bit different because they are very likely to be mounted by the user but not +# necessarily writable. +# This depends on whether a user ID is passed to the container and which folders are mounted. +# +# No user ID passed to container: +# 1) No folders are mounted. +# The /data and /log folder are owned by neo4j by default, so should be writable already. +# 2) Both /log and /data are mounted. +# This means on start up, /data and /logs are owned by an unknown user and we should chown them to neo4j for +# backwards compatibility. +# +# User ID passed to container: +# 1) Both /data and /logs are mounted +# The /data and /logs folders are owned by an unknown user but we *should* have rw permission to them. +# That should be verified and error (helpfully) if not. +# 2) User mounts /data or /logs *but not both* +# The unmounted folder is still owned by neo4j, which should already be writable. The mounted folder should +# have rw permissions through user id. This should be verified. +# 3) No folders are mounted. +# The /data and /log folder are owned by neo4j by default, and these are already writable by the user. +# (This is a very unlikely use case). + + local mountFolder=${1} + if running_as_root; then + if ! is_writable "${mountFolder}" && ! secure_mode_enabled; then + # warn that we're about to chown the folder and then chown it + echo "Warning: Folder mounted to \"${mountFolder}\" is not writable from inside container. Changing folder owner to ${userid}." + chown -R "${userid}":"${groupid}" "${mountFolder}" + fi + else + if [[ ! -w "${mountFolder}" ]] && [[ "$(stat -c %U ${mountFolder})" != "neo4j" ]]; then + print_permissions_advice_and_fail "${mountFolder}" + fi + fi +} + +function load_plugin_from_github +{ + # Load a plugin at runtime. The provided github repository must have a versions.json on the master branch with the + # correct format. + local _plugin_name="${1}" #e.g. apoc, graph-algorithms, graph-ql + + local _plugins_dir="${NEO4J_HOME}/plugins" + if [ -d /plugins ]; then + local _plugins_dir="/plugins" + fi + local _versions_json_url="$(jq --raw-output "with_entries( select(.key==\"${_plugin_name}\") ) | to_entries[] | .value.versions" /neo4jlabs-plugins.json )" + # Using the same name for the plugin irrespective of version ensures we don't end up with different versions of the same plugin + local _destination="${_plugins_dir}/${_plugin_name}.jar" + local _neo4j_version="$(neo4j --version | cut -d' ' -f2)" + + # Now we call out to github to get the versions.json for this plugin and we parse that to find the url for the correct plugin jar for our neo4j version + echo "Fetching versions.json for Plugin '${_plugin_name}' from ${_versions_json_url}" + local _versions_json="$(wget -q --timeout 300 --tries 30 -O - "${_versions_json_url}")" + local _plugin_jar_url="$(echo "${_versions_json}" | jq --raw-output ".[] | select(.neo4j==\"${_neo4j_version}\") | .jar")" + if [[ -z "${_plugin_jar_url}" ]]; then + echo >&2 "Error: No jar URL found for version '${_neo4j_version}' in versions.json from '${_versions_json_url}'" + echo >&2 "${_versions_json}" + exit 1 + fi + echo "Installing Plugin '${_plugin_name}' from ${_plugin_jar_url} to ${_destination} " + wget -q --timeout 300 --tries 30 --output-document="${_destination}" "${_plugin_jar_url}" + + if ! is_readable "${_destination}"; then + echo >&2 "Plugin at '${_destination}' is not readable" + exit 1 + fi +} + +function apply_plugin_default_configuration +{ + # Set the correct Load a plugin at runtime. The provided github repository must have a versions.json on the master branch with the + # correct format. + local _plugin_name="${1}" #e.g. apoc, graph-algorithms, graph-ql + local _reference_conf="${2}" # used to determine if we can override properties + local _neo4j_conf="${NEO4J_HOME}/conf/neo4j.conf" + + local _property _value + echo "Applying default values for plugin ${_plugin_name} to neo4j.conf" + for _entry in $(jq --compact-output --raw-output "with_entries( select(.key==\"${_plugin_name}\") ) | to_entries[] | .value.properties | to_entries[]" /neo4jlabs-plugins.json); do + _property="$(jq --raw-output '.key' <<< "${_entry}")" + _value="$(jq --raw-output '.value' <<< "${_entry}")" + + # the first grep strips out comments + if grep -o "^[^#]*" "${_reference_conf}" | grep -q --fixed-strings "${_property}=" ; then + # property is already set in the user provided config. In this case we don't override what has been set explicitly by the user. + echo "Skipping ${_property} for plugin ${_plugin_name} because it is already set" + else + if grep -o "^[^#]*" "${_neo4j_conf}" | grep -q --fixed-strings "${_property}=" ; then + sed --in-place "s/${_property}=/&${_value},/" "${_neo4j_conf}" + else + echo "${_property}=${_value}" >> "${_neo4j_conf}" + fi + fi + done +} + +function install_neo4j_labs_plugins +{ + # We store a copy of the config before we modify it for the plugins to allow us to see if there are user-set values in the input config that we shouldn't override + local _old_config="$(mktemp)" + cp "${NEO4J_HOME}"/conf/neo4j.conf "${_old_config}" + for plugin_name in $(echo "${NEO4JLABS_PLUGINS}" | jq --raw-output '.[]'); do + load_plugin_from_github "${plugin_name}" + apply_plugin_default_configuration "${plugin_name}" "${_old_config}" + done + rm "${_old_config}" +} + +# If we're running as root, then run as the neo4j user. Otherwise +# docker is running with --user and we simply use that user. Note +# that su-exec, despite its name, does not replicate the functionality +# of exec, so we need to use both +if running_as_root; then + userid="neo4j" + groupid="neo4j" + groups=($(id -G neo4j)) + exec_cmd="exec gosu neo4j:neo4j" +else + userid="$(id -u)" + groupid="$(id -g)" + groups=($(id -G)) + exec_cmd="exec" +fi +readonly userid +readonly groupid +readonly groups +readonly exec_cmd + + +# Need to chown the home directory - but a user might have mounted a +# volume here (notably a conf volume). So take care not to chown +# volumes (stuff not owned by neo4j) +if running_as_root; then + # Non-recursive chown for the base directory + chown "${userid}":"${groupid}" "${NEO4J_HOME}" + chmod 700 "${NEO4J_HOME}" + find "${NEO4J_HOME}" -mindepth 1 -maxdepth 1 -user root -type d -exec chown -R ${userid}:${groupid} {} \; + find "${NEO4J_HOME}" -mindepth 1 -maxdepth 1 -type d -exec chmod -R 700 {} \; +fi + +# Only prompt for license agreement if command contains "neo4j" in it +if [[ "${cmd}" == *"neo4j"* ]]; then + if [ "${NEO4J_EDITION}" == "enterprise" ]; then + if [ "${NEO4J_ACCEPT_LICENSE_AGREEMENT:=no}" != "yes" ]; then + echo >&2 " +In order to use Neo4j Enterprise Edition you must accept the license agreement. + +(c) Neo4j Sweden AB. 2019. All Rights Reserved. +Use of this Software without a proper commercial license with Neo4j, +Inc. or its affiliates is prohibited. + +Email inquiries can be directed to: licensing@neo4j.com + +More information is also available at: https://neo4j.com/licensing/ + + +To accept the license agreement set the environment variable +NEO4J_ACCEPT_LICENSE_AGREEMENT=yes + +To do this you can use the following docker argument: + + --env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes +" + exit 1 + fi + fi +fi + +# Env variable naming convention: +# - prefix NEO4J_ +# - double underscore char '__' instead of single underscore '_' char in the setting name +# - underscore char '_' instead of dot '.' char in the setting name +# Example: +# NEO4J_dbms_tx__log_rotation_retention__policy env variable to set +# dbms.tx_log.rotation.retention_policy setting + +# Backward compatibility - map old hardcoded env variables into new naming convention (if they aren't set already) +# Set some to default values if unset +: ${NEO4J_dbms_tx__log_rotation_retention__policy:=${NEO4J_dbms_txLog_rotation_retentionPolicy:-"100M size"}} +: ${NEO4J_wrapper_java_additional:=${NEO4J_UDC_SOURCE:-"-Dneo4j.ext.udc.source=docker"}} +: ${NEO4J_dbms_unmanaged__extension__classes:=${NEO4J_dbms_unmanagedExtensionClasses:-}} +: ${NEO4J_dbms_allow__format__migration:=${NEO4J_dbms_allowFormatMigration:-}} +: ${NEO4J_dbms_connectors_default__advertised__address:=${NEO4J_dbms_connectors_defaultAdvertisedAddress:-}} + +if [ "${NEO4J_EDITION}" == "enterprise" ]; + then + : ${NEO4J_causal__clustering_expected__core__cluster__size:=${NEO4J_causalClustering_expectedCoreClusterSize:-}} + : ${NEO4J_causal__clustering_initial__discovery__members:=${NEO4J_causalClustering_initialDiscoveryMembers:-}} + : ${NEO4J_causal__clustering_discovery__advertised__address:=${NEO4J_causalClustering_discoveryAdvertisedAddress:-"$(hostname):5000"}} + : ${NEO4J_causal__clustering_transaction__advertised__address:=${NEO4J_causalClustering_transactionAdvertisedAddress:-"$(hostname):6000"}} + : ${NEO4J_causal__clustering_raft__advertised__address:=${NEO4J_causalClustering_raftAdvertisedAddress:-"$(hostname):7000"}} + # Custom settings for dockerized neo4j + : ${NEO4J_causal__clustering_discovery__advertised__address:=$(hostname):5000} + : ${NEO4J_causal__clustering_transaction__advertised__address:=$(hostname):6000} + : ${NEO4J_causal__clustering_raft__advertised__address:=$(hostname):7000} +fi + +# unset old hardcoded unsupported env variables +unset NEO4J_dbms_txLog_rotation_retentionPolicy NEO4J_UDC_SOURCE \ + NEO4J_dbms_unmanagedExtensionClasses NEO4J_dbms_allowFormatMigration \ + NEO4J_dbms_connectors_defaultAdvertisedAddress NEO4J_ha_serverId \ + NEO4J_ha_initialHosts NEO4J_causalClustering_expectedCoreClusterSize \ + NEO4J_causalClustering_initialDiscoveryMembers \ + NEO4J_causalClustering_discoveryListenAddress \ + NEO4J_causalClustering_discoveryAdvertisedAddress \ + NEO4J_causalClustering_transactionListenAddress \ + NEO4J_causalClustering_transactionAdvertisedAddress \ + NEO4J_causalClustering_raftListenAddress \ + NEO4J_causalClustering_raftAdvertisedAddress + +if [ -d /conf ]; then + if secure_mode_enabled; then + check_mounted_folder_readable "/conf" + fi + find /conf -type f -exec cp {} "${NEO4J_HOME}"/conf \; +fi + +if [ -d /ssl ]; then + if secure_mode_enabled; then + check_mounted_folder_readable "/ssl" + fi + : ${NEO4J_dbms_directories_certificates:="/ssl"} +fi + +if [ -d /plugins ]; then + if secure_mode_enabled; then + if [[ ! -z "${NEO4JLABS_PLUGINS:-}" ]]; then + # We need write permissions + check_mounted_folder_with_chown "/plugins" + fi + check_mounted_folder_readable "/plugins" + fi + : ${NEO4J_dbms_directories_plugins:="/plugins"} +fi + +if [ -d /import ]; then + if secure_mode_enabled; then + check_mounted_folder_readable "/import" + fi + : ${NEO4J_dbms_directories_import:="/import"} +fi + +if [ -d /metrics ]; then + if secure_mode_enabled; then + check_mounted_folder_readable "/metrics" + fi + : ${NEO4J_dbms_directories_metrics:="/metrics"} +fi + +if [ -d /logs ]; then + check_mounted_folder_with_chown "/logs" + : ${NEO4J_dbms_directories_logs:="/logs"} +fi + +if [ -d /data ]; then + check_mounted_folder_with_chown "/data" + if [ -d /data/databases ]; then + check_mounted_folder_with_chown "/data/databases" + fi + if [ -d /data/dbms ]; then + check_mounted_folder_with_chown "/data/dbms" + fi +fi + + +# set the neo4j initial password only if you run the database server +if [ "${cmd}" == "neo4j" ]; then + if [ "${NEO4J_AUTH:-}" == "none" ]; then + NEO4J_dbms_security_auth__enabled=false + elif [[ "${NEO4J_AUTH:-}" == neo4j/* ]]; then + password="${NEO4J_AUTH#neo4j/}" + if [ "${password}" == "neo4j" ]; then + echo >&2 "Invalid value for password. It cannot be 'neo4j', which is the default." + exit 1 + fi + + if running_as_root; then + # running set-initial-password as root will create subfolders to /data as root, causing startup fail when neo4j can't read or write the /data/dbms folder + # creating the folder first will avoid that + mkdir -p /data/dbms + chown "${userid}":"${groupid}" /data/dbms + fi + # Will exit with error if users already exist (and print a message explaining that) + # we probably don't want the message though, since it throws an error message on restarting the container. + neo4j-admin set-initial-password "${password}" 2>/dev/null || true + elif [ -n "${NEO4J_AUTH:-}" ]; then + echo >&2 "Invalid value for NEO4J_AUTH: '${NEO4J_AUTH}'" + exit 1 + fi +fi + +declare -A COMMUNITY +declare -A ENTERPRISE + +COMMUNITY=( + [dbms.tx_log.rotation.retention_policy]="100M size" + [dbms.memory.pagecache.size]="512M" + [dbms.connectors.default_listen_address]="0.0.0.0" + [dbms.connector.https.listen_address]="0.0.0.0:7473" + [dbms.connector.http.listen_address]="0.0.0.0:7474" + [dbms.connector.bolt.listen_address]="0.0.0.0:7687" +) + +ENTERPRISE=( + [causal_clustering.transaction_listen_address]="0.0.0.0:6000" + [causal_clustering.raft_listen_address]="0.0.0.0:7000" + [causal_clustering.discovery_listen_address]="0.0.0.0:5000" +) + +for conf in ${!COMMUNITY[@]} ; do + + if ! grep -q "^$conf" "${NEO4J_HOME}"/conf/neo4j.conf + then + echo -e "\n"$conf=${COMMUNITY[$conf]} >> "${NEO4J_HOME}"/conf/neo4j.conf + fi +done + +for conf in ${!ENTERPRISE[@]} ; do + + if [ "${NEO4J_EDITION}" == "enterprise" ]; + then + if ! grep -q "^$conf" "${NEO4J_HOME}"/conf/neo4j.conf + then + echo -e "\n"$conf=${ENTERPRISE[$conf]} >> "${NEO4J_HOME}"/conf/neo4j.conf + fi + fi +done + +#The udc.source=tarball should be replaced by udc.source=docker in both dbms.jvm.additional and wrapper.java.additional +#Using sed to replace only this part will allow the custom configs to be added after, separated by a ,. +if grep -q "udc.source=tarball" "${NEO4J_HOME}"/conf/neo4j.conf; then + sed -i -e 's/udc.source=tarball/udc.source=docker/g' "${NEO4J_HOME}"/conf/neo4j.conf +fi +#The udc.source should always be set to docker by default and we have to allow also custom configs to be added after that. +#In this case, this piece of code helps to add the default value and a , to support custom configs after. +if ! grep -q "dbms.jvm.additional=-Dunsupported.dbms.udc.source=docker" "${NEO4J_HOME}"/conf/neo4j.conf; then + sed -i -e 's/dbms.jvm.additional=/dbms.jvm.additional=-Dunsupported.dbms.udc.source=docker,/g' "${NEO4J_HOME}"/conf/neo4j.conf +fi + +# list env variables with prefix NEO4J_ and create settings from them +unset NEO4J_AUTH NEO4J_SHA256 NEO4J_TARBALL +for i in $( set | grep ^NEO4J_ | awk -F'=' '{print $1}' | sort -rn ); do + setting=$(echo ${i} | sed 's|^NEO4J_||' | sed 's|_|.|g' | sed 's|\.\.|_|g') + value=$(echo ${!i}) + # Don't allow settings with no value or settings that start with a number (neo4j converts settings to env variables and you cannot have an env variable that starts with a number) + if [[ -n ${value} ]]; then + if [[ ! "${setting}" =~ ^[0-9]+.*$ ]]; then + if grep -q -F "${setting}=" "${NEO4J_HOME}"/conf/neo4j.conf; then + # Remove any lines containing the setting already + sed --in-place "/^${setting}=.*/d" "${NEO4J_HOME}"/conf/neo4j.conf + fi + # Then always append setting to file + echo "${setting}=${value}" >> "${NEO4J_HOME}"/conf/neo4j.conf + else + echo >&2 "WARNING: ${setting} not written to conf file because settings that start with a number are not permitted" + fi + fi +done + + +if [[ ! -z "${NEO4JLABS_PLUGINS:-}" ]]; then + # NEO4JLABS_PLUGINS should be a json array of plugins like '["graph-algorithms", "apoc", "streams", "graphql"]' + install_neo4j_labs_plugins +fi + +[ -f "${EXTENSION_SCRIPT:-}" ] && . ${EXTENSION_SCRIPT} + +if [ "${cmd}" == "dump-config" ]; then + if ! is_writable "/conf"; then + print_permissions_advice_and_fail "/conf" + fi + cp --recursive "${NEO4J_HOME}"/conf/* /conf + echo "Config Dumped" + exit 0 +fi + +# Use su-exec to drop privileges to neo4j user +# Note that su-exec, despite its name, does not replicate the +# functionality of exec, so we need to use both +if [ "${cmd}" == "neo4j" ]; then + ${exec_cmd} neo4j console +else + ${exec_cmd} "$@" +fi \ No newline at end of file diff --git a/neo4j/local-package/.sentinel b/neo4j/local-package/.sentinel new file mode 100644 index 00000000..e69de29b diff --git a/neo4j/local-package/neo4jlabs-plugins.json b/neo4j/local-package/neo4jlabs-plugins.json new file mode 100644 index 00000000..83ecbc4f --- /dev/null +++ b/neo4j/local-package/neo4jlabs-plugins.json @@ -0,0 +1,37 @@ +{ + "apoc": { + "versions": "https://neo4j-contrib.github.io/neo4j-apoc-procedures/versions.json", + "properties": { + "dbms.security.procedures.unrestricted": "apoc.*" + } + }, + "streams": { + "versions": "https://neo4j-contrib.github.io/neo4j-streams/versions.json", + "properties": {} + }, + "graphql": { + "versions": "https://neo4j-graphql.github.io/neo4j-graphql/versions.json", + "properties": { + "dbms.unmanaged_extension_classes": "org.neo4j.graphql=/graphql", + "dbms.security.procedures.unrestricted": "graphql.*" + } + }, + "graph-algorithms": { + "versions": "https://neo4j-contrib.github.io/neo4j-graph-algorithms/versions.json", + "properties": { + "dbms.security.procedures.unrestricted":"algo.*" + } + }, + "n10s": { + "versions": "https://neo4j-labs.github.io/neosemantics/versions.json", + "properties": { + "dbms.security.procedures.unrestricted":"semantics.*" + } + }, + "_testing": { + "versions": "http://host.testcontainers.internal:3000/versions.json", + "properties": { + "dbms.security.procedures.unrestricted": "com.neo4j.docker.plugins.*" + } + } +} From d330d39a920619a06407497a3912bced93d50e78 Mon Sep 17 00:00:00 2001 From: Pratik Khanolkar Date: Sat, 2 May 2020 05:13:35 +0000 Subject: [PATCH 012/372] Editted neo4j compose.yml --- docker-compose.neo4j.yml | 10 ++++++++++ docker-compose.yml | 11 ++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 docker-compose.neo4j.yml diff --git a/docker-compose.neo4j.yml b/docker-compose.neo4j.yml new file mode 100644 index 00000000..81b124ca --- /dev/null +++ b/docker-compose.neo4j.yml @@ -0,0 +1,10 @@ + neo4j: + ports: + - '7401:7474' + - '7602:7687' + environment: + - NEO4J_AUTH=none + volumes: + - '/root/neo4j/data:/data' + - '/root/neo4j/logs:/logs' + image: 'neo4j:latest' diff --git a/docker-compose.yml b/docker-compose.yml index 3864bdec..81cab79e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -543,14 +543,15 @@ services: ### Neo4j ################################################ neo4j: - build: ./neo4j ports: - - "7474:7474" - - "1337:1337" + - '7401:7474' + - '7402:7687' environment: - - NEO4J_AUTH=default:secret + - NEO4J_AUTH=none volumes: - - ${DATA_PATH_HOST}/neo4j:/var/lib/neo4j/data + - ${DATA_PATH_HOST}/neo4j/data:/data + - ${DATA_PATH_HOST}/neo4j/logs:/logs + image: 'neo4j:latest' networks: - backend From 568683dbf8a844d002690105803ca7dd6dc03f01 Mon Sep 17 00:00:00 2001 From: Nathan Rzepecki Date: Sun, 6 Sep 2020 15:48:11 +0800 Subject: [PATCH 013/372] Remove the auth list. see the caddy docks if needed --- caddy/caddy/authlist.conf | 1 - 1 file changed, 1 deletion(-) delete mode 100644 caddy/caddy/authlist.conf diff --git a/caddy/caddy/authlist.conf b/caddy/caddy/authlist.conf deleted file mode 100644 index 651bf55e..00000000 --- a/caddy/caddy/authlist.conf +++ /dev/null @@ -1 +0,0 @@ -basicauth / laradock laradock From 283ea64fbf19c62ad710a9136f7ab1cc86208a27 Mon Sep 17 00:00:00 2001 From: Nathan Rzepecki Date: Sun, 6 Sep 2020 15:48:43 +0800 Subject: [PATCH 014/372] Update the Dockerfile to use the official caddy2 docker images --- caddy/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/caddy/Dockerfile b/caddy/Dockerfile index c9b74b70..e2af8fde 100644 --- a/caddy/Dockerfile +++ b/caddy/Dockerfile @@ -1,5 +1,5 @@ -FROM abiosoft/caddy:no-stats +FROM caddy/caddy:latest -CMD ["--conf", "/etc/caddy/Caddyfile", "--log", "stdout", "--agree=true"] +COPY ./caddy/Caddyfile /etc/caddy/Caddyfile -EXPOSE 80 443 2015 +EXPOSE 80 443 From 6a48af77304f7349ce4391cd06ba250d7187f1c2 Mon Sep 17 00:00:00 2001 From: Nathan Rzepecki Date: Sun, 6 Sep 2020 15:49:23 +0800 Subject: [PATCH 015/372] Update the Caddyfile to serve a simple https local environment --- caddy/caddy/Caddyfile | 54 +++++-------------------------------------- 1 file changed, 6 insertions(+), 48 deletions(-) diff --git a/caddy/caddy/Caddyfile b/caddy/caddy/Caddyfile index 1848d346..2fab010d 100644 --- a/caddy/caddy/Caddyfile +++ b/caddy/caddy/Caddyfile @@ -1,51 +1,9 @@ # Docs: https://caddyserver.com/docs/caddyfile -0.0.0.0:80 { - root /var/www/public - fastcgi / php-fpm:9000 php { - index index.php - } +laradock.test { + root * /var/www/public + php_fastcgi php-fpm:9000 + file_server - # To handle .html extensions with laravel change ext to - # ext / .html - - rewrite { - to {path} {path}/ /index.php?{query} - } - gzip - browse - log /var/log/caddy/access.log - errors /var/log/caddy/error.log - # Uncomment to enable TLS (HTTPS) - # Change the first list to listen on port 443 when enabling TLS - #tls self_signed - - # To use Lets encrpt tls with a DNS provider uncomment these - # lines and change the provider as required - #tls { - # dns cloudflare - #} + encode gzip + tls internal } - -laradock1.demo:80 { - root /var/www/public - # Create a Webhook in git. - #git { - #repo https://github.com/xxx/xxx - # path /home/xxx - # #interval 60 - # hook webhook laradock - # hook_type generic - #} - -} - -laradock2.demo:80 { - # Create a Proxy and cors. - #proxy domain.com - #cors -} - -laradock3.demo:80 { - import authlist.conf - root /var/www/public -} \ No newline at end of file From 31571056d70e813edb632d0c9f4717ac0fa00058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20P=C3=A9rez?= Date: Fri, 11 Sep 2020 21:23:41 -0300 Subject: [PATCH 016/372] Update laravel-horizon.conf.example. Adds logging Adds Laravel Horizon logging to storage/logs/horizon.log file --- laravel-horizon/supervisord.d/laravel-horizon.conf.example | 1 + 1 file changed, 1 insertion(+) diff --git a/laravel-horizon/supervisord.d/laravel-horizon.conf.example b/laravel-horizon/supervisord.d/laravel-horizon.conf.example index f664320a..4ac80b96 100644 --- a/laravel-horizon/supervisord.d/laravel-horizon.conf.example +++ b/laravel-horizon/supervisord.d/laravel-horizon.conf.example @@ -5,3 +5,4 @@ command=php /var/www/artisan horizon autostart=true autorestart=true redirect_stderr=true +stdout_logfile=/var/www/storage/logs/horizon.log From c966c59d99cfd373d852bc0c4dbb1fbda71a4a9b Mon Sep 17 00:00:00 2001 From: Nathan Heinrich Date: Thu, 24 Sep 2020 10:52:14 +1000 Subject: [PATCH 017/372] Fix xdebug config .so path so that xdebug start/xdebug stop works --- php-fpm/xdebug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/php-fpm/xdebug b/php-fpm/xdebug index 8adb807b..8e43202e 100755 --- a/php-fpm/xdebug +++ b/php-fpm/xdebug @@ -36,7 +36,7 @@ xdebug_start () # And uncomment line with xdebug extension, thus enabling it ON_CMD="sed -i 's/^;zend_extension=/zend_extension=/g' \ - /usr/local/etc/php/conf.d/xdebug.ini" + /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini" # If running on Windows, need to prepend with winpty :( @@ -58,7 +58,7 @@ xdebug_stop () echo 'Stop xDebug' # Comment out xdebug extension line - OFF_CMD="sed -i 's/^zend_extension=/;zend_extension=/g' /usr/local/etc/php/conf.d/xdebug.ini" + OFF_CMD="sed -i 's/^zend_extension=/;zend_extension=/g' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini" # If running on Windows, need to prepend with winpty :( From 842715b1d26229d732af04d37eeac02bce4fceb2 Mon Sep 17 00:00:00 2001 From: Alex Toff Date: Wed, 30 Sep 2020 12:09:16 +0100 Subject: [PATCH 018/372] feat: Mount .npmrc into workspace home --- workspace/.npmrc | 0 workspace/Dockerfile | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 workspace/.npmrc diff --git a/workspace/.npmrc b/workspace/.npmrc new file mode 100644 index 00000000..e69de29b diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 6d059bac..a0f0b0ca 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -734,6 +734,10 @@ RUN if [ ${NPM_REGISTRY} ]; then \ . ~/.bashrc && npm config set registry ${NPM_REGISTRY} \ ;fi +# Mount .npmrc into home folder +COPY ./.npmrc /root/.npmrc +COPY ./.npmrc /home/laradock/.npmrc + ########################################################################### # PNPM: From 42ac60933751d47c6228016c47a8b1e3f2507dd1 Mon Sep 17 00:00:00 2001 From: Alex Toff Date: Wed, 30 Sep 2020 12:19:27 +0100 Subject: [PATCH 019/372] docs: Add note in docs about npmrc --- DOCUMENTATION/content/documentation/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index cecfa396..d374714b 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -1887,6 +1887,7 @@ To install NVM and NodeJS in the Workspace container 3 - Re-build the container `docker-compose build workspace` +A `.npmrc` file is included in the `workspace` folder if you need to utilise this globally. This is copied automatically into the root and laradock user's folders on build.
From 191729fb328cac8f315a9ef22d12a10d29f0ec48 Mon Sep 17 00:00:00 2001 From: Damien PATOU Date: Wed, 7 Oct 2020 16:28:36 +0200 Subject: [PATCH 020/372] remove the 'tree' alias --- workspace/aliases.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/workspace/aliases.sh b/workspace/aliases.sh index 0bf50731..4bf0d572 100644 --- a/workspace/aliases.sh +++ b/workspace/aliases.sh @@ -87,7 +87,6 @@ alias npm-global="npm list -g --depth 0" alias ra="reload" alias reload="source ~/.aliases && echo \"$COL_GREEN ==> Aliases Reloaded... $COL_RESET \n \"" alias run="npm run" -alias tree="xtree" # Xvfb alias xvfb="Xvfb -ac :0 -screen 0 1024x768x16 &" From 67dde45d243c1af22768c685894d6cc7497d8f66 Mon Sep 17 00:00:00 2001 From: Dawid Makowski Date: Sat, 10 Oct 2020 22:39:43 +0800 Subject: [PATCH 021/372] Add BBC Audio Waveform Image Generator --- DOCUMENTATION/content/documentation/index.md | 21 +++++++++++++++ docker-compose.yml | 4 +++ env-example | 4 +++ laravel-horizon/Dockerfile | 27 ++++++++++++++++++++ php-fpm/Dockerfile | 24 +++++++++++++++++ php-worker/Dockerfile | 27 ++++++++++++++++++++ workspace/Dockerfile | 24 +++++++++++++++++ 7 files changed, 131 insertions(+) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index cecfa396..ad75e90e 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -2031,6 +2031,27 @@ To install FFMPEG in the Workspace container **PS** Don't forget to install the binary in the `php-fpm` container too by applying the same steps above to its container, otherwise you'll get an error when running the `php-ffmpeg` binary. +
+ +## Install BBC Audio Waveform Image Generator + +audiowaveform is a C++ command-line application that generates waveform data from either MP3, WAV, FLAC, or Ogg Vorbis format audio files. +Waveform data can be used to produce a visual rendering of the audio, similar in appearance to audio editing applications. +Waveform data files are saved in either binary format (.dat) or JSON (.json). + +To install BBC Audio Waveform Image Generator in the Workspace container + +1 - Open the `.env` file + +2 - Search for the `WORKSPACE_INSTALL_AUDIOWAVEFORM` argument under the Workspace Container and set it to `true` + +3 - Re-build the container `docker-compose build workspace` + +4 - If you use the `php-worker` or `laravel-horizon` container too, please follow the same steps above especially if you have processing that have been queued. + +**PS** Don't forget to install the binary in the `php-fpm` container too by applying the same steps above to its container, otherwise you'll get an error when running the `audiowaveform` binary. + +
## Install wkhtmltopdf diff --git a/docker-compose.yml b/docker-compose.yml index cb056aca..eabce3e4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -151,6 +151,7 @@ services: - INSTALL_POWERLINE=${WORKSPACE_INSTALL_POWERLINE} - INSTALL_SUPERVISOR=${WORKSPACE_INSTALL_SUPERVISOR} - INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG} + - INSTALL_AUDIOWAVEFORM=${WORKSPACE_INSTALL_AUDIOWAVEFORM} - INSTALL_WKHTMLTOPDF=${WORKSPACE_INSTALL_WKHTMLTOPDF} - INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL} - INSTALL_LNAV=${WORKSPACE_INSTALL_LNAV} @@ -245,6 +246,7 @@ services: - INSTALL_PCNTL=${PHP_FPM_INSTALL_PCNTL} - ADDITIONAL_LOCALES=${PHP_FPM_ADDITIONAL_LOCALES} - INSTALL_FFMPEG=${PHP_FPM_FFMPEG} + - INSTALL_AUDIOWAVEFORM=${PHP_FPM_AUDIOWAVEFORM} - INSTALL_WKHTMLTOPDF=${PHP_FPM_INSTALL_WKHTMLTOPDF} - INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF} - INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC} @@ -303,6 +305,7 @@ services: - INSTALL_SWOOLE=${PHP_WORKER_INSTALL_SWOOLE} - INSTALL_TAINT=${PHP_WORKER_INSTALL_TAINT} - INSTALL_FFMPEG=${PHP_WORKER_INSTALL_FFMPEG} + - INSTALL_AUDIOWAVEFORM=${PHP_WORKER_INSTALL_AUDIOWAVEFORM} - INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS} - INSTALL_IMAP=${PHP_WORKER_INSTALL_IMAP} - INSTALL_XMLRPC=${PHP_WORKER_INSTALL_XMLRPC} @@ -338,6 +341,7 @@ services: - INSTALL_PHPREDIS=${LARAVEL_HORIZON_INSTALL_PHPREDIS} - INSTALL_MONGO=${LARAVEL_HORIZON_INSTALL_MONGO} - INSTALL_FFMPEG=${LARAVEL_HORIZON_INSTALL_FFMPEG} + - INSTALL_AUDIOWAVEFORM=${LARAVEL_HORIZON_INSTALL_AUDIOWAVEFORM} - PUID=${LARAVEL_HORIZON_PUID} - PGID=${LARAVEL_HORIZON_PGID} volumes: diff --git a/env-example b/env-example index 0d4ebe6c..3b52a4b9 100644 --- a/env-example +++ b/env-example @@ -174,6 +174,7 @@ WORKSPACE_CHROME_DRIVER_VERSION=2.42 WORKSPACE_TIMEZONE=UTC WORKSPACE_SSH_PORT=2222 WORKSPACE_INSTALL_FFMPEG=false +WORKSPACE_INSTALL_AUDIOWAVEFORM=false WORKSPACE_INSTALL_WKHTMLTOPDF=false WORKSPACE_INSTALL_GNU_PARALLEL=false WORKSPACE_INSTALL_AST=true @@ -244,6 +245,7 @@ PHP_FPM_INSTALL_SSHPASS=false PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_WKHTMLTOPDF=false PHP_FPM_FFMPEG=false +PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" PHP_FPM_DEFAULT_LOCALE=POSIX @@ -269,6 +271,7 @@ PHP_WORKER_INSTALL_GHOSTSCRIPT=false PHP_WORKER_INSTALL_SWOOLE=false PHP_WORKER_INSTALL_TAINT=false PHP_WORKER_INSTALL_FFMPEG=false +PHP_WORKER_INSTALL_AUDIOWAVEFORM=false PHP_WORKER_INSTALL_CASSANDRA=false PHP_WORKER_INSTALL_GEARMAN=false PHP_WORKER_INSTALL_REDIS=false @@ -300,6 +303,7 @@ LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE=false LARAVEL_HORIZON_INSTALL_PHPREDIS=true LARAVEL_HORIZON_INSTALL_MONGO=false LARAVEL_HORIZON_INSTALL_FFMPEG=false +LARAVEL_HORIZON_INSTALL_AUDIOWAVEFORM=false LARAVEL_HORIZON_PGID=1000 LARAVEL_HORIZON_PUID=1000 diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 7e3cfa30..38b2a695 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -126,6 +126,33 @@ RUN if [ ${INSTALL_FFMPEG} = true ]; then \ apk add ffmpeg \ ;fi +# Install BBC Audio Waveform Image Generator: +ARG INSTALL_AUDIOWAVEFORM=false +RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ + apk add git make cmake gcc g++ libmad-dev libid3tag-dev libsndfile-dev gd-dev boost-dev libgd libpng-dev zlib-dev \ + && apk add autoconf automake libtool gettext \ + && wget https://github.com/xiph/flac/archive/1.3.3.tar.gz \ + && tar xzf 1.3.3.tar.gz \ + && cd flac-1.3.3 \ + && ./autogen.sh \ + && ./configure --enable-shared=no \ + && make \ + && make install \ + && cd .. \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ + && tar xzf release-1.10.0.tar.gz \ + && ln -s googletest-release-1.10.0/googletest googletest \ + && ln -s googletest-release-1.10.0/googlemock googlemock \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ +;fi + + # Install Cassandra drivers: ARG INSTALL_CASSANDRA=false RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d05426d3..1837b452 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -857,6 +857,30 @@ RUN if [ ${INSTALL_FFMPEG} = true ]; then \ apt-get -y install ffmpeg \ ;fi +########################################################################### +# BBC Audio Waveform Image Generator: +########################################################################### + +USER root + +ARG INSTALL_AUDIOWAVEFORM=false + +RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ + apt-get -y install git wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ + && tar xzf release-1.10.0.tar.gz \ + && ln -s googletest-release-1.10.0/googletest googletest \ + && ln -s googletest-release-1.10.0/googlemock googlemock \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ +;fi + + ##################################### # wkhtmltopdf: ##################################### diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 211dcb40..084e2dd2 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -168,6 +168,33 @@ RUN if [ ${INSTALL_FFMPEG} = true ]; then \ apk --update add ffmpeg \ ;fi +# Install BBC Audio Waveform Image Generator: +ARG INSTALL_AUDIOWAVEFORM=false +RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ + apk add git make cmake gcc g++ libmad-dev libid3tag-dev libsndfile-dev gd-dev boost-dev libgd libpng-dev zlib-dev \ + && apk add autoconf automake libtool gettext \ + && wget https://github.com/xiph/flac/archive/1.3.3.tar.gz \ + && tar xzf 1.3.3.tar.gz \ + && cd flac-1.3.3 \ + && ./autogen.sh \ + && ./configure --enable-shared=no \ + && make \ + && make install \ + && cd .. \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ + && tar xzf release-1.10.0.tar.gz \ + && ln -s googletest-release-1.10.0/googletest googletest \ + && ln -s googletest-release-1.10.0/googlemock googlemock \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ +;fi + + # Install AMQP: ARG INSTALL_AMQP=false diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 6d059bac..0043dd80 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1305,6 +1305,30 @@ RUN if [ ${INSTALL_FFMPEG} = true ]; then \ apt-get -y install ffmpeg \ ;fi + +########################################################################### +# BBC Audio Waveform Image Generator: +########################################################################### + +USER root + +ARG INSTALL_AUDIOWAVEFORM=false + +RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ + apt-get -y install git wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ + && tar xzf release-1.10.0.tar.gz \ + && ln -s googletest-release-1.10.0/googletest googletest \ + && ln -s googletest-release-1.10.0/googlemock googlemock \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ +;fi + ##################################### # wkhtmltopdf: ##################################### From f4951cb8f56114a7001e6aa6b5e626e05930b4f1 Mon Sep 17 00:00:00 2001 From: "DESK0253\\Leo" Date: Sat, 17 Oct 2020 00:06:52 +0800 Subject: [PATCH 022/372] feat: add ORACLE_INSTANT_CLIENT_MIRROR ARG --- env-example | 2 ++ php-fpm/Dockerfile | 5 +++-- workspace/Dockerfile | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/env-example b/env-example index 0d4ebe6c..f80d0f6c 100644 --- a/env-example +++ b/env-example @@ -76,6 +76,8 @@ COMPOSE_CONVERT_WINDOWS_PATHS=1 CHANGE_SOURCE=false # Set CHANGE_SOURCE and UBUNTU_SOURCE option if you want to change the Ubuntu system sources.list file. UBUNTU_SOURCE=aliyun +# Set ORACLE INSTANT_CLIENT_MIRROR option if you want to use Intranet improve download, you can download files first +ORACLE_INSTANT_CLIENT_MIRROR=http://192.168.0.42/downloads/oracle_instant_client/ ### Docker Sync ########################################### diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d05426d3..2eac938b 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -489,6 +489,7 @@ RUN set -xe; \ ########################################################################### ARG INSTALL_OCI8=false +ARG ORACLE_INSTANT_CLIENT_MIRROR=https://github.com/diogomascarenha/oracle-instantclient/raw/master/ ENV LD_LIBRARY_PATH="/opt/oracle/instantclient_12_1" ENV OCI_HOME="/opt/oracle/instantclient_12_1" @@ -502,8 +503,8 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ # Install Oracle Instantclient && mkdir /opt/oracle \ && cd /opt/oracle \ - && wget https://github.com/diogomascarenha/oracle-instantclient/raw/master/instantclient-basic-linux.x64-12.1.0.2.0.zip \ - && wget https://github.com/diogomascarenha/oracle-instantclient/raw/master/instantclient-sdk-linux.x64-12.1.0.2.0.zip \ + && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-basic-linux.x64-12.1.0.2.0.zip \ + && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-sdk-linux.x64-12.1.0.2.0.zip \ && unzip /opt/oracle/instantclient-basic-linux.x64-12.1.0.2.0.zip -d /opt/oracle \ && unzip /opt/oracle/instantclient-sdk-linux.x64-12.1.0.2.0.zip -d /opt/oracle \ && ln -s /opt/oracle/instantclient_12_1/libclntsh.so.12.1 /opt/oracle/instantclient_12_1/libclntsh.so \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 6d059bac..5b417b30 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -829,6 +829,7 @@ RUN set -xe; \ USER root ARG INSTALL_OCI8=false +ARG ORACLE_INSTANT_CLIENT_MIRROR=https://github.com/diogomascarenha/oracle-instantclient/raw/master/ ENV LD_LIBRARY_PATH="/opt/oracle/instantclient_12_1" ENV OCI_HOME="/opt/oracle/instantclient_12_1" @@ -842,8 +843,8 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ # Install Oracle Instantclient && mkdir /opt/oracle \ && cd /opt/oracle \ - && wget https://github.com/diogomascarenha/oracle-instantclient/raw/master/instantclient-basic-linux.x64-12.1.0.2.0.zip \ - && wget https://github.com/diogomascarenha/oracle-instantclient/raw/master/instantclient-sdk-linux.x64-12.1.0.2.0.zip \ + && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-basic-linux.x64-12.1.0.2.0.zip \ + && wget ${ORACLE_INSTANT_CLIENT_MIRROR}instantclient-sdk-linux.x64-12.1.0.2.0.zip \ && unzip /opt/oracle/instantclient-basic-linux.x64-12.1.0.2.0.zip -d /opt/oracle \ && unzip /opt/oracle/instantclient-sdk-linux.x64-12.1.0.2.0.zip -d /opt/oracle \ && ln -s /opt/oracle/instantclient_12_1/libclntsh.so.12.1 /opt/oracle/instantclient_12_1/libclntsh.so \ From eb5b77374a301d54cc8481c8562e5d4b224ddc7b Mon Sep 17 00:00:00 2001 From: bertalanV Date: Wed, 21 Oct 2020 10:33:19 +0200 Subject: [PATCH 023/372] change php installation section --- DOCUMENTATION/content/documentation/index.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index cecfa396..b5ec0f50 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -206,11 +206,14 @@ More [options](https://docs.docker.com/compose/reference/logs/) ## Install PHP Extensions -Before installing PHP extensions, you have to decide first whether you need `FPM` or `CLI`, because each of them has it's own different container, if you need it for both, you have to edit both containers. +You can set extensions to install in the .env file's corresponding section (`PHP_FPM`, `WORKSPACE`, `PHP_WORKER`), +just change the `false` to `true` at the desired extension's line. +After this you have to rebuild the container with the `--no-cache` option. + +```bash +docker build --no-cache {container-name} +``` -The PHP-FPM extensions should be installed in `php-fpm/Dockerfile-XX`. *(replace XX with your default PHP version number)*. -
-The PHP-CLI extensions should be installed in `workspace/Dockerfile`. @@ -220,6 +223,7 @@ The PHP-CLI extensions should be installed in `workspace/Dockerfile`.
## Change the (PHP-FPM) Version + By default the latest stable PHP version is configured to run. >The PHP-FPM is responsible for serving your application code, you don't have to change the PHP-CLI version if you are planning to run your application on different PHP-FPM version. From f5e5566424eac5ae625860e028aaff33656501a0 Mon Sep 17 00:00:00 2001 From: bertalanV Date: Wed, 21 Oct 2020 10:36:55 +0200 Subject: [PATCH 024/372] add empty line --- DOCUMENTATION/content/documentation/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index b5ec0f50..dfdd3577 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -196,6 +196,7 @@ More [options](https://docs.docker.com/compose/reference/logs/)
+ @@ -221,6 +222,7 @@ docker build --no-cache {container-name}
+ ## Change the (PHP-FPM) Version From b7b38401d04686264ecd8f4ac0d7a5ad76e09529 Mon Sep 17 00:00:00 2001 From: Simone Date: Wed, 21 Oct 2020 13:26:06 +0200 Subject: [PATCH 025/372] Update minio docs --- DOCUMENTATION/content/documentation/index.md | 24 ++++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index cecfa396..34041561 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -1335,12 +1335,26 @@ docker-compose up -d minio 5 - When configuring your other clients use the following details: ``` - S3_HOST=http://minio - S3_KEY=access - S3_SECRET=secretkey - S3_REGION=us-east-1 - S3_BUCKET=bucket + AWS_URL=http://minio:9000 + AWS_ACCESS_KEY_ID=access + AWS_SECRET_ACCESS_KEY=secretkey + AWS_DEFAULT_REGION=us-east-1 + AWS_BUCKET=test + AWS_PATH_STYLE=true ``` +6 - In `filesystems.php` you shoud use the following details (s3): + ``` +'s3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'endpoint' => env('AWS_URL'), + 'use_path_style_endpoint' => env('AWS_PATH_STYLE', false) + ], +``` +`'AWS_PATH_STYLE'` shout set to true only for local purpouse From 36764906d76bc424b03bb5dc0e333b373b8d7e86 Mon Sep 17 00:00:00 2001 From: bertalanV Date: Thu, 22 Oct 2020 17:02:42 +0200 Subject: [PATCH 026/372] fix mongo install in php fpm and workspace --- php-fpm/Dockerfile | 7 ++++--- workspace/Dockerfile | 9 +++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d05426d3..5c0f4645 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -312,9 +312,10 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install mongo && \ docker-php-ext-enable mongo \ - ;fi && \ - pecl install mongodb && \ - docker-php-ext-enable mongodb \ + ;else \ + pecl install mongodb && \ + docker-php-ext-enable mongodb \ + ;fi \ ;fi ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 6d059bac..9d514654 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -444,10 +444,11 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ pecl install mongo && \ echo "extension=mongo.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini && \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongo.ini \ - ;fi && \ - pecl install mongodb && \ - echo "extension=mongodb.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongodb.ini \ + ;else \ + pecl install mongodb && \ + echo "extension=mongodb.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongodb.ini \ + ;fi \ ;fi ########################################################################### From 633105e89cd6586cc42af343e0d22efc0c83cf5c Mon Sep 17 00:00:00 2001 From: bertalanV Date: Fri, 23 Oct 2020 14:29:13 +0200 Subject: [PATCH 027/372] fix inotify for php 5.6 --- workspace/Dockerfile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 9d514654..88cddf3f 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -574,9 +574,15 @@ RUN if [ ${INSTALL_LIBPNG} = true ]; then \ ARG INSTALL_INOTIFY=false RUN if [ ${INSTALL_INOTIFY} = true ]; then \ - pecl -q install inotify && \ - echo "extension=inotify.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-inotify.ini \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ + pecl -q install inotify-0.1.6 && \ + echo "extension=inotify.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-inotify.ini \ + else \ + pecl -q install inotify && \ + echo "extension=inotify.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-inotify.ini \ + ;fi \ ;fi ########################################################################### From 6eb398549c52bd092f082191bfbf2252707d0f75 Mon Sep 17 00:00:00 2001 From: hsyam Date: Tue, 27 Oct 2020 03:23:15 -0700 Subject: [PATCH 028/372] Add NewRelic support for php-FPM --- php-fpm/Dockerfile | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d05426d3..18c2bb26 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -921,6 +921,25 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \ docker-php-ext-install xmlrpc \ ;fi +########################################################################### +# New Relic for PHP: +########################################################################### + +ARG NEW_RELIC_KEY=000000 +ARG NEW_RELIC_APP_NAME=app_name +RUN \ + curl -L http://download.newrelic.com/php_agent/release/newrelic-php5-9.13.0.270-linux.tar.gz | tar -C /tmp -zx && \ + export NR_INSTALL_USE_CP_NOT_LN=1 && \ + export NR_INSTALL_SILENT=1 && \ + /tmp/newrelic-php5-*/newrelic-install install && \ + rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* && \ + sed -i \ + -e 's/"REPLACE_WITH_REAL_KEY"/"${NEW_RELIC_KEY}"/' \ + -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "${NEW_RELIC_APP_NAME}"/' \ + -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \ + -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \ + /usr/local/etc/php/conf.d/newrelic.ini + ########################################################################### # Downgrade Openssl: ########################################################################### From 100f7d924e54cf383f56236ce5a6c7f18073a61f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pint=C3=A9r=20Norbert?= Date: Sat, 7 Nov 2020 11:38:56 +0100 Subject: [PATCH 029/372] .gitattributes with .sh files LF setting to normalize line endings --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..dfdb8b77 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.sh text eol=lf From 4d803e617b9e06f328f4b62d8f2571921e4c3976 Mon Sep 17 00:00:00 2001 From: Andrey Bunyaev Date: Wed, 11 Nov 2020 09:47:25 +0400 Subject: [PATCH 030/372] Add ClickHouse --- clickhouse/Dockerfile | 53 ++ clickhouse/config.xml | 510 ++++++++++++++++++ .../docker-entrypoint-initdb.d/init-db.sh | 0 clickhouse/docker_related_config.xml | 12 + clickhouse/entrypoint.sh | 103 ++++ clickhouse/users.xml | 138 +++++ docker-compose.yml | 33 +- env-example | 16 +- 8 files changed, 863 insertions(+), 2 deletions(-) create mode 100644 clickhouse/Dockerfile create mode 100644 clickhouse/config.xml create mode 100644 clickhouse/docker-entrypoint-initdb.d/init-db.sh create mode 100644 clickhouse/docker_related_config.xml create mode 100644 clickhouse/entrypoint.sh create mode 100644 clickhouse/users.xml diff --git a/clickhouse/Dockerfile b/clickhouse/Dockerfile new file mode 100644 index 00000000..853c14df --- /dev/null +++ b/clickhouse/Dockerfile @@ -0,0 +1,53 @@ +FROM ubuntu:20.04 + +ARG CLICKHOUSE_VERSION=20.9.4.76 +ARG CLICKHOUSE_GOSU_VERSION=1.10 + +RUN apt-get update \ + && apt-get install --yes --no-install-recommends \ + apt-transport-https \ + dirmngr \ + gnupg \ + && mkdir -p /etc/apt/sources.list.d \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 \ + && echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" > /etc/apt/sources.list.d/clickhouse.list \ + && apt-get update \ + && env DEBIAN_FRONTEND=noninteractive \ + apt-get install --allow-unauthenticated --yes --no-install-recommends \ + clickhouse-common-static=$CLICKHOUSE_VERSION \ + clickhouse-client=$CLICKHOUSE_VERSION \ + clickhouse-server=$CLICKHOUSE_VERSION \ + locales \ + tzdata \ + wget \ + && rm -rf \ + /var/lib/apt/lists/* \ + /var/cache/debconf \ + /tmp/* \ + && apt-get clean + +ADD https://github.com/tianon/gosu/releases/download/$CLICKHOUSE_GOSU_VERSION/gosu-amd64 /bin/gosu + +RUN locale-gen en_US.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en +ENV LC_ALL en_US.UTF-8 + +RUN mkdir /docker-entrypoint-initdb.d + +COPY docker_related_config.xml /etc/clickhouse-server/config.d/ +COPY config.xml /etc/clickhouse-server/config.xml +COPY entrypoint.sh /entrypoint.sh + +RUN chmod +x \ + /entrypoint.sh \ + /bin/gosu + +EXPOSE 9000 8123 9009 +VOLUME /var/lib/clickhouse + +ENV CLICKHOUSE_CONFIG /etc/clickhouse-server/config.xml +ENV CLICKHOUSE_USER ${CLICKHOUSE_USER} +ENV CLICKHOUSE_PASSWORD ${CLICKHOUSE_PASSWORD} + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/clickhouse/config.xml b/clickhouse/config.xml new file mode 100644 index 00000000..c1479eaa --- /dev/null +++ b/clickhouse/config.xml @@ -0,0 +1,510 @@ + + + + + + + + + + + + + trace + /var/log/clickhouse-server/clickhouse-server.log + /var/log/clickhouse-server/clickhouse-server.err.log + 1000M + 10 + + + + 8123 + 9000 + + + + + + + + /etc/clickhouse-server/server.crt + /etc/clickhouse-server/server.key + + /etc/clickhouse-server/dhparam.pem + none + true + true + sslv2,sslv3 + true + + + + true + true + sslv2,sslv3 + true + + + + RejectCertificateHandler + + + + + + + + + 9009 + + + + + + + + + + + + + + + + + + + + 4096 + 3 + + + 100 + + + + + + 8589934592 + + + 5368709120 + + + + /var/lib/clickhouse/ + + + /var/lib/clickhouse/tmp/ + + + /var/lib/clickhouse/user_files/ + + + users.xml + + + default + + + + + + default + + + + + + + + + false + + + + + + + + localhost + 9000 + + + + + + + localhost + 9000 + + + + + localhost + 9000 + + + + + + + 127.0.0.1 + 9000 + + + + + 127.0.0.2 + 9000 + + + + + + + localhost + 9440 + 1 + + + + + + + localhost + 9000 + + + + + localhost + 1 + + + + + + + + + + + + + + + + + + 3600 + + + + 3600 + + + 60 + + + + + + + + + + + + + system + query_log
+ + toYYYYMM(event_date) + + 7500 +
+ + + + system + trace_log
+ + toYYYYMM(event_date) + 7500 +
+ + + + system + query_thread_log
+ toYYYYMM(event_date) + 7500 +
+ + + + + + + + + + + + + + + + + + *_dictionary.xml + + + + + + + + + + /clickhouse/task_queue/ddl + + + + + + + + + + + + + + + + click_cost + any + + 0 + 3600 + + + 86400 + 60 + + + + max + + 0 + 60 + + + 3600 + 300 + + + 86400 + 3600 + + + + + + /var/lib/clickhouse/format_schemas/ + + + + + + +
diff --git a/clickhouse/docker-entrypoint-initdb.d/init-db.sh b/clickhouse/docker-entrypoint-initdb.d/init-db.sh new file mode 100644 index 00000000..e69de29b diff --git a/clickhouse/docker_related_config.xml b/clickhouse/docker_related_config.xml new file mode 100644 index 00000000..a1563c88 --- /dev/null +++ b/clickhouse/docker_related_config.xml @@ -0,0 +1,12 @@ + + + :: + 0.0.0.0 + 1 + + + diff --git a/clickhouse/entrypoint.sh b/clickhouse/entrypoint.sh new file mode 100644 index 00000000..03bacb7a --- /dev/null +++ b/clickhouse/entrypoint.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +# set some vars +CLICKHOUSE_CONFIG="${CLICKHOUSE_CONFIG:-/etc/clickhouse-server/config.xml}" +if [ x"$UID" == x0 ]; then + USER="$(id -u clickhouse)" + GROUP="$(id -g clickhouse)" + gosu="gosu $USER:$GROUP" +else + USER="$(id -u)" + GROUP="$(id -g)" + gosu="" +fi + +# port is needed to check if clickhouse-server is ready for connections +HTTP_PORT="$(clickhouse extract-from-config --config-file $CLICKHOUSE_CONFIG --key=http_port)" + +# get CH directories locations +DATA_DIR="$(clickhouse extract-from-config --config-file $CLICKHOUSE_CONFIG --key=path || true)" +TMP_DIR="$(clickhouse extract-from-config --config-file $CLICKHOUSE_CONFIG --key=tmp_path || true)" +USER_PATH="$(clickhouse extract-from-config --config-file $CLICKHOUSE_CONFIG --key=user_files_path || true)" +LOG_PATH="$(clickhouse extract-from-config --config-file $CLICKHOUSE_CONFIG --key=logger.log || true)" +LOG_DIR="$(dirname $LOG_PATH || true)" +ERROR_LOG_PATH="$(clickhouse extract-from-config --config-file $CLICKHOUSE_CONFIG --key=logger.errorlog || true)" +ERROR_LOG_DIR="$(dirname $ERROR_LOG_PATH || true)" +FORMAT_SCHEMA_PATH="$(clickhouse extract-from-config --config-file $CLICKHOUSE_CONFIG --key=format_schema_path || true)" +CLICKHOUSE_USER="${CLICKHOUSE_USER:-default}" + +for dir in "$DATA_DIR" \ + "$ERROR_LOG_DIR" \ + "$LOG_DIR" \ + "$TMP_DIR" \ + "$USER_PATH" \ + "$FORMAT_SCHEMA_PATH" +do + # check if variable not empty + [ -z "$dir" ] && continue + # ensure directories exist + if ! mkdir -p "$dir"; then + echo "Couldn't create necessary directory: $dir" + exit 1 + fi + + if [ x"$UID" == x0 ] && [ "$CLICKHOUSE_DO_NOT_CHOWN" != "1" ]; then + # ensure proper directories permissions + chown -R "$USER:$GROUP" "$dir" + elif [ "$(stat -c %u "$dir")" != "$USER" ]; then + echo "Necessary directory '$dir' isn't owned by user with id '$USER'" + exit 1 + fi +done + + + +if [ -n "$(ls /docker-entrypoint-initdb.d/)" ]; then + $gosu /usr/bin/clickhouse-server --config-file=$CLICKHOUSE_CONFIG & + pid="$!" + + # check if clickhouse is ready to accept connections + # will try to send ping clickhouse via http_port (max 12 retries, with 1 sec delay) + if ! wget --spider --quiet --tries=12 --waitretry=1 --retry-connrefused "http://localhost:$HTTP_PORT/ping" ; then + echo >&2 'ClickHouse init process failed.' + exit 1 + fi + + if [ ! -z "$CLICKHOUSE_PASSWORD" ]; then + printf -v WITH_PASSWORD '%s %q' "--password" "$CLICKHOUSE_PASSWORD" + fi + + clickhouseclient=( clickhouse-client --multiquery -u $CLICKHOUSE_USER $WITH_PASSWORD ) + + echo + for f in /docker-entrypoint-initdb.d/*; do + case "$f" in + *.sh) + if [ -x "$f" ]; then + echo "$0: running $f" + "$f" + else + echo "$0: sourcing $f" + . "$f" + fi + ;; + *.sql) echo "$0: running $f"; cat "$f" | "${clickhouseclient[@]}" ; echo ;; + *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${clickhouseclient[@]}"; echo ;; + *) echo "$0: ignoring $f" ;; + esac + echo + done + + if ! kill -s TERM "$pid" || ! wait "$pid"; then + echo >&2 'Finishing of ClickHouse init process failed.' + exit 1 + fi +fi + +# if no args passed to `docker run` or first argument start with `--`, then the user is passing clickhouse-server arguments +if [[ $# -lt 1 ]] || [[ "$1" == "--"* ]]; then + exec $gosu /usr/bin/clickhouse-server --config-file=$CLICKHOUSE_CONFIG "$@" +fi + +# Otherwise, we assume the user want to run his own process, for example a `bash` shell to explore this image +exec "$@" diff --git a/clickhouse/users.xml b/clickhouse/users.xml new file mode 100644 index 00000000..fc5897c2 --- /dev/null +++ b/clickhouse/users.xml @@ -0,0 +1,138 @@ + + + + + + + + 10000000000 + + + 0 + + + random + + + + + 1 + + + + + + + + + HAHA + + + + ::/0 + + + + default + + + default + + + + + + + a = 1 + + + + + a + b < 1 or c - d > 5 + + + + + c = 1 + + + + + + + + + + + + + + + + + 3600 + + + 0 + 0 + 0 + 0 + 0 + + + + diff --git a/docker-compose.yml b/docker-compose.yml index cb056aca..f6a5458f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -596,7 +596,38 @@ services: networks: - backend -### Redis ################################################ + ### ClickHouse ############################################# + clickhouse: + build: + context: ./clickhouse + args: + - CLICKHOUSE_VERSION=${CLICKHOUSE_VERSION} + - CLICKHOUSE_GOSU_VERSION=${CLICKHOUSE_GOSU_VERSION} + environment: + - CLICKHOUSE_USER=${CLICKHOUSE_USER} + - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} + volumes: + - ${DATA_PATH_HOST}/clickhouse:/var/lib/clickhouse + - ${CLICKHOUSE_CUSTOM_CONFIG}:/etc/clickhouse-server/config.xml + - ${CLICKHOUSE_USERS_CUSTOM_CONFIG}:/etc/clickhouse-server/users.xml + - ${CLICKHOUSE_HOST_LOG_PATH}:/var/log/clickhouse + - ${CLICKHOUSE_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d + links: + - workspace + ports: + - "${CLICKHOUSE_HTTP_PORT}:8123" + - "${CLICKHOUSE_CLIENT_PORT}:9000" + - "${CLICKHOUSE_NATIVE_PORT}:9009" + ulimits: + nproc: 65535 + nofile: + soft: 262144 + hard: 262144 + networks: +# - frontend + - backend + + ### Redis ################################################ redis: build: ./redis volumes: diff --git a/env-example b/env-example index 0d4ebe6c..336ed67b 100644 --- a/env-example +++ b/env-example @@ -39,7 +39,7 @@ COMPOSE_PROJECT_NAME=laradock # 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 +PHP_VERSION=7.4 ### Phalcon Version ########################################### @@ -325,6 +325,20 @@ MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=root MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d +### CLICKHOUSE ################################################# + +CLICKHOUSE_VERSION=20.6 +CLICKHOUSE_GOSU_VERSION=1.10 +CLICKHOUSE_CUSTOM_CONFIG=./clickhouse/config.xml +CLICKHOUSE_USERS_CUSTOM_CONFIG=./clickhouse/users.xml +CLICKHOUSE_USER=default +CLICKHOUSE_PASSWORD=HAHA +CLICKHOUSE_HTTP_PORT=8123 +CLICKHOUSE_CLIENT_PORT=9000 +CLICKHOUSE_NATIVE_PORT=9009 +CLICKHOUSE_ENTRYPOINT_INITDB=./clickhouse/docker-entrypoint-initdb.d +CLICKHOUSE_HOST_LOG_PATH=./logs/clickhouse + ### REDIS ################################################# REDIS_PORT=6379 From 09bd42658816c3f5c845f938279de0983dd6e1cd Mon Sep 17 00:00:00 2001 From: Andrey Bunyaev Date: Wed, 11 Nov 2020 09:56:21 +0400 Subject: [PATCH 031/372] change default password ClickHouse --- clickhouse/users.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clickhouse/users.xml b/clickhouse/users.xml index fc5897c2..ac054f1e 100644 --- a/clickhouse/users.xml +++ b/clickhouse/users.xml @@ -52,7 +52,7 @@ Execute: PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | openssl dgst -sha1 -binary | openssl dgst -sha1 In first line will be password and in second - corresponding double SHA1. --> - HAHA + secret + + + React App + + + +
+ + + diff --git a/react/public/logo192.png b/react/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/react/public/manifest.json b/react/public/manifest.json new file mode 100644 index 00000000..080d6c77 --- /dev/null +++ b/react/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/react/public/robots.txt b/react/public/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/react/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/react/src/Theme.js b/react/src/Theme.js new file mode 100644 index 00000000..f4f1809f --- /dev/null +++ b/react/src/Theme.js @@ -0,0 +1,39 @@ +import React, { useState, useEffect } from "react"; +import { createMuiTheme } from "@material-ui/core/styles"; +import { ThemeProvider } from "@material-ui/styles"; +import rtl from "jss-rtl"; +import { create } from "jss"; +import { StylesProvider, jssPreset } from "@material-ui/styles"; +import { useSelector } from "react-redux"; +import App from "./containers/App"; + +function ThemeApp() { + const jss = create({ plugins: [...jssPreset().plugins, rtl()] }); + const lang = useSelector(state => state.lang); + const [direction, setDirection] = useState(lang === "en" ? "ltr" : "rtl"); + + useEffect(() => { + setDirection(lang === "en" ? "ltr" : "rtl"); + }, [lang]); + + const theme = createMuiTheme({ + direction: direction, + palette: { + primary: { + main: "#1976d2" + }, + secondary: { + main: "#ac4556" + } + } + }); + return ( + + + + + + ); +} + +export default ThemeApp; diff --git a/react/src/assets/Local/ar.js b/react/src/assets/Local/ar.js new file mode 100644 index 00000000..06f38876 --- /dev/null +++ b/react/src/assets/Local/ar.js @@ -0,0 +1,13 @@ +export default { + ar: { + hello: "مرحبا", + langBtn : "English", + home: { + content: + 'لوريم إيبسوم(Lorem Ipsum) هو ببساطة نص شكلي (بمعنى أن الغاية هي الشكل وليس المحتوى) ويُستخدم في صناعات المطابع ودور النشر. كان لوريم إيبسوم ولايزال المعيار للنص الشكلي منذ القرن الخامس عشر عندما قامت مطبعة مجهولة برص مجموعة من الأحرف بشكل عشوائي أخذتها من نص، لتكوّن كتيّب بمثابة دليل أو مرجع شكلي لهذه الأحرف. خمسة قرون من الزمن لم تقضي على هذا النص، بل انه حتى صار مستخدماً وبشكله الأصلي في الطباعة والتنضيد الإلكتروني. انتشر بشكل كبير في ستينيّات هذا القرن مع إصدار رقائق "ليتراسيت" (Letraset) البلاستيكية تحوي مقاطع من هذا النص، وعاد لينتشر مرة أخرى مؤخراَ مع ظهور برامج النشر الإلكتروني مثل "ألدوس بايج مايكر" (Aldus PageMaker) والتي حوت أيضاً على نسخ من نص لوريم إيبسوم.' + }, + snackbar: { + 'success' : 'تم بنجاح' + } + } +}; diff --git a/react/src/assets/Local/en.js b/react/src/assets/Local/en.js new file mode 100644 index 00000000..375fa870 --- /dev/null +++ b/react/src/assets/Local/en.js @@ -0,0 +1,13 @@ +export default { + en: { + hello : 'Hello', + langBtn : "عربى", + home: { + content: + "What is Lorem Ipsum?Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum." + }, + snackbar: { + 'success' : 'Done successfully' + } + } +} diff --git a/react/src/assets/Local/messages.js b/react/src/assets/Local/messages.js new file mode 100644 index 00000000..ed2ccd07 --- /dev/null +++ b/react/src/assets/Local/messages.js @@ -0,0 +1,9 @@ +import en from './en'; +import ar from './ar'; + +const messages = { + ...ar, + ...en +} + +export default messages; \ No newline at end of file diff --git a/react/src/assets/fonts/Roboto/Roboto-Black.ttf b/react/src/assets/fonts/Roboto/Roboto-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2d452383651a6ef279743a9926b90234b8b79366 GIT binary patch literal 171072 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� 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 z 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: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 z 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 z zrxvEC7N&KM&`S%`OAFH*3)345(>h0JnIrVN!m1%?1D*o20R0(yO<}8(6`xtEq?c4l zFR7AT93-`RcBzsSR+55B`k*J9WvZlSR7r2BlHO1yJ)uf^LY4G{D(N5Ao@J_(6>cTH zqDp#2mGp`#=@nJdE2^YdR7r2BlHO1yE3M0D#~HIAkIJkc;TvYEkvV0^n=(>SMtv=# zu9fli$cdUjZ*5G(ifI6~_AjRGi)r}uT9-E9R9e2BTq^{{wDPQ_5S8##6VMu51l~a_ zccR9RwF8XK>#kQ>%6-2<+h^Bad%_wCM%|^1x=R^#mon-uWz=2DD7%zVb}6ImQbyUO z@)p3F2ze`DT?C`-QbyUOjIv7^Nk{wIi$p`kaoqSAr2-zXSJ9FrItv0T1DyMEDH!JsOFsxP<{Tn_q!0f1FF>gQ)&GSQ!As&T-Zb;+!wZ-RHI zWtr5n0%}<%dezL|taC~>5?PO=XibpH5x$a2G9#)!_y+@Kl+DO!B7R0cNazR>I>Kt5 ztI@3v2G?laEEo-51FwT6U_ICX%2;PvPK$nsp2iQHA8~)+D=ht%bkR=NNzjKndL`~) zt_`7AG=gh)aDFFv2uvhwl9g`1Vnzk}pY2DkPuY%O7piS0#rike+FyCu>2=rm>+S<3c z#!b%vov3m1dIi6raicA+hn#K1Z0!v2EO-t)4_=^-?F2rsn|l%|xv%Ljd`ItQCna?~ zCG?gUPa5x`&oI%w*2GmwT)G!gNnDl0RY_cx#HD)*mBdv^T$N~Symj*(tm|3zGRmE1 z-RQn-jYayVyVJx<_hlsAG}_x~Xv3%3AA?W85pWC~cc;k&_hnfhGysi2WAHxV^T1k= zC*V`CjI=Zr`R)O+g|stz z6x+z*L2#HgH>n^EJ$^HKKG&i-`91D5@--d*(`ZFD1GG7+2%tStN9il-*ouiQN^GUX zwx8Jc6We}b+fQu8#I~QK2L%spIH=#1(*9Ki;uJ-0m(F4{+}U(q@wi z%{`g;%Fv3kPLO@e0`6+Uzaw?uGBOR4y4{RKa|LUs7%OFvGIj}K#q>mLtov7M;_>Cy zQ&oSordNGq&2-PTUT}v(gFB(YOV)BX#adkzvevrot#wt!&|;9asjAG%sXA_bTeY2h zj3gfk&|@iixyCB1sv<8G$DQcs1YBLx8~%nA9+hAl@F4? zYsg;`DZN|_tBOL$72@`)Fg4~PYRv8Aw;}mWAmtZA(=B{W(vT64Uh|mjerMJ_vL8A* z+GgE^tJgbDgu+j;LS#Dgr8BYR_yRqjMXc}qhU?z?j@&l=covd!6_jrMuJJNC|GF1ashzPEhwIB+yuNakHWKBKTr46!myzz0ofOn7urN zR=SV-HYG5EygfWi1Or93-I^)$usXMLWEK&dEHs^IA;6sUj# z`?)KhFMfyczOjsa3*gTNq*c!gF5;OIo{5-|R3GY$)|E3y=<$VUf}}wA0Jn{W4vR=x zw!4rL+sbo`dG0exC68y<^S%sHs=3%t9GiIWCgRx$#lz4bND2ecAVhhOb>AlqHxL>n zG)ia%GH*NI{gm-V|1~^6ggUIXA$QRV-3=ErMmOBL!lWvZZ+?;~o3|;8N^1@4`qx3l z?d}}%lMRROt267FNy@xgPbh$P<|e);9Siq&$9&8-O8pDcv(B1WwTKcwi&%$I;(w>a z-yydj^M(!Z@t-K=`zYn-c+)*l;NO(;gOu`QO8GY4`~iHN0#*F*aR#ZF0v}Ix!N-4qkN*h8{tU%tL9re1@pSlj7JU3i()c-itSR^uIiF2gPk@pEa`O<>d=+Xg zfRCSqk5i!PE7h`LG4xvu{T5U9-WuK}!gFeO3LUXmBD-N;h(OVhMO^1uo!&&r*DTfj$u^aiZ zhw|Ekv|{vUDN1@BzH*)_=PAB$CWNn-^(?PtH%ii9h9!U0@_xSM>cTf-@gFu@yq~)d zy2gH3bE)&w=QUxjpOpUOM=Gj+Zn3+CbekWkwWzH%KetHlx9(Qz@DqQ~jc@h!(cJN^ z8+QNfzH9E%-&$Mb$8xblPkL{x{oWHEOo^Yn|3pgu?5{4b)h_j)eXQo98-Q!~!_|h5-5~Pp zSN~|yEcd`85@b?O`4<@y??UyA~LFsc6YbtQhu82HlFI`@v>t*=`Z|{dmDb? z7K{F7^)Duy-0zL_%0sq%;pQRlOsh_s7RK&8(Pi`!i(_ZZ_fz-3m)<{(BNlS9z5*%y zLoBVa`(o~iTpA1a+^R~(h}FMp`L!ZOxmb+udVPZ@M`HK>8kg^4fAQyD1Q+4Pgo!wOCVz8txXuz_d;TcHWO1`7$=HbPrt6``H6ih$0Ge<$l!tV4A+ z_7KiA_7Kj(62d}aTFU=?OIv&DYV15+!0h%GEF^5@-;LSr9gK~9%x?Fv_Asuw1Y7G4 z?_`dS)ipoxzXCf5>?)2`ZP&U|TU58MGL{eq8A}LP8%qd-g|>k()Yw3{&e%X0VQe6b zG&T@M85;;#K)?n977(z3fF*QnAlzhZAl!@%gcq@z_IK=4k2f|D?lIO6?lsmA?laa8 z9x&DqCK&4n6OHwQNyhrYqsIEdW5)WyWMlncs!dNy~Z7dtCF_sOojAeth*xo6&)*1T->y3Sb4aUAfwy|%p(bzZGWb7N{82bi0 zjD3Th#=e2i*f%IN_6>F!`v$wQ&C|@1l24!&Xll%a6UDc2=>m zfxrqPd5#s-b`P*`kKF@oCSdmf+X&k3fo<#_NU7}}BpSO1jf~xcBxCm=&DcHYXzU(z zGIkF-8@mTxjNOAX^sXV;M$i@yx*3ZHJ+XMO39AU&*1?s=*1=WA*1tK+vbuh%( zI=J50Iv9bigJWWpv2t*`v2t*yv2t*av2t*qv2t*~v2yT;v2rlWSUGszSULEQx=Y<9 z=BT^X-D0k>credcJjgT_4?Z;(4?Z^*4;C7W2VWYC2VWVB2aAlwgQdpe!7^jy5>O4aVX@wy}7?YBnq$wOk~ zL0vl=nbwtmLv&^r@Z^R3)2UzB3Zs7Yz{-iXc#_QQcyI3M!@n&S68d5js~>-DDFLlF zweK=|Yyw9Hu54JO=~MGLbMgFSux%K z+0m6dFAx`49mR#nk=DqO?pB)UA$nj%p(l1#8X1|=$jFpNNRt6vy$ZW3&5Rro$dOxl zY8>lm(!_1pRcU7IsmFM`i)s=Qe?zA&d?OsgsO z!Ctfy*e~QYuKv@WWi`Ya3$r)u5|V+%w0D?oX=yC8BqFEgVIp}x_E{v->IQs| zp0Dh$xN{L}du)5Ly%_)3tnsn!CH4~h-(bn5slAjLnwG|%OH+F}Gc_%ZRhOprN@i?Y z8rv>S?bXcOv@{l81afdKsanSzP9m1b*5lv6Tuvf3$+GcpWKJg$>tvho=PesP`;USTQ>c9gf&X z$m3D_DE?#iG5kN;KjJ@bAIGn)#xyrlwYib1&5cymmd;r9Z=`Cnk*W=iRBdRaYC|Jc z8yczF&`8yWMyj5MRAugq9h5p*4X}&W8Gjeq#cCqYkgToK7H9CEC0S#q?atso2PvG2 z6uyv|&5PtkRwvmFiJW32GHdmb$SGPPbM+p1kJV1zD<7~rYq?Aa_Gq|&rku&1?a#^Q ztOTsCy@>s@zhLD=OX|N9{*rvjYJ&|n_V8ohl~;J>5;?7xe7Isfw$C`gK zHrZzL)ElhRN@M4hxA14k42<7n-G=QBux>++ux^8Yfm}drA7c~0qx?*MW;N8d+lccE z)^>Hlf*V|f6}PW=?;^Q~dlt*Z+`m+MmI;^h#uajf)l{y;Vn#BS-B$6&)mWLYC)Y50 zmq=@|mba{v>#X{6J#%?2v6Zudw`a?2ENpCKW-n20lAEm7v?zIm=VQs`G~KRn#D)&X z?bvfkk~{d`pn=@U%yBE)nB5$UWDz;q%X%|g?vt!rVBZ)&X~WJAahAvuc4ovb2Tx&b zhZIJcIc$l|opNI1t82n5S)Z0B56MHM!Q+CI{tR7e6v-1)!wS7I;al#Pgkeo@5o9xTXj;b4N{$15ofboR~P(eurkh8 zXR0&tpT!C}Tb-@W#(xegI!uQ{{E^z{wuNnpP&XX=bEUlQdi+0$lPlp?fMXCHB=3SO4q7u@efnO z@L#8{!#|uI03w-)V+)BRy#%YF z?j>-XgvFmE^(Zs)4b)>;{z+1k`4Xgont}zOBsG;ULK^5k1ZxqWR8LwR**oVctF^J8 zsnm2eoms}G)zgGyL5VerSWx1rS!$N0)a$G+wAE}yzgxYb-XLFZV{u=o43$9|u&IQt z;Sbe^RvYyn^&fa(j+(<&>??6xz&xf>AFGdv6Dvy`v9e^Pt1r|Sgny;J;@+bF5ah73mR2{e z-)&91-1?`Zl#_($k%?U$?zx?6?$YNP+L}m1dN3{Mtt7>D80J1kbEHH6wHyCo#FBms z7FP*EH$Z=>0mtSXYw1$sxBn(zEZwJi*se*D=QHEbQ{DWN@OtE3Qz!n@dC|GhKj}Hu zM=$?%<8Q?Ct+?K(`kp4nZAFhv|2mlCi3c5PbD*hrnmOta%%))b;PUnDe-@t_v5eB>GA#zkzD$p#HgkA-;-Hhz4e~c@+$UE zKwjy81OD}RE(Xn`wc*J;Ef?yd_C0aFj;Al~>lF8%;EUBYUGH@bj-mE#^p=s%b)joy z3=PS{$-wR$P^5v8<|#;Y4?5;JH5*g@@&C!VClQ|V{#u`<|1GPZh=uDIW51Jy#jeF& z?=J70Ek4cPxFo{;&F(ML+8t)rD;$DPe$wZI2PBhbz|>4wd#9c$~6YfFjPb?wHet;=3h*Q1a3 zW)nnuy!?4*@nej#u@GI`bb54usDXhlVO@jb@>0v*_!-_hKP{K78t#o>sw-{1`j&_U z_awTGQ>U?^xXXUkQm3%xKG@3{w%ql6nx?tt&qV0hm~^KgE13NywJ}TW=wtfdGO&Z? zA29L;j)O+_XGfG_!>{dNeR*B~F&(VuM-Cr`|Avu6xr$cXHNC%By!C%3W__>b^Vq#? zUIM*Nm5!6$-RQr%TTA$p=kdf;C;UvR)5mw4Jl=YB{P>BJtXX$Yc;G%O~1^PU}l^{Kg#DPk4ChL~HYeN5)UE3e3@Gj(Z7y%nCiCuO67Bj|V4D96!lA zI(hPi7YU1FH&Ksccag-ghe+etQ>1geShVAKiRe6qr^Gpif*dGGk85?k(NxtfyF|LQ zG<{5A>WMDt1_t_m?bml|`5};1`lxG}mH_&w`(2`%Pqeg*_2D&lvu4*EHBagt2lP>M zxSqezM=ePO<=fi2SY25EKw?H>cFMykGg3ZIS(OqP(Z6-GFG3f0 zmI#Pq;TQYFUbJ_6#BQ+*jh;{J#Dem6G<;h{f!HFx7y0Z05fc0D$@Wxxiv2tLG5c|Q zBzr=XqUS3U2Sk{isIhU&{tyS*9paGqK^zuG#8GjKT_TQ)DhMo8m2I<6gtFN)o}D5R z*(ai*-N^21H%2p>1J2Ze}-U*NB$vYTb(cyxZ9A?6z8)gf6L@>@IuAp7LUO ziR>kN%RaKN>?bdkm&wcJ6|%p)5*^c3a-bX}ua<-5HFAg?Dz8Q3be$Y7ua_g_NI444 z(`Y$H-Y9R9H_Kb(Sb3`)CvTIt%RA(q@-8`Ex$ya@$?5WG`HY+)pQU@F$DNy04!ene zr#7oxMxOcVd$mOsu)Fv+wO#E{JC%*N>+O5@bb<9q((-Imb=r;KO?-=p=|ARY5 z#B06}3*wLdmO5_VZBLdL>N+kj5c|AZt~poNbdP(nb-mTA@ybV?k7y3AuK7nbzs733 za1p7RZ?)a)lh*v&lH#ONpd}LEcfYybKmFg-{Qu*6|I=E(jry%?xmUYA8Bk(sb5z%3 zCm{ukszt66+i0tCm^IEp69-m9?5R)mf}} zt+gAum4lW4>fOVcrNT~$RlRe##W$MFR~@#FAaAst|Koagn}$vZ8V;v7O)J zyT03BFr%}W*_)-z)U0GyCX0EP4a~XZFu#&(=i6KCt<16Pv$p_l|WRLQq<|ZtL-dpseHJ zzpoX3U9Ipt;^B5tt#G}YP<1@=+gjll)(YQTD?B|OuC6h?q&e0{B&xGGlip5^ydjPC z>^s@V=`MS`eTUgqsh;LZyNDg+H}j+(5tv<#>UCqsipQ+?t&iDfDBJo`Br}saguST# zBwl9EsYCP=I@(~$IO(ggpyPP?vuC(?;Xk}+I>oc1@b-tB*R714zgVg=#sb53y zyG@lRv`Ofi&@17}gliMVBuq<~m+*Z;RlT#IDE8CoNp)bJ`8<0Xd6=tb9IORc1F)?* zssqRQSOc)Fd0Mkg?gU!s5AiL~KIR5_0$}e89k$J$19Qx^y74}*?_%aa$NL<|Im{do zFLMSu-ZwaY1aut##GPvw=$Oo#bohc3Qu$YXj~cA6*niVRO zoS{qC@dZuF^fxJbmojt3-fymynk#yadI2B>a*qyIdZwB=FM6V${;abd)!}x9xu5wi zYk~R~$2s;(9Ou!)O{G`d4&A^x%*J1gmR=G%*M3Dm#heEB+b`?;nbXi|{RhW+%nZaR zx)|SF_@E*2w6NOPRr(x8))ZZWe}Q_(+*_S`sYkJMWkYj)slE<$>ajh_6U$A=iD_C{ zou>b#pJg^gr%BVBwG$lYvyMck={=6I(pZCk0ka7@hp{(r;cPB530z?oj;HHTN%IJ+ zFwE8M`YN+4x}>LYgg;Cg^}2?+%tGi?*X0w<33Hk2(kYwGaSn4`np(O{=P4cH@!x;& zdHkpI9^=3HChz*}#CUa{<}zoc<9(Oo9OkTas`_%Ar{3h~#cL>I_)gQ)yusA#8m>{F z5I)xqnKylE?uqeJiMisKE1#PyUT%wYI5RjpzS{g$Ztg#5?*B?(RkJwGVUAu?sxDo0 zdCX-_OsAh*lKx>F=i8dQ=cx>iUi!brSDTAmeJ+K0hpwp$n19mu#>z6mTyJEqFVok7 z=Asl6vciPaO^MF)Ts2-_v2}f#qwe82UpD7BPrc7E#yeT~7cd8jPrxp1l&(-I~cYclUyc!>Kn_R6;bn+Tb!?%=pU-NJDWJA~`h+{STUojY$PWG-Kd>O04B zoWqx+`p(-q*1hvyLguQ6IWAE5bDX0d1aQZ%aJ>OX5 zlCOp7jj>^XdQ0WL1&g;qd}`Kz~Dy&9dIWI?87LJ$Yw!8wH0L4Kq8$X`P`L zs#g`(V_&w!ga!!>t4CRS9mx__dE_v@ys73+tpU*Ov=C3m+db}%;O(NGF2v=eW_b{uBZzVpR5+yWmYoC78 zjn+T$)#Og-eJBMKs~z@;30qPptkQ(Bw`2_s+OTToJiT*cO-MsRy4n{IVnfy8wXX2h zv^|iuJ%jAQ_BHl>_Wkw)_Jj6A_5^z(cO|jn>nzH&JCyhOvO}wTuJO28PhdZ6KVs{& zNlJOB{a~&5yRsL~E%t5pP4;N}Mth7s*1p*uXWwcMw};q6?Q88}_I0%TZR}CDuEDHR zK%Z#Y_uBWe>SmHXiP`7BDg7mQ{C&izUb80={&)3~dRe_<->Y6#{~)gGh;1k_-($75 zM-k@`VzjGc9Bto5t5zo#(lV}A%5ElAx4@mX_ixm@H#Xxb-8Uh=Sc-WE=_Qr5QlZm8 zO6$Bqy`o-?-$Oe8VRTjL@Wg2*&bDwtuK4p7||$<_x--_`9DvxyR&8H+;h)8=Xcs2fe3;Sga=uO zY|*Uwn}tmsGXycZmmr7(TC`8=SW-6VOF@i1BM7}OwdmNn>7yABx(nirJV6LulGZV? z_UeiSO9fHxhO_h=nAv|cnb@tOAbJ>v7kRhB@0*dYi$ z6*K#1kG3?Ddf|8$z8^WVf9BwZ9WoO@UpmHnVf3hRStXgmAkb5jeLi~Z;L-0S26h$1 z3ZH|f`hp3c2~uT~Ly!cs;4SzGfx;-o&uX&;)pPh+9YPU%H1kJq{^(yMIE3ci9AaX* z0}! z6iFsgQe{^I@skw#JAI${JrE^IiRf~f94~g5EUwAo#A2J6?dl`;nJ4xUL}6{oKco?- z-(P5;m;(YCf=PpQSQ@whd1hP^t_hMCaVq$bu_3B`&kT1VRzBMxm^AYXwU&!AW-Z@MlPSssFDb9pwI|EP9@t&0`NZM`!%J0CblVB7~(Xshm2ErB;w? z)ebnbK{sc1S$tBKF}s4Fh{5JMDkO#%2$E+&a*?9~pENxB7CC$q3%qon`hx3t)9MH+ za(G!CA^gi>MGnF02bQXZBW_|e|IdQkJ}EqOJ3_p&ysa?2wB&g9PdZAQ2yVKw&;!b{wBu-B8)4k zDY?vxgla;LA|+JEPy~lhA|IkRhUl#g-oTbfd=eSr=0r3Oq8TT|Xm2*{-qwO(;^Bj6 zEhwWqjJ7%=iX73_f-0UjG15A5@o{m_`5j!y$VIOYHS*$oA2usYWhT|C{z)WAraM6QrVPNw>s=a>@m{4p3UHgSrd(590Y6YA{+2TF*GD7$Zm-f#k|qCaw{~QF{E+dU4tr2y_G4p z`HHM3om+KCEc}Ol_Q^Fmh2Cz}whie>Rx>)HaBdOjw&C2CAjWD=P5{%PA);uBPYDW2 zt|N-^sbN7uqL}%`^a=xZ_v^Q}Uxg`Oj20W-rNiij>t7)jd5 z>0YE+6g~WH=PxdGmVV9{oI}Rag;NKQqhB>9wdl2m>?*B=WpXX~sNf6ji<2=c2i0Nr z2!TW5IxsZK7Gr}3v?YlX$O+nf5^YD6N#cXiv?94bnp|h+YCxZmK;fid0k0iii3PI9 zvVhm|T&;x6Y|&F1PoLCzXXg6J01`x~CAJr>;t|L_ekCRr5YM$SGF(!$(kSw+*nTkk z_EOlm2Eqm)i}EU0EZ~X-qFx~Cua?S|E;C+BtGBOFqkZ+3F|}&F$t)HTDwfO?A95=h zj58S3OwC&M7?QLwQ|y;9+05-*cFC{O-&l+O;7?1%r+fvr5`C-=n|lrV;PO7&8kBG# zu{G#pEwFip0ZUjA?m5J$tYS>GDA}w*NwtH5Ep>2Yw%9`0QL6O!{kyk*lpfr<^+3+v zzH{3SaqreGJBiqrUZNk8dZZdLktEW9UZr1}Ul8HNGkX7D`VSHRWn)udl8>5>0Ke2% zxnlxFCXGA~G!aZ}7;<8P3^{Dp0&m?F!}z-l_9PQcdBEzVq;QR6wvZ^f zjB_;kGq>Ni#mkRO9Cdl-h3}?rp~FR2FEJ(m{ca1ko?Ml4aoqJIL;g5IlR@JE%+@o| zSWTF&ly}=vMxy~iln24(nQ|oMt&Av=sPrYIw~~m5!ZgyCh+`a9Yk`-JP+x0#{!N$? z-Me8`3Eowr)YFu=7Q}i!#3aK?x)q{+Ox%>h)@X*5smvI%Ja_224x3iw9nKzmG3VTa z*;(`Qo?V)8dt&xSYt|n;aWq>h^VZakd7F059dlyHt&_tF65@_eJMkd>MDD_OH?Ll{ zjv=u(Fh8v!*FMk~t<>2!Uhh7G33ByQ=m)Vz%%AbFW4I?y$FMUW| zl+7ZgfB${9tE0GWrfZ~FHksTUOqY<+%_OI@lGFr_1rheZdWC_G3c@g@Y{dwiOC^SY z?L?Cke;oL;l|rlr8MF|8Mw=y3vH3IRI{d8#Av!88)`GI0L!|=$I+ROr6yO-dCP+2p z@kwC}q^Rb|@>L7*mMcGL{Km5nA6)(5SKBz-p8O4)m35t`yeU2u&yAuX?MsB4Khn=n zuUvcXy)753HDdgnfpK`5P6%N_j4)V{Vk#}s^gJb2hd{rxwXOj zEn()>EB;0elV3JKFKC?$wAq*Zf^RJ z51xFp_dpTms4Zm02XkZ=l3t-F_)M|En2eJnxD^B;F-$MZKCWex#o^9Rq*JC5FIJjb z4S^0H4z77)1%|*y=SH-+;#8GvTqKn|mQ(Sct|wE~iX1t9mp0?5K(rS(U9w zJQSu??ORnGW0-cSYFT_u2`pQceH->l$3{oU%j*!xRamQBr=_6wQz=UiaMfyOrkuF* z)ydqCs#QHa=ExVfoGa(Odw@RNxkG9`dH2?t(>82mGBmj4FX>ls!!E=M{gsGHag5#w zw#-zv`+^I;8W)0a5X8731+f*#e5oL#^c(F692Y&5gZyw{#sEAMAzP?bh>A%~iWMpW zrnw<4fLd0Q4@TvFkUr}Cj62V$gYFI^Rbf)BbZ_?Q%Evb@KKib>tE}~OPJi+aP@yQSB-^AfrQMK13$70(;*j8lCKd>uMdpA4kv)gt8N)RAm%em?uamNOtSI zm{KEZ4uvbP8dR7ak}WnkS1)4r#O&qbMDeRV2hIPJEfs9jA`W~T*&fgzHUo-z`$`ewArouEO_Kjw2>{!=LKzX%9N0N%CG+X2G zV3}N7l9=I9to#W!nXTOVI(Ho2O_H^sg6Q$-s$nhb4l&%uoTmQMwY`lXX zQjUa?gO6^~A(RZtED_~e1@u!UzZIdCzk^n`z=n5He0=>FZ-F&sw^Vo>04?amlr+OP z+!JIh_L8|U0(|R)Uh(1YGGUhhZ<+Qc(nZ&ZRnx`z@nZZm=L@kVy-U{6bVQcgi$p4e zK$w82oIC;41VDR53ZoS}ePp%V$RVLeGz$eiLhmwh&e7X$%<>zhx z&Li_mc0DA4VYxNv`g4zd`1r$5?Bv{!&$f{&r%!!E61Ka(CFAHVTC6zf=f{sj78v(W zf&0FQs8lIUm#OJ4`K#qev|xPb(%h2-AyHxo5`sScuxJ7?z*~4fzAoiZ0B=vulT;}5TtaN>yDca z7Vq>HnyGZWa)Bt`T>5jFtNbz%2HS$G!o_9RmA-Oy&ynUh{}OkLdtBYv^)BLiOCdKm zAUDxMU&S{jwp4BmR$P-CB~ap497g&j@zDd=XkUpYg_$x7?iiJ?Ygfp3ngSKKq z#Z?!gK@5G}XhI+F-A|t{BcwJFzav3qbIM)aed+fxH|B31+bWh$62*f(hwLB;9~~o! zr0)-(ZrMq{q5mA%RgzabDuHCDyE*un&*a;$m`Q_gtF3IVZ%XIb+sv1_H|E$IbF6bH zxF5+liiK=Tk{{!}VZ<-vgvEpJ}{|3aV9j-6ITi_=)#QU^M@>3;|b~!ot zDt^@hUfz3n87S0LOguiX{@8%Xx#tU&s9z9}tR$Nn=~JVasnTn?k3aqVLC&t#3*SWm z!AY(@|K|Lr&Br!ra{d$NP8-GBk2xl<5HlWs&>$QqUsKAQeM~6}TmTibriCq>D^SEF zMiegR;RBJTTt3k1mGGdB6(gP^YVmmhZ z*M*esEurTY5s|bfBu~ou{px2=pIo{2P@MlME!sgcNy@78Bx&b1dh25=v5>0tCVjSs zy680oetg|_VHvpPgUni*;u8|e)CVwvpPOpV4vkToBd7RE+?huDL$8Hl%5??tMgDl=FMh#ix(26#XjBFQT8N{nUmK`wmk5>~_Z99rVftVq|Ys zuovSv0^4?iuN1p5Pzeh!!}uF!b(q}zeWi)vf~bWw6f0lnz_)s4E53Z0Fv}Na7$P@1 zoaq+$|HO@QqQqOYdoH>C3o-9lKr&`J|0R>wpZuhN?iBmDwwWCFKg;`~ifg66c;1n> zZXZ@rH%M~^_#ZC}QM@ZxDP2W|5Ksjy=L$?Ci4|CqND1)f;Y`4AeY6s}B3+b1iRRx$ z8m*v`f$%zUvGMRVF(>~?6*1$b#kZs<`)Gso6(snJr9Vu`y>wvrIfcx-IE4Q8-8xz_ zJLkvK`>v27lNL>FJ^aA#YojmZtUR(ZdsN}?h92y|^Gqree+|&ZWOd@Op&$i>NHld+na!2nOnl{)G z0|QHqN`QeCHs*)K#>3Qwghi$#+vM$J+Aphrq>oJRTqo(*pwcTY|7v{kH_{_#{ISn2 z9hJVq)gv$_e1u4LEp<$WrE4%N+GQ2uj=)s1r*a&hB#!d(CKuZa5rmML`M1bVbmEIl-V=1n2<@86PZ6<_`8fgJy$y*zHolHx@m5VWR(6Hq9? zx*b(c7+eYi3MtjYY@W2xzakKBkj&~6()Wy56`FubZfIG|iX@5S$hzgoSUg=pyU{Mo z$RD)Aa;c@5?yBvoDCW9miTA}TjG}N*bO;oc&W(X0!`x^TxrtD(#|&VSIFOuL?D`|e z_2)8il~mT5<+>}zN+_-%LJypOEY9yOys3`Za7s;{^}?*k0{83?zc6`ZPw_TcFxHy2 zQepH_FOVD+`dFG-{Ik^0`M&f`dU|j9;jnJF-gbI{{AQkp^%KhzR2GA7VoFJu2*40v zI2jHmzg@phkCImAvj2t*u>kfHp=QZU$pp$J*dLbX*RL0ZXW(4c95418Z*u&51K$>K z-PZiNh{xdD1gSd10GP*O0O0_OQON)jq%}QqSKA&I>q0*nTpoMTLslE~4_`%CbP za9EZ>K&|KHc08*)PqA06hOav89t&xQa<(J5yh@k9Xy*{ek3Tv55(^Xk8vBX8 zaTdKRtpwXy%gLHOtp}NY z>c}=KY;5P(C9D7M;?z++vzc{W4~;8;{k6X=H2o zMlVT<dYG6nd9P)hY3!+toBxi! zmZ$vWHO_1I)NO|kcUUxf;Pzgm@{8Cl&*yx8aO#GKH)5{-%s7o20_g_lbXnk-@NztV z6>f#R3WyeY`1vx){F73oZ;}|XiVuH!nazfjCQ|81we4Us$^)3M$}1^SZSY&o8Q*<) zXWYcmrg7h%_+iqn)nE7SeP{I^G2Th49TfY%5S9Ry5y5ix@yEn@<2Oco572%SJho$v z4OYA(qZq>w9SsNVOy6*mtP!p`14?;s?uwRA)WJ6O)X!3~5J61Iuh+KvA|o4jqwO<=Jl8BT_ zw+77IrPv1f<&2p#z*(8g4DBF&4!*NWoH5uh@!f0B26t+?pIiXZo?1V_*-)`^BWxFGUH&qgXp%nY+Uzb^a+6QC|+paD)L z_xnlkYsWGV?IRP(q}ikPSD83bn%RH&C!e_Li|3avUO2&34n$xLtc38?2cDNu;nG+! z`v=i}9U(b?IH)M7rlKB`;&@4EsyhB#gx-J&2+J`xb1|`O5l}3p+2`aw{*vw{<2&;g^XJJ)E3fYQ@$Ix}d z&?x_}O4B~kbTJ=OC@?~(1`8_UpduR}@n-g3G4m&uRMD+7M_C4g>=49A{=i~05JofV zO>|O8yyXUkBZ<(w{zv0UFH1JbSvXzs$tKh1jM)~SE!TGp7;t@XCY|M~A%40vPuxD< zRY$zOaQ^hEuCj7{ZS`P`!9pj+-@SU6rsh+njf68uJJ3ud9~M`6d?YfTD&SE=+?vym z?2dut0J-7Ok-CK>*FQdJn0_IFGHy%cNKh6C+|^u>BO=*4(nWa;6l%OSSUM0>P7j$- zFbLHuz%Dc7BiI4A$HIL4o@Z|>&ChcAIWxwj1hppbnZNu*6FXF_w zb<8MSe|$m=>Obr;Tf49d;&O~5Kxm=(1~UBi3SDSWL8XWlOcyPsnM_Ot!>m|}Oh~xa zVa&FROX8}HULQ4ayx8}8?F!Q8mdO)cW#sw?&iLc%gMouK;OdpYL+`lw(yJQ;ptPDv zEYD*){@x7g6;|_q%^#itl!4VFyv+I1MW2*N{u2i(mkdq;>VRWQ3qM~f0%pE~T3jQ= z=F@wd+kUb8$erxXlP2U(B(H63^R;s7QMP6KoXP7*aQBRcX=6J~+kJRR-zmd7b?Dxz z(}Yg*cf6N3Z2U;ZTYJf`;#;OPAfx_DfDRdPS6fpPysA|@&?0Pb8r}JCWAzX#7SdI1 zv0@#hDub8;gg+aD;0zMKc8En>GJ{Aq(&gU0*V|Nl!<5(|XY~2=rZoC!fGe>_H=hBv z{DtE60VI^sxdyXv5xT@GbWjilDV+ra0OF)+bZTJ}uG=)5qzL}J0LaHP9YFnz7#26O zCPk()@GN!8`0Ze!IPnFMn`dXu-}vcS@r)~te)gplSbUCA69@BC0BX!aU4tKN;2L)r zHEK$gf?#6W02ft5N8~s1Ru0YRPlxC1lvWm>!%1;|;8oLycxj9qY3DMCx&f&E4{;-# z8aGm({P`0IaL0{Uv;gJ9ct|3fgTjeCgpl&~Z*u9`A@rfYKYcuep38wsks3HZ8#_#D zRD4eA@md4tZk5uS;Dmyg#;B1-DW^v};7VRIn;L>s1RphOq(1#GQ6ut%#4e^w$<#%t z!MwDHOrc8`i8IN2uHRg@$witX#*4v>cagNUC)AX4Kq{YPnbd;eZ=*|(#M91$;u6;^DR}VUZc@(B?zmnvnjx+;H$>E|y5d`g zm1YSJe_-cC#p2I>GK8CSK^`R-3Q*OBaJsB9$+d0CDXdHb2~JB`XlRgKoV;h>Pd|}8 zd&@pMc1-@0X4Jla;%j0_C#E0XyPuTSj-J2y{H?Z6AJDrU*mxEC2eE50ssB{;vS1dm z4<1baFn_?l?G0-Cx~cVdQ|p`PK&67smt$UAqQPY}1+fkw#I{m`lk221ih*T8rZp)v z8Wfu?-hav;e)z2H{@p+Qv~LeR*@48~b2V#Le3LY2la}UL@VTs|CWckP4 z(_2nH+O2l?ff?K8w3^-Pjee=!(naUWGpSpvOc+g8o@(@Vu+VvQEvW_D^0I%S zp?$;p;UW_T_YQT<77w;pl`xC?1;+$4-+~og9~x!Jov->AqEh^mX>c@fJo7M6wO`^Z z{a}g{qM%93MaOVCfsf@5{20`Uwnz=lJQm*eVdITD@Q2HJN{8I>6QEkwqryTcL23_+ zK8VshXRr4-ugfd4kAHsS{p|G@%vum-;n;5v$k&+|p&}SQM+W(Vj7VWr@c!sgoL?YEOx@r`oZm(Kccsyn2Bb@1XM1 zERSe+Va)xV>pO4GoxP{??w#bo&V60>&v<8hm*Rh>-=8-9-n5zDlnD1`&TiRZ&899} z_uTn@|NgG~@)jTL_U^uWU+&$}Rm@rNWMSUp1q&a~oA(&f#bWkwd*Qu~Q3US2s#whs zx-WGK1z%pfZ6Ul!qqJ1erGnnNL(CKeFtEsB;;;fdg0l-G63P}Nlrv_D2U>W# zDH%~?WB>w5<^no~)T8Uj5V|ghZXyHlUyqJmDBclox@_Gqb)zRqvu>BVi@=+ru(?!| zSuh^0JAqpXjE5NpFYfgSasvsCpLsn&wpo+(!% zQfs@fQl$vjDoF5r#`RQb=`C`Fsag@U8(#8KT$Vrdbee_PD~gqPygAGce-#nwc)4#* zX3zf4+nFCWo0EODV9UwoTj-`k-Nz5_(u;^U@BN#7X6w%P8?D*=$*FFxp&1ieZ2hd) z=vi|Pl6MC!jH;P8a>tpv^~PQjH@v%WOxr%~`VGw=JZMo=VqV79kMCbz_TKz)X?@yM zPa3-Tv42+gj{VxyE$=_B%YX@W!Oi)mSn&Zm)4bu;R^5(7Yqi`}Q336)sdp4s5Mbp>93KOSCGYD-n-% z+>w_AOj?4L)31YrI?PuV>+rQICKd*Y5hAh=UI}&B&%F{01uv@?-tgnGj)DN45W@io z^&BeUYG|YmsxCb}agGF}dOe4H8Y6jlG?L8}k0`1$St*27SjMszr`Q-2Tw2ts2VP%> z@+Gxsc`H>!nZf;$3Z`-1tbG8qk@Q#CCDpW|)VTIHxI7*8ST_ioupQpPno~3)P zT_xSv%GoF$7XJY+%fnlmp#*YoiJ4Tb-aHI!3uA&W$AvL2p#uyy7Z61Z<0#Nq=5GTC zgjov$J(fiY@@25SiN9Y^`JjZL20?9tdIgz#vy@o{&$n19c9iE3EK{peSrpcoRtZH~ zMa`;2gH7`T&0Xh?pS642!uB0{3>~p+PVTa@R7oBeG5tsJ!)i$x;|Gm=r(x$lEn1p~ z%*>xd&-Uutp+Ul)Wm8xMc8;(@Y9ehE;>fbV-vkR;Mw*qdNMZ?ddYos+2(wbC}$7Yfe^%cNMT!kcd z{fbsc^&&^4wcs_6^gbncW(@tb41Totk%k3w1IC zTBWi0%(Mlozl=g;R`Sl9-gG_75FX5o_{_CZ9ARqQAF`bhFKYCciY*>)zkS}F;oJ>iXLc+8L8F9kmL4%hpJC{$#b)VIxOVihT z$QRQW=U-XAeCQk9y1mi72h!E3S%+8gv-~Igtw7=RQiD?Jlf!0ULBVF|kiG-iQTXJ# zVhP0*;Esc^oCKFapmR3f{$wtlG>Q%&n?{iV&QsDGQo|v%6*)SD94+=|nb$VrT5-MU zIP7~@#Y<=31F*6KG#TVE#vsI{!#tyQp#Mw~cmO>BaN6^M;v2x+6D5Ry$oY;QSG5}i zU1+TQI8cld*SpS=Cc`_Vb?q~3lXLNe)cfS9xVAN^Kk}`{ZM(mfu{d|g;CE85fx;Hz zVsRlTj1wj*kvw~%A`k{7nr!8yq=C(~U zrf(lUtW($CSKg94iY*&7YSpTKzufF0b^C-@T|Ojt>d;0V+B99v^KKV&NLwiqRV6Ws_xlm?^6|)!a*j2-U2G-=NLgw1NL-h42tk!G8OrxCV8J zXC>6mXur|Kj{jx?e)AAIhMj*G`;8bWp*jxNi4YRSwc2l@pk<=?b->4Nbh^|@Zi~*{ z7|4saTAK-dt#upmFKdgA=QNqG9|eS?1H3T&WfB$1%Jq)1???$P!$c5EE-&|@hUa&-i1XYLgLiW#oUAx(=JdS0 z@w?7mI5_I!+!mS5Nt%Y4u~`b39)YzPhzR8(C5ZR)qfO3XcH2VDS2C;sexL;b6`NYK zjxdi75wWG9i?k>{>X&>_*zSYEc3oPRl@#bLS`hyx)_;`5+G}9fSTkyH6q;=;5zebN z*MT3GNn@mbu2y!jt?RwA;s-AdivBTVHbqhN5ZAXuT-(S}sUcQTZ()#hPPziUQeN_xZR+?z(akgjQT zFBy_X*U|NdQDNMtJ>AA1=<+m@L03SRPcAtqzc78rJAJC4QbAU$laMFF9vXOzb92|w zmsZNqvQ`eEWB8LJ#_A}CSOKKR;|e;;S{8I9-_NqRr_qL zo<19{yEL7zAzWxs9yUO+nN@vdO*CY}p-6Qi!fX+cC^yCo^aSH5#Tplnwv6WapO1NV zgC5GxCe1dUd2hAJL5qf*$~pd>Oi$wV2-o8MBz(WjbpC48PPH_9L6f&vVt7}rfTqL$ z%DI*!Rsv0-5R-!P9*!%~p5J#5 zEi0@UIk-ZdX#*OLnKQR-zk8i}Po!5Edgxs8tN9(oAFILhZ7f_+q$aPsWje8lN%m`Q ziQ_w&Xu64KytM<(ym1cjWzVd!RFOkEf3sS?fVi$99j=7em|ZCr5+Cf@lwy z*aDCD94b}RFF`@*f*TCi*7SS{^*N5ZSbr!a(hBNQQls2h(p^xe7K6B}ixBQ+ZlEm+ z*+5H3m|AF5Cr*C4@O*;?4;Joy|Le;nVCs|^yC(i}baFxE2B)$<`A&5Co;h%QVdB!_ zzk8mjULwpt;7w*qGiDVAi#c0EGW!q6*t=xoVX51!6*GqUFDV=`e9)Muw})5w^!o{2 zXASDrge1H(ETsQvY0W2lBGw&-?5~7GMVPCimMwwh;M7j-0IMU~&3g`2wekinBC7uX--R^)T)(6c!A*VuA&bgkrHUdmN7xLd*~(l(6#JzXIbe- z*M};Kb7Q$#S)`>3=Uis?i~zYLbT7%0BjgXbovzNbaE(N^CZK;KxfZVKo)<&SLTT+p z1)1e3lz9H+h-aY>rf~J)TEvtp7qL<@!|GQH8o1`==m=B9RWkP&xFR-(R)WjSG;vCD zchonG9n`MRpg!sE+|A4AmDXqAppg?>G$*rL_uP6>{IY3dI=NYwt)KFOhnib1wS2fd zYJ+oLm93w(_v6h81YOll)?0OK$9_%8|BG?UC1V#2| z)k{hse_|nd)DI&D3Du-a8ZgzQn{~(~Ht>kYtcuLYvMNo;DR%fuLPQ=3abBY-Pd}s< zXtG*O>@(AN;vwfCtyWY1rP!`kX$G*OP115mL4osQtzc7Rk#`g8GYiJ(vs9eRvz(gQ z)M|Z{5WWWn@+OKkghkbmQ78^c~KhkIus!XLG5E^Nc*8UomA(h_cv^w4(}X z=NfyD+1EXIh(y-ZSl#uqwc*Axi9}|jDvJGT8}I}Bm7g#`9l2p~8uI0aDKCW*W|4s> z)Z`Y9GEaqfR+wOJfG2&mr{Y80K@+wU3&w|R17cM>=1-b5hn!eOBgLRK8(=6t7)`3DK(fxt)hlAh$#SW(PLsv0Ypo;Ujnnt$Xj{C>F1S( zJ}mc937~>Sb1cd5wMk8qL@$e1oJTir&XsEQ@6q42G+lhRc8}WPZblVa%gH}jC%)Ku zipxIt>op@&3Mt(X_kW}c8k^GqO4uHQBsG-P)Tk6RKYTd5urOQd^=8jEoh9ORJc+E) zR5(Ig%fEmlA&5Yjc@#}0!GQ6&KGnEX8r@>K6GK@CrxaR95Brn=fi;OL!TbqSc`6@M zl9LIWJ7SZ6*|wy9s(w@XS zM;5jZj2%AbdWEPyCk$sQ36Vk8qW)Ydlm%uOut1C(3`Ht ziH%ebQc#wq^Glf5h7qHE-^Sbb?M#mOze!b$BHNbB;_WOv_0EQ8^TavNH_R@STCh%Z z)|Fm7d3M%>*{AQ3`=Kj{|2|Ux00~+Zg68ye*P-wL`Hukl&v*2*@9Ccm@uG9U5`o!_ z5^5krcR(?x*5wP|>WF8{%u)MQ*4>bX*LL;evs+sIY4PERHib=1=r6n@3K#cyI)()yJ!qR2=Q?zCs zz0?&9W(%h-;YP$uGF)Ybb7NeJUIW1>^P znmQ>JC5+FoPf8NdS!sE^ZTI%&O*g| zT72yw^ml~>i8tvl^aHsH{rkzIcjFIWdzo0$el2~v{T%gmc5;T0w@LMhZxA0+ExXqo zx{7|7dzOCW7)BERP5znw1&va2mbMo6foqXMmJ*_?MdsNtjcbNhmIwrrA~f~FqgM=i zMOgLKLkSGmM&0}_~lMJ$!3!zIu%sKL`I7~ZCk>Y0epB(dAGt@(9R11dG>)~~Rz z``Zhfv<$4?WI*~e=~nSo=$U~~l5(v9GY|B58+GF7T)-^N!Yu7ESAb=S7y2kN?|o&M zIo3T`TxjWG17WojgX(fy?M9pr7ut1AW>a|(oWhu-THp?7Cno*Fi8>6wpgpE<> zwP|bJGcwg@)30#mrZF$z`s^NUhYlN_CczK5P5+ws>5i?RUfc#BfR#Egu?(5Hd|lA& zg6aVOq~^bB!Sk77R`1L^Z%w}IQ|03)O2Z66&6s z|F-644;{X3_e=e`H@xSrKX=07YWH%RE@(ylr+iyp4_b#SRvoR}f@wTA)TwGh#`Sb5 z_zex_62}U>JcKJ|^<6ac=*$~d3ZzN}?Yi>NP{dM`<=Zp!vP4~#=;R2iyne?LlXH`y zTy(a%LzN+H&F7)7qbiKDKX%K|Yf8>*js91`nU?^Jja1#TxL&G%wYuHr)G3FErx(Hv`vUmd%)D_)TzCFmCu${+`RRp$6#=(Qd`d$v7vOp5>v#irCsL zC0X(v^LCr1^%5KR$m~+HS%ZdEYP@c`+;9BIMs=lL+0j*_o7QExJ6kT2yiFy*n--x7 z3uq~UBCZd?eN~#4nQD00fGY@fadH`@7UXa(Y7Uq01Ro<#T0(!BlrsOPOj8MVB1xpz zaHWkjpIj-~i#ZJu-q2MguwC&(-4lFNkgQUqB=u&_x<6v%o@r%65B3~l=UsOQ8W~T_ zGEX^1n>Y4o(zsi*m zJ>KOMfMBDC0j!@>mx~3ZD2iq}Emh6pTU_~F+h_K&%-`6vGm)=Pw#3)0Ub}6dw5A;` zjRet|C_kW|nttc=-jws9@k@N*EAA-kR8M3Rf|-}WBpE&8V3H~Xn0qb+j7^9!fK{$9 zCeiC_MUweqk^F%8(C5U5jj|uTNKGZfRc(MB7QOY_z@$wil!~jLrVf76v;h&$n`AQA zTnDuN-_#J;CS-Or*P%shhS!>6rMl*6cohhHT!)vL^Klsk9B4q7N@o!=EG+EkAI?;2 zk|jn@p{HVx+@902KmA@Kn7mMPlICentDAPMb`QGOoy!-^LN?dEFdT9`Vhbk3(z$lw z7FC0trJ*07E!_?!poSO0$nh@!9BCxqnglyyh&YE}>Wj0XDM6^Ip3eY{wDaj>Gm4qt zN&@G^_I_-KKX0+ii_2mg2SEqKit$osY;j;!m#W>Al4DVz1uAT%WKRK!K=fAg&yO&h{uFSMlaG z{48aTh6_AabbC=8#A}mMira-?F6}544O3r*!8C+Lgds+&4@)B^4V4O211zg^Mc@PD z{7MA>DQL&NG^}Qsw<%zYq&g|F=u@!SQjiWtG~RAAo27F5h|h|p^sfWC2k76+mJ#25 zxnKSH-1*(JTQ~ofpGounqF4S}Ae}jbS8LZiUm%^NcbuE$M`YGR`u0b^$WlL69@o@pGsIzI5uf1q1VN{azU>(S2&l5M#?%3lw9!S57?52l z1q~u>-+d7tM35cw6s5L}us9drA(M4oh`+5pAl^TD>f3``Xe|;sYxUf}Hg0-8XYDi+ zMUy9D&-#Zm9+Qgn+oz*{rDswmruQc;FN}MiL~Yzm?;XqflpgKFdn`tkJd# zDp6`IG>WycsH5W!yXJ`*TqR8i`Fbf0Mq^Frw(C)RLzsXnVf=}OFmzrLOP)j-9Amce zi59xU@Z;mz)^updbLWEMfI6k?WKd`YTa|k4dIyaB;mFrMJ67N6ov?Yt z$~|&@=k+6Az3n}RpG8krW8zI}T|VwQd+Gb9WXqKK|Gu zfZgERV9vNJ%{;;?0_*d2R7up=i74i{Dr|s(>W5fgddq=;uF-P1iyqxokF4qs4clmG zWpLW&u4q90Z*o$k`1Y~yhW4Ge@~_K-k2c62^$}UNWya(K)sJLsRUB)UbtlzKpWNIx zcxUzabBoS?->d;OnU0P=J(A9zv_Vk?-5DzA39B7$ zW_L-dj(B9KnjH?cI<&knKeZOc)5<^?&ej(;`G>O0GBB=70xRXK@_qM1{~HX_!lckn zd|{|f?+AdUB4aP{{my_=j=aZen#b5oUl|0(N)y)b)j)oQvpaX#Bo-!wGzbAC85J@WPfA({jONsk{16z; z?ku@l1`ql;ESdmVqzo0L`~+BEy8VhBv4)_a5*f>u8}mxlt>jrvq1GfFg+wIpUSSR! zB7;D{Bfc9r;{Lhge@{FzD{nhVDmb%d^SjIQPh`8!o_|KFT&N#2rQOnPj=4Q2X7u}L z5E+osfBcMrs|pXY(Z59}OBpvo~PRmxcTTc8JGJA9g=-dS9XL%|cc7O2G?W4!#QJW>h zir~d0ERd|vt07Otlfn>KUAY~IcjuqxK5LHDY!3I)WqWaD0oYieSZG(^M}&In_v7QI{y)u9HbZaqwjX~fsJbpNC5R$urJ%2 zq{>s|TU*kT^k!P;7sQ)BcfHsAFZzfec!ha6TJl_s;*mf1?y-hB(86$f9|B| zR$iusdor;V3vtzDMXXUpa{0$mz2v^w*%RHTbf&Z(5|Mx^6Ukja z$HcEH5JXi?0(c^XRlim>;9AA2dR0a!_Epy{Go^eOe;4~F=z_OOthcHl_*M_0AxtMg zIhNi-VZ!{s zZmr5PC0Cg|;`gD)4$j#>pw=5njTY6ZAKyH!O0CAt(^qAzx}H#J^?=QXamOMeB$Ygu zS&MuqFqA*9ae4*HFwBq!_83^ud8bUEb$bmm#HXfpu!4da^waOC5YJ&hZj&cx9&gf? z%gm(FBCV8tRIV@Ga5ciN3WEX{%n>g;t4lYAGHbR8bw3icMgUNGcg3bwcLSkm9mob@ zkbBZ9VRTDCt%mh(z%ya%jkELvN%6NkBhpDWlmUw!i%2oipELWsARO z_q@A$_m0(z_7k}sZhG;|`iy?J#&uUVe@ncbADsB^{_Wy#PJy?h=sdo!Nfh!Hg02(T zKr446m<%!L(lYXjT$U?p(5Lqr08ouP-FS>isMX|F)=XfatJR(1#D+({8@qY-#$#mZ z^1cJ>H?5HN`ryaU#$mUWYs!rEe_W2DM+U_9>C|vtT)ncbI@L)It3$l6S6lzjd<{Wl zKsIc^5bc!m>dtEAS!`035ku-vQxL2$M=utL*6JM`h(&oO4N;}hc-*$8j*t|^AteeQ zROlsV&~urSvhOTF>X-O_DJD9Hp4+zh{JHI0&Pq3$eYZSn#UE^AobX>rtn2#O=YJL1 zkN@`gG-C(PMVCmq z(&w&5{rcLvM=V_@o?>xspZiJF~Mtye}Tht5PS}N)ia!Pl7sj zZT|b*tIutcz0cUZzgPW9uUcucSkqc^`u%_Fas4%kHaGe3v0+~|t`!8HBEn)aEHlFZ z4K7qE*Y!K*sRd&Qb(Uem3RRFC2lj`BTG5ljJXZ-`Y*>)pCO$s@wKRWb%ewR@N+&*} zFHG6u*)yVsDGAn8ZQ$b8f_2ZH)aLQkcF z&Vx0OZpapD8iK0}o^EGzqf@+!cLY}*0YyrMU{=Wk`b8jbXfoz{t1b&Y7H>FD;wdw!y{26ZceZ_fO%4#;s5;_JIC*<&RHJk(%_{sk2Xt zh!=@kR{~+9w{xevNad0h#DuOdQJ4)hH6B}FN5Y#MsZ>_IxymeB{0je^PYm~&e=p){|`0-EKWXsZ(OQm1v)4j9S?C;ppm3i@~>D=3B=iFYw{Pm3ok8h9`A}!cn zux;0mp~Uy5-^yb}r|BNEouu!$6hsD-unCBVm0UwKVy5W?@M9~btQ&tbozCY{Lk!%{ z(hf@15Y)VG22rW0loePY1>_>Bi+hDgDyvBvt6st3zF1e)HhRyI1}=cY>6mKc71L2g5okC4ZSV!$T^E zJs(2&E@Q8dM~>+mcn_jc^erS0VbrWUS;5tV+uKjnPpz@uyTzxRf# zKHH3(@D=tU&}k&@nI`Efa}0HIrT&SvbYnMt+T5kW+_OqAPe&BKZbuY|&v0_m^*KW8oWIF!uyEw)wF1#x`^}yRl794Z7}=Uu3bb zYpdbzHYag+n;rb_Hs3t2kzPx^y$z%^Nf5lSp8~vxXmrc^sP)q5?JMinD26pwibUAz zD=m1(Rz6JVSdFN)z}FMxV)jcvWhiRZ?RV$EwtBE}9J1J=Sg(s5gPK1{6wNGcpOO+3 z9L(BvIOdYyBV(4_8cUt`X{4(tI;7*;nRO};O|NH-l_E*{o-^-n#jQ-XkYQ)0eEb8Z zb{9QG@5~gjPf<4UCuPJPuDY&ij%9i8N*M9`7%{sCM=RA$-mHRGlbk;lsPcdu0Pk@Lfi$N2}W_21Bjgwh2=p(F%dhvP8mxNV5LPf50b zB`}K!O}RONJDJtZA;Xt{l|^wEnX-uO=SYW1`rgwgc1SjHvuoj?_a}ew9bt8mU`dQ? z?ViQ+c8h$CA`<;E#vO{g=IHl%<0e}hq9M?!4e=#^M3L19C)!8#3lu9-b4aivnI>iS z+#M-kYjL&f+R0-t9!j}n|LONm<C?~`udrQOK3Lp$oYny72=INgkUSg^j| zw@Ull4RUA*p1)Fc>XRW3cIVt+UW~5hM2_czhcqFVqPh6RF;mMI?dfLHpXuxZSek5H z*&p>0eH0&c?^Ub@)|0{}-Jk_Z)ifqhufjw>9;!zVi>~*KX=MbQ%QfY_0ueJig=3w$asEB`%))u#bnWry;#}3WcYE$)|x?a0|ngEolesP{^8(UEh2TwFoD#q#ULBd*r`{|R;m94Rj2 z|F63OF*@v4|^!M4J2x#pk`U;m$nH3kHDv-NH@;C zx9LjGl<(*KO8gdQlk)WYr^}walk?T?Q(t^=?)}1}AINp)Z`w0G>%F1ZKOA+aY8(37 zsr#c&<>npPy=difaX49oai7HMd4gH>#=b{;t7!~4@5^eT+<9(>OzDx=aKnmCL*?#N)^8PiNNTLLZl^N#3u@2WeDqtk!4>QiI zPMK$!YLnOIUOx5DuP~nnPo4gZ37@#C-WT7H%{0AWYdsOB3z25%RfUfpmXobB!m0H%rI5&lnVi*M$L&2nC_stRT~x%I>a*|q6bO9Q+N6gmqIh}8eX z<+Y6Je=pBu4;g*YK!<9GG+GvTXZ{PVQ%cSe+JLZ{9kB$#che5MV%EI>E3CPJIhqV8 zB6kqE@igcJSjqp@pi3}_yt&+H(0y?G8O@$Y(r_H9_T1r`r`q#YuGyvbTw>_d#A-i$ z5#0(GMk&F(W`KcZ)X(8jYkT12YIA8Q88ARNE>~R^8PTdNs$YI&=^YbL|-c7OVz2 z8U9T63?fGzfz%w(v+m27#8nH#1D7aR6AVeQail3;>Rw6kegoV{%0RzH^8YU?tN)k6 z|4_%|bP=rc1z6_@VYVXi$g8?k3^=%SH)o+d%Sak5v`+}XiHA>OVVX~0ALKIoVrL2^ zpFOZWDhj9ifi=jpl{IbkH|r(#lT{=eHE(ucTx>FL9yW=ZU@SQi==7TteA*V4;} zKB70aK7W9DxP~aid5ks;5z3W{NsUmNtfl)(8W63)+tC&TU&vftvRG1}3T^|Dkqcyy zB(QHF#+r}UN+Nq>YG6Lz&}X`VMh$)+ydOhUQ*Gv8{Wef}P&DdZVlQ=an9sZK*hin` zjmj#cPwR^VW1MC;`|VX2Va5IxSG)77NxF#knjJ; z+Izs)bpQY3=Y7t(xf#ZdOoA*)>>whg_8wKc_6kX?ik%w?u{TkB?@{~a2#VIKQnaKf z)mAB5R9h`w$UXT#U+;6z%{j{F_xb!EUv19a_rBk+_iIn?3@m}<(L$++&X8P)nx_*Y z8w)d>BAM2eDBPDE@^}Ub9;eja>Z$3h>wGx)eql%QFCBm(q8?LD(r7<%boDdY7au-v zFFjxA5a;i~Y4!*1mi6$35%AtT<@OOzRU?8n;#SmqQ__psuB=#7Y{Q6vY!g)k4X{Y55>{bs>6L>7df zm!_vQpSN)9xv~vU=AYTP>GWCk*lFpB`t-X}iyuv8Wq$3)+OtJ5!5v$49^NFV)DI^* z4^sV09{S<_hoyF0y8+E*2hPX`{ewI~S^q|rU|{O{U^Yr=7mP%N*x&|uUb%!PjF#E!$0D0lYi^;#<@E2d$mJ-|6261Y zzxZuppCOa4oJ7-?o--FMnyGF@X+f#gE7YIlI*S){$SUK%pilN%%sv}6D6z+of%1m~ zdJ=!y47II3_HE8!)i>x?oL`;6D%E%1w2P~yEBRIM6~LI9>M6MmhoV2(hZ-M-eMqyc zi)ccc)3*NoI@OzOCJ$cb3vCh78089@eTW5^?8AhFS}+Si!Q4vpBMg_ssqqv2{KTvg zY57-1v#-Q=)S*R7BsJT`TCp|xmDJv>zIuvnmXhG(pFn#LhW;X8wE@C=8XA!F3e4}WuekNH`dkwH%dF(OBu2Mn}H}@Uue%(N338c z)KTxT0q@xtu>p(K5$xnj_J>-8{=`aRaW#s4Lw|Zrcw)gX(k7lyGgApLpRqC zH@OZ>7NR%xlTpg?8+i3|Q_E$QqYag7fE%SYDs~MCXLyec7Ml_ynem%?i@Yvt9{SJ*{c^U+IskzR621; zTF;q|4U6BN7+L$=qMZj9Cr%wb;N5=6(#P2%U?zQovo%|X`ewO0sy{FtXQ6dyr4v-V z_zmQy+d7m6*zL{_($Gc@o$1q&ZBQqFhKrJ9N<%3k4A-#9gz20;zVa9KObKLi%fvX{ zJpq(<9>h328c=_LERSptfY`|WU)>+z)VB2WEo}aBwJG~$ouNO#Qzx&6M~=DlEmmnG z8`jXRp0hH2eY(NGaaz~biB%gA<25!chM94HYJ#8itzB*ASETWjVO672dK3%f@VcT7 z{r;B`Lqzd(zF35y2EJ>F=TPgeLCwTqIc)S*>B5k&%0zbh5*2~B7ga3UjVHf>FUfUy zWaY$(PubojcC}v@wOiWSP0|V+qCJ0>G%tS)R#AvIKEg0+TR^Va0EW%K(qsMCMmO3@#o)Ecqu zdo?6Z{pp`Zf2((6)#mJQRVMw==NL$a zWTHb82XV_v1L8Pdb{lLVv>EO-JpVG-QYGn2h`k=H5wK@C=zbl3%U5V+@)4Q%68915 zXRc$EQj|L|Gm$(RY|dy1H#rR`EG@0GFPVA$l$<6`U;o}5J3CwJqfc2m_0Hfb^w4u zySVU{TOBdM`}IHnI-h~pt6T+v?2es%YoFpZ{Q0HARcJ?npNF0VccOd%cQs!D(<}l+ zg>-w>v?~4J|9|@mpeMN+(NW9`(9*(Okt~nBVL#CO`XRN8x*ZQ{OQG~84-5ICCa+6H>|{|}x5 z53K(sPeGV_3u)T=#V25$IeZ7$imz)2PJ*^b(nh-D+Qn=A1p4ar1^;h;f|u6#@Ads_ zZJ^FnseLU&Vw{!;Z5tPDSsRnJGQcSCh zC{{Sn9H;r|QR9Fd8P^ok?m1UuHQ)!2`%DGuAn<4nUp6$a^xv{JP zy>c9{7?U=sY{FPofT(|1p?M7mgx5zAu6yWP4EGtB6WmxB#wSkvYQ}X|6b%tBsegH^ z7t+$$E_Yjmwo87Qq~<*jriKV5@2D8_<-E+tz-e6(M4B_gXFF-$fx-!ldW6`-3rw1s zTURZ?{kj-RU{uf)tHd=CsBMP0I5tJH+T|apMcu%Hz!cye$g!&q^`B|XmYQ)TSN%PG z80)THoRCdw8_QMSVjq{;Hgd5;J=%A?$c~_7hZX#YPDRueItsomt@pm*h|t8C=@51I z7N>mf0-{QY*a&!Wiqj>kbOfDXl)3AfXyJ}8ggXs}p94o^><)k^BC>~~$iqa(#d9+d zl{EGn;id-Vk5l6j47e6ssu#3joEsL_uUD*6<8J-aXV6T}g9p=CynID<&}7d1?_G^Y zq*6;4(tu9+O7hvWB*CaU;RdJG*(O>w2~VAO{P%U%_gpE{=^%0iQLKogW))j!1WL zgpiV8BvQj9Qk^tAtH;fAa(C}eV~r5Y-(sGYE8j{!dX#J;bv?K8eT3$()}T!qoz5@$ zp7aeG6-unmrAm@li33>OVprE{O5BSxl(+%>z)V=kuvB<-!w~7Q8uGR{uh!!vre0B| zpo#9^<_mGFcUFPye-l1v`AS^$@|Iif09|1YXo9atD!Y1Q^!}>Va>wOn6y2fp}esgkoy4#ZB@V)n;f>?xdf^19r1 zz7rksO}%+vvy))H69X!vqcj2c<(&j^cP?}~SDK*Zu6TOKpiPykY#FlUq?pFuYB*r* zT>FessWU`ialOM=diU$sJMXA?+SzzThbEiniASBy=5Ja%NBkJvs^Bhg`+GD=p@M0$F1&`zp zJ<`J3GMQC>ai5joNrPt|iGI#s?tOCdbWlc+`qNL((4#va5x&aEJxG3jhmBUhQvXS6 z{g0Y=`0%~I*br8=v9mS^4$#7W zia~EImPMsq?TV3yrdR_i`f?R_F{JOvTnzz;jLC*bPcUjFs0A`0g%YHFHOg8-3GL%* zA$u~=HIz=1$dpYP2VWVy4wMNL$I3qQ`TLx5-;<`(E#L3WzEWc>2i8p3VdY{w?=R~= zFl)L$U`4O)$y$?lJo(&>`6EbZ2R~Mef_x#pqF_^=28etR!|19Z2$#q@PPlzIZtsqc zAUgIdMYZk&s1h|00h~NaG5!L!!qb+}?;dSJ(CJ=U^*H^`u1R8Gnpk3zvj$S)+1F|` z{qcl>X5wkAtE4Nk;sc+fab5c9{5R{;23BER2LC6mtN5$e6=N0iciELine6mn_DQDm zV>WR`OnKH5F%kT6jrJrPG-V1_cMmfEOF+#JvAGEv)cAsQsBt!-KQM7Sle+WjWX%B0 zql>;cs7i+q+&Cl$c?KS2@GF7*O@J*%$D#R(3&PNB2ra@T)|c&OjR?RyIk5Mt85tR3 zdB9q1CJlYwUWYij{4I|Br5xtx;8i6r3r(DyWZ0DsbG|G6!T-7|!R89^p^KGC&inAd z4Nq=G!nhJtf(Y!j8^Z|LM(ADWMJKeFpVmV420G&BX@_-EOo!p&Ix^Nn-39?LlOGyR zZ7udkIh$o5x9mz;t+NBBMd_TLJ8kt-<3d@-b=_>_qSx((@Y3c!pi>h(nn=zvLahTz2k z;C4gxmTn)KOfA!1O)?4R_?4bWM=kv=akFy7A@bS}^ zE-jzVY-%}n$9u+#i(*GM89PM9g{LP@vm7$)7AZj$Dw0e>!{_oYy_+Mbewrqs_sSje zqt%5Tf1nEh%+PRYKB# ziwm~xb{%)7I9QF!$dGOP)TJWKedsfmP8SOgolQU0*VzLZ1wC>2B6X+spxU!=aQ78T z6t65IYgf+@=E6*;<1h%oF#Umvs7>5Sk5O{S=w(QX5XPn9OC3KDd*#+1sXw3qT+vA* z%;Z}KeZPzp+CWwpV4(g0c7EZO2m@yHSTjXV7YC?4Ak?04yeUs;B6c)kh&(m>+UFI)xnuIN}TIWyH$;WEOOf-NIt>cW&s+G`aZj6Q^ zpClAUOe`)&Lt2qahtjvf_%tYWj%d?{mEy5bp74V;@*FkL3b00Kjo2FK;a4%1&%~^h z=cq&tr(m)1^w&sUfp4X33~&pr3>A7|7|PmX;6|$Zma%s=v!&R8w1O9i(1`f$hb|j z*DXw8C9{@@$)B+=^p=65&<7A3=1~>YRbAMtRM8?ZRkWN2*nU-CVgBhBA29+$&`*i6 zaI-HaHa9k=K@1e7^)dT!qqK`5=VDA2-Ot8-Wqk}nT!s*gQiSIYlY(t1J#kdEIjZM5 zssoJGL#xMD2N)|;#hYsus9&+rPwx#&y8q9W z8tZ$uuQGV%dn|NW`UgTb91?L(Xmb^LB&t&I_n3l^Fz|o zKELCBfLuGjzJ74?-12*jM@lwcQDW)kEWd0#PfEC{V30blvvzk6oo7nRbfZ59QxAG(&*GtM6Y;~_~wPzI$-FqPJ`$5UQ3;Uxq^w~Vi$Ixb5C}^Jo zWYrWblg?qvw$^nHg?aFPD^Mg1y;%^SMk5|HREo1kSUs#ztmDM+&`?&R@~oj@tVZef zv8sKn8Z@Ke-FKzK^Cz%j-eu;!=ml|!wIG@=Gh}x7VlAQ}Bi$6VHaRA_4NPhP^WcL9 zu@-|}1A^oAh_3c8d@)RkuJB2@p>69$_y$LGs-Rx%r%uac#b?hJM-A;C*tf{Y{P~bj zB4}ike9xmcu%QBGH5Sg2qV_*za+rog@Yo*dWY9riNurbo?m$C|2UTfwe4<|WA3HXX zmHz{~>t2uvY(EN(I!5TBNLs&XbQIC2shJ#29OAS)ya8HO&v@fo^g!dPKy0!5gJWr@?*DW=?brjc%)G5z=cUcwwtZHb zSmh?G7&vldpnCm>Qn%D={-ehPvX~##CP7bgOYQh8C_O#!ubfhj-vYn(P&3a_69Om?GAO4?VSi*23s^#p*qqviCu`aq4f7lgV;#-%9L-2J zklM|=?P$KSc&bqkAl=*LP138Rse_Ck+HoMd4~SBAN?;J<$OBD9{vr1=y8_o)wQ9Lz z4_vu?aQu7hy$pEJGTHKJnc3NyBg)QnHd)$>O&QWXe}wAUR2t0Qs$tpt>t*MOFMmxL zG9=~K>*AYNej9XXgY)>N!^#pe$d)KaH;DB%9A&LLuiY9xXzT`2y;8r$(7|zoN&)Wk z;d8rU`2}!qfcZrG74KH9N#p_IaUAX~jBwXE=d0k3ey#t%L0>D+QOgZ_16~63{8WrH zcOA8CjwX4ICb5o|d5)H^06hjN7(pKo8l*g9cqv_==X0I_e5&6rD{8Tbk z6ZPjaw|e*Q-}~k#%>T@-q#cXYpO)_0Jn!j?+3U7uvocF}u_0aBRgTzFdf2##?lJ1w zdM$<}#}6q9TISwck09~2oJa#KA~-BKr~el$UiKBU1PvJf!DpP`TNIy4 z>VC8_`j5_I7S*A{)TxlCQ`E)sZg^U$Lp{^G8$ot)51GyZIeO@wUUcu3QcUEoV)%oN zItskShNu>fn3_&-*~LAkRIti>5yr)dzh&H2f19Ije8_B`nMFQ6c;c5IPQIlsW<5%< zQ7mHhaaQg9{M$LF)N}c3U#O=@`lqUkc-FuxSF4}d|G3(cg?*{D)oT4`C{5GV?u-Ob zoH#S>*xk`rW-0eZZ<@U3$o^HG)J3e9FN=8?iKa6*c4lt;{bKm3Co)z!3pz@=r9LF5 zpSz`pt{USfEY>I~(l08(!vEqVJQf?V@LKB4BQw8OZ^g5yZ`JP-SmcFizq6=1>TTxO z-FK&&!xrr7vy08y)o&LYr1sd=XD50>Z;2pBi4^p@~0F(L*1)Krqter?OQ)90mE#ko4StP zPqU+zefZW=&`jcm#zH%xmoP-g5+EZTonjsRVjXX22A=NMH1&gT#uKcY*>c`8kRgnk zPTb({WXtJpcpiMJpUnXax1TL1#qd02^&7UF28GXHu`~!zM;SaYAP^?cxgH_G#Qf6B zpL*3-;6sJqKs~mcMMobSGa{~9)j0OunBINIj*PEbIj-f{-hIc6i0>7rUchs>SG7u< zvz`7%XWKEZkEq}2Z;Zzs`fQar`Dy1tgF07Dh_9wT>O3f=OZA$#=hY=;Q0MA36RJ9& z(W`V%y{Ek|p{k{n`xA!ubxF}a3-{LZ^5{sPVmTwo$Ve{6{jz1y10e=}9hx;zCe{%d z>j;l^1jZtZL$7Dki{>yPCI~bl#rVZZEWr{G1saLBu!N`}3$t2cqNErp!H)&`StYfS z&-i}L>lDF7EK`)VRkytuTU6c8dPr+T*03ph#zHonXvU%|`7UX6M(XFgr19yx#ne3r zYi=sWI;tB~-y)fbE#9OH+iP3d^wazWzAKx3D&7-W^JeOo`FBP2XbV<}<`8_Sery?N z4M1M!x9Ei(BW#4nvk9{bHn~f|6{2-g`rV?m=(p9X)2FtmAIt45$MGpdqUlq@dj-GH zr=*63pW^-+VqpAJ?#SK%d~0c8((597I)65~?Dg2je-YU$!D~HysVlxQnghMesMP|s zk%FMjbwxTFh#w^U--P%qt)1yS#Aj)pynlcG9zDP(3c28r*^t4-;NwMBww8CmeG3{8 zxox5EPR{^R0(l>5V2mkP1DnDSiNa#xkcN{fz~35VMRS%Y-r#~ZkPwr=s%5g@?lRA5 zS#9Qy*ua9j9^I`@V`Ij&OM8ndf-H^)7rq#g-E>XO(_P+MzF%~Xik#V$bcWUF;U>cJ z_XGBhP%zMwv{z_2x>wR7e@Rv^h93W22{Lk)X+^S#&5_@GCDqB1saSbY{;hV zgtvB!3j!-C0Rs?n6na1DoY+?o=B0=ehqoQpd)#;9(o#Lfes}7oHq)`vhIjk582)xj zN3n$ZblJ=%)9bHser5T3D%Gi#~`@HkXOd;@j9$@ z&4PSAhHxCmKmMgsJ?9O(7-QFxxLJ36<6-rl+zOaP{Um&NR;d8pg;OGrb?8W>2LoV< z8NVCz9Q^1kA#;HA2EPEAss^=&uOSX|swgYa)dYv)R^imr{vs>QDy3eW$JXWkdixS@ zaPRy>y{0~1{cKj^Z|Cp+>Wsw-sekAn(oT2|Ubj{q4*w@>)f)Do=MskLptgk8D%Ej* zJNpH*4SauS*qlX@c;&=gySN7FLF=C0NIo^ruUF`v**gw9pJ9pMTS4ktD;ju!Z+#8E zWfeQ1BQHH4tgiJ4!CRt*U$y5gn81kVKT_vfeCYimd^Gfa*;4Q;p5KgYlA8SeziZD+ z5cz<{eqh>Fyx(819&vL{Vx!z`rXQXgG3XVYzbVDNdH)wzsiamOsntswolOeUhH*m8 z;ck~|)xAWtp#VJSKi-J~QAc^X+K&CYMs3wAd0}Se!sPyJ0zwiEoi@>--eqN+?eS;` zE2aJ@E~B+?!rB{PPyRxtMjj@b=iUSTF!kkfl;nJkd{M=`xo5x~ig$(IjS+ceeK9zc zjcquY7k6M`C&kEtNYlSow~nG@~rgqS;=oPv_^IQ<;-Kh{ramm zJM;J7*=^cI2gF)N-~@{4(@af7&KLg56VMHF#nXc)d3nOk>q*XBTyooa_VqNE?GTrc z3+-*C2&0e$F$+RUl%;B|K%~r1GpK(1lo+?#xl^37QrzY20?FYVD6VnVbixUVo}Y*e zQteDJVTyq*nLw>SFyV}Q#a`Zg#sBYG6$AhI*ZO%srhlzpyt5rGtwqnRY~BjB3Hz0o zBB2K;pH=#Y^D@!M2kKf2VqKseokluy+Svjcp*;O);SU#$G~_gL0EBcL?=LF!*Y>Mx zv>cmEG{Vo0Ja8r&VIp7eK9(jUBLUHUXuR|>N$ds)k5cI7UwXKd8}xadH! zg&3uF(yEENupd(Lt7sKPSaXj0v-LcdA1n-2O1LHkxJpn=scNQb8+W{%1<}-LvSSb` zGY}<#(U>|EWOC61NnRy12=C=vTa033t2RbLYGRTbF|M%^Ty}WO0>odpdL7*V=d0&^ z-$;za>tcjfFI`*51m>T(ZFtz+#o~=q8&M!=m);OZ{&_v+c$$B&Fvs+rA2^@s)mEaA zQE=a~5`KmXLIPr#72l{$(5y&ZDh&)&=Qd#!*VP|zv7jTiu6Zb;97f-O7EJKD8dERL zK@kLSO|ReF80X9J=02f)*MLKDbbkYsM1T7^JX~VqK z`E$NYXUCWKo_uz5s|N4dx6PWqt4rG+sm>=OQdXpN=#p3@q2UrHt?zh=6&d`+)>fC) z{GhfE77jV}v_QDrZ_-z9m1bW|JzIA&V||u=dSDfC*#vOYGn~sJorE+I=>+Gp)zq~- zcQzXS0{*=CCFin{>PDX1>L>IN&~}e=(AP6sw{`|N7?ZO^iVJ`pIJ~Hlh$+3W7zJ`5 z>Bw#Zi=~nt-eZO3sH50|Otw>fhxfi2`Qk%Mt7OKKUxcFfi@X0#X;jVq3feC&wB?ha zh{KzrFM8@ZDXm5pk7xygOvW56iT5Bw8Wx{ujU}0u(@MP}o>p&*EwzF=)H5dMzvnKg z17vqYeo;5WXyJPoWb-*>hXdkXTz;X^!6)}hU`c(D&=TGtaH*7uDxEwagS*)Gb=wVo+sS?+e_ODZuVhg0i zqD=HE3^sKlL5L3#FzOv1?p{|s7FoDn>8w3DIpwp%c9!v8N@{P^4Mr8+vDM?$=geQd zzhb`3qSV{P!cjno>`%aO5nxCWPm3Yq$<5+dGD$tr8{IN^;*-VHDX&^}QhLcDRoFmq zTgK+}#qr+UYMfynXV>4*_u1lzq>pEK8YOJbX6` zS*z|;FDET~sQ#1IYpT?)(gWtB-g`h@jS%JU1TI?|*;&ICrgd}yS?m2UOd$dHUc7@JV4MY!&u?I9?P#nsX~N zb#&6y5GL&X9z_T%{fxccA~5Pb@jJ3&u1k) z`uz4|;wGEar_zs{QpYQTYu!ldBX(#??=%ss9+_7B19|UWOieM4ONsSwKoeB7sVPQ9 zLJ|DAwFPgCSxx4(DIP|{n(t1mcIEDXt;54-E|bK|=Z~bP&tSWji|_dVaBAR(WBhxU z*)?@bj%I$b+u)?-;Y&mZQP9&(;+XIuwk)`U=PSco*q(FJC))E;BX|j!a71k*-^cp{ z&^Ol`l>16fYI2*oN7P&Z3a*YZB zlw3oCD6w9WVaA#>a{HinYC^`wg|%xJquIIn=Q41TUBq3_p6|-_OU6WN@riRFwt(HN zLml0h*ku5!j{db9U1>3ixL5B+l(_c>b1zfHERoJp%oeHjfJlk$Vgo#-9LN2a_XE*w zcJ91-KQJfk8?$R;PItX-{ZMd(tUPokc=4{QP)=+`2dde1AM?p;F1rq=*_odv`F`K# zr^)R)_1u)42BM@9AUOnJ^OiEX{5Uflt+9=xS|ZLhgiDoSDHWhkihoykZe~ zek;ZY+O&!@b89FEviS^~QbH`GglO6rjb5Ry$S=3+l!iK^r9q1pobe3@BioGd3BMy*{CflGF}?stSTjmYO8O59es7?q^tJykCtsXq^`?^ zC!)9WvFE+dCVZ5Xa$@q_L)#ay&R!{my(Ph0$cGv&o&T9A+@oHVy?kpY!MvFolXfwWezc(V5 z&ZePL%B0n}-DLvf!@MwO78{Cd-98a(dkg-sB3K*Me)e)zxlwkw zUi--jOQ$loJhWK>RMnC_G!VIOPYbKq|QNaacF4y%gW+pDn9U;1{ttXT#7K!8y;vGiN zD;RA-1Xxmg5$9rTa)t^j({uxO6B1}Me8&kvfmTtB^dNg%jB$++;=zp6+sD5gX&>BY z@eWyPGBzkyl7BgSuW{-V%;yvD^|-e5eN5-;WkKf=4CC7^j(gE)(roemS34iD?uVvg zcE~sK#q*fe$J(C$`?t?-pQ72=aqvBSigT@iiAY+Oo`!2&Pu9;f0`_tQ86K>ntKGVh zVyQ&J&}$F}%g2{Tm^i2s53ldn}zHZW_XtEMX-Ei>D4}eNeH9`g_L# zcJYr-ci-=JbkaZSWqIqCHVak~7phwDgG`-{%7Y8V@Ejj)pJC)q(WR@QLMT)KhCe>ox1T@_eL)Bj9I$z31(D5L)Sqb!4%r*XP7KSLWj z&AHDo5X>ZwycjXH5+cd15gmChH|I#sQT0a_`r|({(zCK8c}&ZuEqlndo94^#@kM@EiJ;C>SR}vJwE=-BYFL@4;oj$FnnIG9d&DtpBOoD;6=i_ z#s!b8?Lc1zH(>hnQ;FO%cj(cNg7ng7A;jA+-uQxS!|MCs*)%_{$%YY5v`@S zswdU&X3CgjFpBxG;^M&HBCG{*8 zBu-80I(exqHycY_Vy7w(fRRATA z)BSARS7Pajb|w2#+PjwhZd815#FWvh?OHoiS%QjA@w#wddE3w)i?_*A)ASHJ%QNc5 z;?Clknd0wA0Ngxbs`%jQwx9L$^JL>#V`mZ!k&f$0aw*nr)?Qe(OFwpBrm!KsS%A1$feg z44_YgjivbMm7V%Nc@m`Yo=)sVb1dex!Y81kGk97HU9_nOX2v z1Xn2sZP-`VuZ6mp5%10p}m%Dl|>>5XiI07 zZ}x<#GC04)?wVjl;oT?Wu|y=&x-SG)x3Jw{*d`97s3m757=5!$WWrV z2CLDji6QB>p-GqV@ZoxCbPzWTqv58C2E*x#OK!X9zR@5;gJ!Du#zYgxDy_X6Dz2eA z5|HQ4H{OpoG7Q2~8)aFJCqwD8a7ih^FkDvT(WOH_XG|?vgCQIjSFV_{l7%w1@X4%< zA9j9nEAP`2$F6?MW-i#4JAdLw@80=nrV?Fo-|*vKCVwz?>h{(1XJ@10e?IpMwXt*u z7P@2|;gU!;HstPf&%z~JBRo)jK&T`ly450|5)!7KM zkZxzmD~T-6V0ywEcfDhSu{poE04Y*J;yUm@I-d2OG3j^UIecWYh&%g?iety0rrl{U%}?VnT%tV`8g`a&J?N1^R(u+?Ylga7~0u z>+-Xuk@Tl-PhOA&EKijCvsxY{1W&KDYL1vP8^+Omg~*2bem z+_+hjM)cZA5~9A`25IT!lk-EPG2(MPVG*$uN=fyD@`o^v|MV6;q;Yban(5Q0CVhcV zRVXMasngSIPQH{x&>bN67i(aT(QF#Sdf7CrfSzwEw-J5tebH<>eJh(T zJm4!ZSNo&E7+)_Dx)+WG^xltmhrQ6uDx zkq(-o&hcb1hs)t=d%N129kert^hJKG^u=H{PMt%)-Whp%)$!|odR_uo(ez(8{h-N> z&wpLd(sRo|TD~4|HY(VpwHnnp1pF{C&X?-tsjiF1ef0IZ)=XhGxw_gc9n%zd&|f+` zsy4%4Kei!B8lFNMNXcJBdsrlv7A?|dYJQZbqoE%5X-hj*oJUxj?zol2%4vrv}K zD}mw{C3otWEGBpAoGkv;Np-R`8GbNLT}oQ345C$Pj1yICkK9d9?fa z80~p_T}l9!FrlXyClrWRaDpY>6Fwx&12&lwT0%2lK+j6iF_kOFL{}20MpUgDfj_uW zFvIMqupNUEPSYlUEaZd93oG(##sSgvjvwX>cle1BK zT1B*ytp#2TbVGq=Jd1n4{0FNySj=FtlA6gf{8$EkuD`H}J<&gh4)~Il#}_32xd42U zT|k?)8$%G+{8@6Sll;`_;8t_+$@)UN)XowDDd5FfGyPNoU^0ugmCn}%EPhj5DIT=! zWmYi^qGP3=W$jj4iz3KM>&Ou2ioaNnKsI$YP0ux1Gn|-pbmESX60U?Po|%gW=$F7} zvm=J(Q|R*`fq{b$^92)vmW#aGNZ&8~qbGD={uor*c~H;@%bwZI+pFhQD|24%+1hzc ziolxsffqLCbE-Bf;f6U?rXB{|qR`i*i$SGAX%7Ah=8_C^A{{YlV81{;RU8#K0pJ<{ zH4??;0igl00aEXr5{8Nn7#v}SI2~#d%jF?U+`+4l!l6|n8vvdw7}7CF^5%c;!Uam# zKqVFmkijh#9NcfcdHCR!jAfH2Eb(9|>KYH$huwU4Z;wHP ziuP&Uad`I~J+6KF%axp&OLA6U>#+mcN+g&BBJ;e*MuBJMytgt!$X`#v>TvuZhl#BSH$@@d{PP@${T25QMZAwTjxHyV%P8P9<`tm9 z6Mhv82Jw3|1qp-lME6Z8UI<--Z=nV>I*8o&N{p9lSS|EGxKxnU$fXtK$>R@^Pe?5W zcNpr^!!hKI`9@l*UBSOh^?lVZ;|u)DV8htg8Tk#^`_t8%VlA`_8LGCsbxUggnY1YR zOtK1{iT-dG#{3+onWn)qRna+pmdW&Ny|L zaRBO4w=DchW%UQ9HW|7}d1gF>uPb^@ZsuD%hLTelm%Rkn#GwnN5<%{~t={hr3UpL^=R)qeX$hdbMI zbGP1;zH-K5>UyGY_FVDu;mfk~ki~KG01Hqbsblx7-?WD`q5}m#TYm(JaaN(L z+@9Y83oXBK$VH+uqmob!^+a_9RjK`EUE+SVxtzi^B9HFJ@M|T0t-`NyE(mk|L5Hvj z5p_3-;;Bumq>Mu#9@n;DR2$rO6r(iuBm+@Zx%$)zf&b4K{a#7L*v z&#Hg&%_QeNu{8Z9-Atxu*w6W2+@ybM-6@l9KTJ!1D0z3hLEUv%;|wRlGAasQGFtJ} zYDoYCy*7hO03F9osR6qA$Tf*FS8s03I zk%mfTz;RU0Db9CnlhUM7)77@b>|YlcTQWl zM9gvax^xzjqZ6#(5|A8G=rZBMt4%aY=A8(2Jkv>3i3;Y0nAAuOn*V$%_CfO{;`QCgIF|;g;W*#BkxAb7eSmn@nBY(Nq zV+#Z)NeBzg84KZ6W0i$7N=TKeM3rc(2{w%@@Eg}kE*j*gsl!IE8G^xU%w1Hxqj}s0 z6(SxWi&zYFMhXk>yaJoEqOD?B#cCA+3!?=Bp=;;|11d5Gf{3V!Ll_XVb&;sVNfgiU z23iC-yoZE}4W-aP7w8Tyn4uRAcOH;89<=5W&T7U0bhVy5L;kE|9g_C~5513T7XP+Ehl7q69=EqS0F`AzWIbUL9ZJWcd1Gk1w#F7dW4@ z>|gIFE#*Z(~HN9Z_jgGX~rU zIgN1iM#f`UReYTI^&{q+HaPiUTJGm|=J#Wolp2T;X*Vxj`DaOXV1B+N1*%^?y?ha- zz@Wej;MbsQ%!i|jtxzEgUAQRf~-BIpag2!5ib?~$+S?SV_b1SK5!cq_X+ih z^=aS(5;hv>et4BPEC)AO48oYFn`1iw4Kl`37b?#Wb%prq!AyeBjja$D_pt%I#WhpJ= zy_C%%^C7^qsTCgcylsTxYsI^*TEv@zOlGVF zMw+;2(U`Ft*Z;J*e~(qkDQ~yx#Y%4cYcu}um(rCiRty`nwh_;^k-ZXU?w;NvYwxUq zjXG!cYtbX4OMPdrDLY}V;xfz9$Ii{uaRVN3gHI&Cf%Jxl7rfIEn5R{QM-vf6<8=a* z$OOpf{u#wuluKvStsB)S&T&k{3|O){a4%EyomJ_gUZOEF95w<8%S_d7-UifBl1^VKu>*&!qZg=-Ke)c-! z;x?iFARKRVx4CskQK9RB4FNpddz!-vEmzvLzu_T-SxDhSB@FevuwbG>$q5c@fQ5o{ z4?}2J!;8X$2V#JNK`m&<9cNwS+$DB#&dp)vl)X!qI);r(NgOlkvytl6$M== zET_NNW988!>r<8=J+ej~HF?sw!6T+lAN^vbYrHV(U%(57O3UTi-~~krs{l>gHBkgl z0R$iv7Ql^TQ3u=b_U(H0^y zMZLh16jAF1CX%?&WU9&A=w@Z5w5A!QVsmVT=Kv)>$FK0A65#Hv5m@*vGA_vJL<4`x z{RjVFI1TPeU>M*N?i(%p9Xk5nA2S#JGj00aX_8Y&TXlN3x^Ve;vGnLZqt-IEI2%P2 zbDu7(uYNFmyi{?#`iPYs$-T%0e_A$J)(D8w6#O90!0i&@7l>7>SWYSmE6Jv9hs#eu zzgl(JQ=bs64eWqREXA0Mba~Xm-XAR3!oJvJ>ryL7 zXQE&uNY`#S>Qpn|Tl+iAXcJT=eO*5DXPMt)gyXYu*A{R3Om&a+^#futRM5d|H_C;Wh&PC z4G1?NJj!teKi){!B$&a#q1i+8D-o+$d9YatD8Vf;sJk!|jQMbgLRT=T$FQ%e8y>>j zSf}tIprFm3;r?YkMjc2VNFsaqltK20$nXwR9s!u)#eI_2fFS-ty!CPVSJT%#>)7e< zRiCMUreB}F=I>6Op0Am9%`W~^&~?M$*gS(dUGUeU*!0iF-2bAY-a!Z&3YBDi8w$q+&@_}w6lN#G!XC$2_3b=J~tNmgOQ zf;Z|EuU7HIrX>wq+G->u4(q>Tmw%$|Z%fdoT)%!rCybE++kmbyUI0S*pg; z$yv0@IF$B7m51L21{johV6ZW<0Vr-*2O>M9?&F>CuOPJyc4lZSDQe+Vv|{RJ2jj?C z1qV@H1;pToL#h=Ngl)h+rX9sZTfrryS3fFtJS|P|Q+c zrF30B1W!2*!_S;329$-df(S9LkcKeYjD;HjQ*jcUM21pK0_33|6av2>7^mTI16_AM zUeRLm6=vI~He&f}TTH*Ne(PXY*(UYx3b%)_>O+{V!u=uYCCGxYrLlSX2Vj*4RAEC9C07mVj*qBgKZjH5!71y%+u(l|2?do8`CA)5DaXw5B zpa($D*W7$GFVK$^C;VMcOk}piM10L!tN~5EnUG%4n$^TstU`o4-mFKC4+^qP4wI$c z+P77!u7_Yxv}h)cK3FqxM85{dvEl~clAnVPqlMOxidLbuSQ@t?{F#EZ0ngI}vssEK zw+{(+x{kuZr7xblD)k2@`;iL-ot$;`n{#7bk~-icHx)y2LNgkXfQTzL3VjPcBR7%z za-VrPfO9W5_rqN?7Wj{!__xz3HnrQOuM$)D9Dg$h;{PClO|f?sCOZU%u`&d4kWcpS-?6;un_e~E959@H&d+p0=HDu&>&3~l`LRyj zruYsl0uZ^**Ey8K%5cUUQWb=aioYRp_Ie0$!$=3p>+x03-{U}u0#Kq}4HQTTBl2>R zA>#qj48SFl0|ns#a_GGZE-u92!9pEj!hOwPVY^pOcxLCABdJb+2B_i&%bd-7fingy z%162na33~DDln)#vKRdg8Qvz+HC2A|gV*5_i48~U$YKJ8n<`@dt8fpw6%6@+BsN0e zZXn5F4D7&Fga8;Rt>e5F2j98vj_S;v zEq;~AT9qg@apa4J0MV@XyLYTqQ5_FxBw;2|4a=|Kc^@mmZQkPA2U@@p{ny7%>+9R* zkzV~lE4CVx9mG{aOV!)TX!DUdG?k=^9GL{ z-nsj*dhJGan6$l8QfK?B4~{ezASJu0qpXiCdl7{x1?)_K2Hiwxh0c8Mpr*c$kO&z+ z1bu$S3FDEOGewvo%n=r_7m6)=Apyw7r6sOFB3!HSYh8Y=&#%q-wKc!C=hv?M+LK@V z^XmY9P2tyf`E>-prtxbAzh?34G=81Muk)Zq)YEXLInKX1`4=X(k}4?~<8euwf=gB% zT)gWwrKUb}QA#RL)N!Q7D*IB|$b)@TQ&Y22rQQv_E~VZ|eVkg5 zD)&|j@Jep+)X-FMR6{R%Jv()Msyr&EePPo^C7^vO{~7ox3!jBPniFMs2x>zBx&jtq zb9EA~X?V4sEvK#zxjn+a3i+eEqn^z%G|vIB06qX_U7KTAo?}p+V_+U7z0|Qe8s#~f z+j3eMKGHYO0l)&n0C;noqhFq*SDvF=o}*13NW<|qwI9mqVE9G!7#QbW_={;a2OvD& z=9r%6$gnv8=ZQAQ>^w)7%`q>}F~#PXPkchlpy8++806;*ra(0bxJ04@K9{qa(-D)b zHD6SmKX*&|qRA1ZDS)w{!V3|1w1@?@umD&NHDmn93U&Q)i_~@Bk6uL^ET%hqaf@m> zEkci5sn+Cy$&k#YFXxxm z>xdRe@QH-+nIo7Tht`Wxz9kBTTfa(H!H4Y!7hwQw(wXa;%Sm$B_elW@Tz%hd{i9E8}fiPEha8+ z-eV|f^j!=76z5?7MbWXhr6Tc;y=1TIeq=7l^`GME5=k_8BYX>ggZN2M;lr1RF@X0L zga;S`CSIJgWZKka;^G-I7Z2{<&C#RVKGyvG9q(^kxXIzzQe;fVUrR<$M9U9R=zGSupbN+=Cnd%X);8x!5xPMlWpx5 zcs9WjnE>RYnV_yi^AD7KVmA!ge(n4Hr?07()$gKMx!b?1x05zTteibz-3qZ-qmJL~ zc0Bs$PB-;4^^}w>eY0h7_c|MoDp?bD!oU!E75pY`!G3}euZk726|ZW1NC$#3A;`MY zJPWihZUE`~($xv2N&w$imDt?URVr6O`A54deXF1@y>AtyqCcd|VO)$Fw<3j9Aq*^D zh0mwMhK=qc_#e&bGt^55Na=z?f=dSolr)s(oYQoF>hS&}v+jR*{KrYDeMVf}yYI`c zJEuv&ryO5tn>?TJTVYlzCD$x*j^;WnbTo$>#uz_W1Q&k89;a}Fw9R>Sf>_>J zRvI9;cyU;cP9bc{0Q9%X%Q!YADUyawz;fMgFB>HNc(r+}YrFT|`u*$x_6CB3QsUb!mmk=kH3`Y?3|(J;lN^9r8C1KM;uZWF z)HtB@z37eV5Uwym&B{3YMfZD)mF_9NMX7@*xvh;MX%rflD%2^JGNtIf@ILrKDoPr2 zroB=QC7|8%!Wt#SU?p)oK!>!ux|tQ{6o+WiLu!DL&G6Nr)WT*M3N^-1 zO4H>qU0UG+i^u38P<&ipVxm(efKj7ZB{YQRl%gg&qVRBNUyz-JLWYY@16gZ>$5BZe z$%dq@XjgaMqzS9j?(ELZ8$BR%^z9Fh{+zaR#;g_V*4V|VV(Z!+Q^t<(Hy2ejUFJuG zEg7)lz@cSHQ`5g5D*_%pa8?T75e%8>WylfWY*>efTV@)nr4%uUgry?6Tk{xlJd`5* zStU@Qvv$4@K7pcQm5bh2J zek=n#C}RvVRLdB9S%&IxG0D)vA0Y{4NEjg*N_~i^aUA;g1Zn+wH6dCnURrkL)QRit z%Eza!i1sCO=PX$^XZ8~I;Hmn8Nxz@^jagOo7wge8XFj@da!LpM z9ts5HBKSQ|%**1xXJSgGA9vHTz+B`BvIKczhL4Sno~<^ptBq%izG9}cl-ix`7QZLn zR}tUui|_XlI=$lixz3_*PXGSGZ9{p0a0a2xFa+qicb5bT77@bUSqRta zo@@-aS+jucQu}9%JK0_5NvA@sAjP*uxZxNksR@?nSWyX~yS5^J&iW#_14)0tJ#qR2 zx1)qkMX#k-m_%_OlqB$*qWlKy!jz*p8ZQLbFT?Oh8X~$NG>R2ZWj^J?@7UGTW7K;A z0qS?7)sNFz*op;GTK>!htEFKtMoZhfbjk0I^)XPbAXhS;jcKK(v*7}mz=h-?e(W@7 ziGDmzgzuN7PFAarRjW_=vRhZ_@Qcy>+h-O0hJ=;*$eXXH$cFA>CJAc-hkigt2O0M2 znoEPkCa!%X_{zd>pI!J>8nJt~)THHK_Xvs5=_n9&Ef* znfB!-iR7M%E0rcq4YG#MyoK6j42Xcn4PGuKoWGZHXbkQgET(3(?u2po|2Md5^!6-L zk7?@4ot=LE=-3nc?)h`KEn=Pabo>3}w68MkA8lH&i-mU|*0Wbe=b1Y{Sv7Ljh#s8= zztd-Gw|U#TtRJ2>b0oMHSeG0KXcdD_Iz+K>&o`7Sw@$>*)~8Vzy@upc=9@Wibd%2q)gJ8V;os7 zkh6y6;QcSDZCDj=^Uh=M$Uzl?tS0w?TyMgN?>ZDTZFN)qofW(JH7n|oc5ctkbD!?s zcSbDo{vVC@x4MWS9?w$$WEIpO9+&v+{{73TpFMo=1y;NY`1uDQ?u}R)y43sgTmeMb zi@0dl1-@kVQ@Edn-&#rUlckc!K{!+hY<)01T_}5G~>@NHS*fD|~ zIvSG%!<;QbLX&Y|Vko*a=Wo*&tcZMQt7~>EnZpDzNHE3#wiCZ@!Xb zjYNsm1&TId+u}fHR9aG!{ym_i`N*1bNz>QE*3CpsyAt?xX>>;CEwnteN8bDfm}wtr789`e)mZT(U2mJaRT*`0=_^`!}Vh%^ihbK{g$$fM1b>GTPUh&QV7o z?lg&G73_ArRfD(O2zPzphvx7$$rqE>p?^i;v5*+m6pTzbFM^Gh3jZCFK-7&QPHvRu zYyo^coF*1=f?YU&5YZ@~33f=f!^ z62{-@2t((Iu&gk2o+us$v!y{;JKQ%j$0!dgtUXE~0b|ssvAcBA1gfT$E5^J%^XOgm z0rUL+^rMn#fqUoeK66<~L3zd@c4BVL=teC1?}<-X*az=V$h>oY%9&rPS7BumU9jao z0575Of52tMOOrTWW@d;T8IrAZ83RNQM}LdsX;KmAP_dC1;Cv*{Pf@!7maPl?q$`%u z&=^K5ewE2lqW!2zrn}Q23D+aw%;)W#q);y4ZC(-h6g)SkbPuxB)6pH!Fdy|g+XcF_2wt9bc!**&;p{Sp{ z)%(`1A|EX$X^(nx$evGuJ)y!FCB)G8f){D&42TJ zPK7|y8NtxNOnEpK$?HIW`VUWj!QRY5F%DBNv#RQ4yLN-_BzvZCGiFp**72Q!f_FM~ z6&L83KM^~yU_uH*DX5N%uVm(=P8pOe9o40Y&c$isJ+8IRhfLRXdpyF>3ovd+z^ZsFLG6}CpWTH;z@b_mtDK%qX1kY>zC^flz$f{ z%rW%2V?57I_pzDuF>YoMrb)%Q-wEmHeI@FsA@!Be>n2-T@4o4s8!E+0;7gYzW^Q=% zk}d~R)$D@9aRmJ*JwzJjd>{s2d5tm>kevEDbp&{)L)a5JL{_~Y1n};akTpvID+ef~Fd5A8(%$`Nnph$Zl; zN{y@zM(5F5LGlw*EJrAoD+h^@*s^0R@dx>l@5|0}EHw8qv;k0HKYpWv*2(LRAg8PR zjUatbsdz!oT9@qb7@S|~^@NZ?O=p+=7lNXBLT_#?)qgCVLOl~49eka|5WR_UYffMB zllZRhV51T3acG}pS;k=9t7+3!l}Q4#zslyJ3UYrb_0OwCb8l3XvM0)aC1$pYh)S%M zn3>ozv2$W}qPwsC#8FBiSSpg~;C;3ki&T_SnL7HwzQOnts(ec2I&Gj8yx8#YD6ThEu?$>WCT%Z5qZr6jH7xe8?W|v@Q1w*Q2SCDK873$~4GzE{g#( zu~ll8fb(OxNXoQzX+*LU08vb-R>%jNl9jX4-wWi|+weuaSwd~3)DUcL^jqT^bo7CUonC+V)OZv zNTFlF9o;D+)F2g?Qlw&SkYYH~@uV@naO0_OK6qPHTWK8Lm=7n(U}JdO*AH*oH%Pb_ z&uZuU1nV#YG9iVvjoDs@P1^|4Rn@tLuF8c-!D=ch$oOqy=8gr4MTy}5*@+MkbZ#jA zg@Z$Kf<75-Z^%WKsQt?1Y7W|cm=s0$0=ds=GKq-fw{$N#QxdKm`^fk!?~8@+{G5;< zyS8Z4n^Yx#uy{>zoEW+1h^YGaw8AS-AKUZH;`5*7#2x)^KBTvfidxP63s#A$&n9}E zJXZ*5)B?(#7j!_>jCto-ofC@*9(Ao14bNH51*j6yT0ySnZ{=w&34MPmSAgb$?joV*;#E6y!0f~Kul0Z&_< zKG@W}AI;9;-jj%es9;GHZt5{Rhs#%3cacer#arSNuT%DDMy&#(S~gmda%4}w#)c}h zvB|=cP7;uZ3@)Jv1dDh@9ub7-NJOWMT zb7uyf5%POo#_v}Eod$RvOefN%RgdN%uApMxWVPBfU9TgYL*NMQ!{)LtIu5*T(TP~L zH5PLFSC4T__AOD%tDiGIr9E$Wowbc6ytFh}-snaYjkvzC-AS?4NMt(q_r@l0FA8MV zIVOKHf*m0UoeW?UA=@6cz| zpB@vZzdtj-bX>mpTrV~%Mq3|}tZGM-o>hE2+!EFNEMj1X_H z&{KRD`M=J33*Qwzg8w_}rqNXc`9^kFNb9DLOt)N_ZC`_-Gy zf0dxEA9wVtmY$hT;)NUg?O2drME(8J0%1CDbXq!ntzrTf<{*zE*yONMd{p#R=2Y17 zE2#}ms-wlaB{MeXU-iCse%z2>uDv($__%!CJAeJg^@S@Ih^CGnLlAvk=-sq*z`V2; zAFtfrW!bP{(*&>NcWMTCCW8VwK?|(BXR75rn&U|kNjnhh zlNICmBrng`G!LFf7$cvTX25%vj^AC4->t~!c(6Cjri}+3g&@^D=y#PE@Oq>Z2gwK7 z9un!&B(Wd%FinOTdAD%;7V;ggo1d3APwZZdTm2GN(WZcNjJCwvzOC{MIEfcWlW#qS zdUeX(5JVN_Rp*_qbaYa+ZCita0=Ay;;3#x5rD$!~LT?!7jL$P7Vqz8+)z@ov=vpr< ziRc8`*~swXMv>vd(fjBw{T|XsQ;}ay(Xd#pt=G-H>E)PM5h(X4sxcwtMs|ap(_tVS ze&afzhU6R~pX%Q=8j95UMu!#!gIiY(PiWbycU_}(f!OoNIDJ=X)2V&K26$R@acrg0 zEC*LRh|z?j_i5;VD+hRS!485>H@kkI1@o;_iu*4K9Z}kaxPK1uCzJil?4IpRgZAD? z8x4XsN)S6zMx!@Ew!)9dwA-s}E^^ihewg!4(EY%%J-=`x#9*GjXk*WkX8Gaq@06iLFsfsCtEEG2{4=aj^k`P7w8<>Zcm`x0b7iSl?9jA8g#N?=ub^7&to@+NTkPnk3?SWP_*cAyktj z&O1(UO_I_sD5}=g8zQ4>@Y;o&dTCHFLuugN5H9ePWqkJ2PKQ58IwP?dnl`=-h3MDl;v?vr(s#<6!{l!nCy(dHA9<#Z@OW=dG=}F#bMup@pnX84BkOr(Ljg3}n z|H!B6lepqF8}}PR_}|=Av^F*`_LpN{2&Z%0mjx$&j};>q%=_+(oTzs$EPiIk`^Nbn zpD+A%#=E$F8(N@LO03etJAgv{7vZCu2`q{T6-;eJqLjGqcqeP6yY%lNg< zyhWm|v43HKo?L0g_|-2VqF8D;9e0lzAr7PJRe&>T4onH7?&{UdPN6iWAWp4BI+!zS zgka7#$qfw|IfSJ827BHhyIAoUfFZiCnrYHJ-)Dv^`n8C&)G>Tfr zcIJ~Q+753B=ObH%TFVG z5*?_dB0SkQlvnd`+dt%<+A>0EMWNb8CGnb|vk&)yfLhBMuKd%c=Q=Y*{^L({Fou_- z>*@~~F-Awxxjc0jG+7PFT^B184NVu!mUSCgLbNzR$12FjUM?BDk>Nb^NX$HvW*(Ux zNi&bkjHH=I7U8MP%*pLq50OODH6y8~(LBJzXJa1m zTCO*QrHz!qL1LH7E7e*CEgx$M&_%p1HyeYv=qTHTNmO%Xy1)jCT)3GFUOSA{roSQm zlV==7ep8fr;7)6fM5n=d${au>J)F~Ay!Je+l}37toQDy8opyyZ%Ok!mddhd-k*0~! z$6)l=@UKX1hF7y?1O$yf$oNo)C3y3N%4@DeF?!o9C!0p_=o$Vr_Req zGq3Y=gEZuf97{z8UmA)<#PJ@Q>b!UP%?R>eJFzj4rvuyX;|LZ+{<<8&F_H1YTeAv7F__z^I%<+w$`|PNRQ)f0^a9G^Y&mcXDOW6;?P+P2C8gsel}ws2tB z;;7zme#=J+T`wf}U;|m@9u6EivR&EiLnBep>9SG~g;vAZ?s^O3jKVl&FK)}r6U4y( z3zae`oK6u5EH{D@!Ahp|5|hSz8*Bc?3~~-z>OcI#rLD;S6R-f1;D55;+8V^V*pscc zo)U?;gpGB}=%5B1BxF$5$9=J_`%p938c4#Q)GQJ9!0e}Uj_z~j>64zzSu_C#LF15* zKMFZ;Ky)#7Eu0@J+{WLL4J^yR83M}Dji~=VXHmIDSP&5-a>@(2kT7ghwV-2_y%05R zdH(8R(>@_LU4h|h%TBruE9R1u4repm|Ff$N^e4I}bg(y4-V=%pcy&)`(EhRr6duI{ z!eO*+DUgPAaa%rd3BnsTPX(N7D8{BU2$wii2jm(gwa__qVRd7a_k-3?cZ~YgIJarr zknt0oQ_jt~EJ8|`etPJ@Gq)}@eCtoR_1}-gib{Xh4cW13#8l6VzsxYM{4px)(AU|0 zhdbL}+@HSl7|pGp|7VU7Cumh*XZ*u`gKF_D6S#sTE?s;Vq?D6xVNc>i7dBf$3l0*8 zU`&U<)N*mh60~=^XfRQ4^s`8reE!)>#-EO1Jd;I2U;m!d7j?wB%J}BmlZAiG72#LM z-1!D3G2-vtauPy&!2dJ6O$De&9qDydBDK66`%(Egi22#nBIRoNFK!pKFB&YdiX^pg z)a2!Yq@V|UN!4*ZpTn1nRvN~{6BlnBoA~Zn@*=I=W|WM93DwsasqcDW{r+xn9?hIN z;in-`@2qHjBs9~ih}Ju}zoD7g0H3T1W(J*2OD9j3F_~mYu4Iy2$=S)IlP4Ehe?b^0 zXC{+Qo(!Gb9%h1{*5-{T_pU8YgGrW&)SH1B%$hKh`kVnTIT zo)lR`tdUAfxq-GlZASDGtBuE8;ss-Hcsov=xwEb3z#FdD_vnG-8NImsC`lo zAxEdBrcwT{jSRt3&XgZ%+*}-gf*x^1*0{{LmT{fqh^%oSYqSkPnHCagF@p}M(UNfq zI1#MkcC+r5%vjknmdKV+-QhO6M6O*vU_`{2p+|m<-Mn$*OVO8(^qm%#Gh*dxuxsN1 z;T0R#zM7g-^}@&9XLkSm$7+L9cWvxG6KWoL8$9EjML01ri0s{>y=-<|r~8+&CGaPN z5dKtIvgwE;r>nhG8xOVBLy)bProzpnx>v^oH{Zklz%D`kw+^i-a|c~k0%F?R?jdBG z5NO?o4Yj>;;L%${I;AtJ*TxD`jwiR>BNw!EKbL8^2<3t-UxCJZ_xrxltNGS>7d_{F zb-|(?BgW(m$Q?WAv9ZQwl@#lHRQ$Gd&ugoiy|{B%p?l=CDY?x@OrJig^i_Mdtd80! z&DjFnk>a3FtNaLM`t#XR^iVqSf8B*MLUrNn9G)GHYzbSk3T-2ZG90L~oj8%_3iaMB z$W}2wdne9$#^?Em@jtQm^)sLCGIr3d0;2V-<%^#(Uj6?2?{ji;^s&d*uRG$%Ik9kD z?ji?HOMBGH&O@zix;Dm}YO4fbjY`$Xsx}y25lL6;O$PT!rii;IP$26Kzxz6I8$x{cn=+d$Evyjoqwb6H>j)E%i z%sgN|`D$Xy90(NM?TW&cM41AuZuP)OOJMs8G7!ouyTh8OvOB%u)Tu*_(N0k?(iktQ zR}*nP_U&t}C;JRB4aGFLK?2l%0pqER`oPx97Y_3Y6(RjS@btKOODE4<{ngP~jfch!?$)7y zKS!0G#*e)hkyJXW^w7@hLV=dh1KFhW&`xexY)rls< z+Zh;*S96l#jX{CofFwyHO(QeFH-0pn_c4@(fVvmHCq zJZx2x=9OHu_9%F!ekqAa!nKt_>rdX>yxqfvPtPoTsD1N$7fqb>+(Sdw<_umxD51~2 z9Ukd*-~B!GcFp@FSA4AP;Qai-Z3m{L^lmA03ducl|}Xy--QOSUQEG{oB; zp)cF0gBg<^X|~FMgrJm>nhvYj9V&8S`{}vQ7EPSJSU>%4f`}8fH?+!5c(hBW0okHQ z&&A{OS8sT(-G`ruM|335-JUgU*vQp%N7j@2R{fiQ*NG8b=~wClxf7!Uy(S;mA8^mb z9*BZYJ&>DedY~(*8xW;1Y?UPE*i!GTXX|t;`vSd4-=>F~EzDZQM1gjh=!Ml;%hpC} zQ?-!3U$|)6Xmxk5 zws+P_yYtR=_1$y#z2CBTuU0L)_h?b0{vEY4;4J1yl4CPuUAWex9QT#QC&S&8f)78* z4r(Gz+EKv$Q6`20-Ow)9utM*{Ji>1GsY3#Qc%}};6*cb}RH8bva{Ei-z zb+ksP>|E^)X@4*MBzDjpoO#g9+(#MEG%{3^B3AC`a;l7I*{a??Fro*&Z{Zx3>vAVpeIakzn^_;9zA*A!hEyhS-qQ zcYwELQg!5O$;>PWz3OQWxlpG3bNv2tpCS83cWis#^z8?a&%FHHk;{)i);j0m0pD%w z*j9A&J@xRg4NFGu9AfY#>Blxc&o@W zS|yN6%?>|BTUG_sgK}3g$FyuHEsR>Ydn5R-AUhTr3N{;^jwxuPXJn9LEHMd}XvC$- zE1w#|W=GzoirdM0B`KN-%Fd4iv04m?VDr;qSSVuDkAevdt?m z8l%LZ-G{dAGYa&DzEQ4iCytEYS+|Mt+jEQWPHyws*!jzbEL|{v6;9-S%;c(z`abuQ zCz21L8ai`P^aSiT73-F1_kf-RUcJCzp0Z(WCA=O!Agu$O+836Hx0IE;G?! zKqQ!aGRUE;d~Bqr+r!#W%z~VK92@5A^V}W>8c#`g^>Xp(@~d<7nSZSM>B5^A&%rZ0 z{=sK8mD9>wW=={W8VK{P`_a_KYznGDH=Spbiov3 zuLzs-ym8L>(^;@)NspOT5?17_d|A&hTI4-GI8X0Cc<>1q?U5wxktUd@2bPd&2k}lV zYrpb|=Fkr@5UVf^J`IHBTZVQH4Zioq8^&2rI5O28vhbt2!_n6F?&Qhhi?QO9Nxpn> z;WyFHfQu1<*;V=g+8xWByF@$pEvVwD61a5~oSC;KF%mc-g6whLKqNfZ6g$I=O(j*%SjVsHnaN%!yh}I~ zZali-B>*i@P>0(mc~LNE52ePn^mO)M(6EI9H|=J*(lR{QMfh*nI1w>_-@XFQdg}f~&f|KiyN7K=PW+A&zoX%AP5vHSS-930CcB#k>8|F^bhmWF8K*nA z01zYMCBukPpqVF=W{Gf67*RB=T3BXS%dpO2F4`J2o?0}lEWNZ~-@f@GVw|ym(9YS; z<6E};-r*uBG{SkovD3XB;N*s#}RkBMORTGvA|_7t9k| zf+U6l{!7Z7!<|oshr?ZmjYrWi169)hLw>^qk&6j_6HzT9Goocg=ZNfxoA^xzHhX~I zJTYQ(=OA`Nzk5zUifl0IX`^l9DxzE#4yI!Erb?rvy@}nTr3$XcFg0O-`s#gpmJrsv-s=t66O1I#? zj8r=u`#cDaZzu)aaNv7^;i@xSw8Y2a7jWDWy+2@|a2l+u z>$usd8uXtEtWij`>@p^_mLWn?Ho5{IEjW8^=})Bp*g{F(Y7TSp+_)jDrVfiTwr19y z&Lmm$gPW$}V~NQ(bY8Dye0zS2acR|yB7Vzxky>d|<&VAdzL+@a?7ZzKtBND%{@N)z zzSr!1(Q#MlH?Qq~(fD?I^R33Wh2A&R$o+h$UbZ(9#dj(m$R?l~xyr%u#=6+6OMZNt zS_6lfO|9|PisVccT)Y?5*sB&w;~=GKayO`Qr^3be{?Jwv=e@MY__SEOAmX=PLW$0# zs$XoM`{l$Lzb||0!`j9~U2LiF;O%$4E;^se_&{{pbMC~twX2Nt-WofNv+FuE5cxxJ ze#w@)#+E`7bmS=67Y6dzVb_t>{Qf68vNIMrhPu8j7ab;o8#2{{Uuh+?O zD>zi3A;`VMPGL1di-)1Lojqube3fA1lrK~Z&^Q*2Uv#pv=@KX2FtKQXyxh3-(njM_ zp;##rH*OLME5*c#U(K2IB`z@j>Y3S}PuBGV?-@Jy?G^XG)8vHcv~Q2G>s{woQL%8P zadC6At;Tn&Ul2)Kcn+aF2kNnp?ll}uAn97soCEs~)ExNK5FbXVn60dybS7JE091hm8{tKe)-bTqp`fJk4d*#K~XInfdt?ed1XW{lz4q zANbOErN=j&ZY1v!9p0(`p6I%7pRw&dQ6j1qt}woPx#?Ep;+o|m8CBq%*`-rvSFndz z>C9@IAP&wuJh;IcXLNICwb^;N4egz3j_Yej94D+#V=tyUSEB|sxYJy@>Eia3Ppi|M zyl@kA3+gndu?q%Q&@q>h}k<@Jw_8u#mO zb`hW6KmFm+(_fi0>frF*FYI{Ln2fPT8SA)%VG3%&TxQ-Pr7l3IvULwy1ex(pF1tX{ zJ;#8dDuS!oGLK8Z8*DkO-V_&QAYzRv??$lMLl*#Y9RU1d2o5{aeRn$g8~slHRe;;t zkAGOhyZ3|ZpPcB3RDd4Fy%ny$z4rI%gM0Tne`we1`rUMnS{S>WtFdNfBR*=?f}9e{ z(y`A0dO?Y)=8{PDhPY`iXnrLNN@|&n7IE1({Fxrdmv6tFU;3pZZf@yyec^2b2cap* zeeKbu^Hax)&a~QtjMa`(=X~TPJm#%v-n$qjDX5G}yBgwk33f$#_%EoZ-dOoBXjAq~ z0|a?&hsIl#fvhH$5a-m33TMWmB@VsEv!E|>EBf3$^7Qn#hfTk{;_Gd7=6$jK>pjbd z&Zt`({V0AOWke6vbI&YTac$O^-h;2aUVQ5IyKuD#dW#sl;FG13kj}azZ2%Snv;k~d z)J>gBfA_sOSsz&XsbiC~#f^N|XxvwXTfv;C^f%pGv841! zpet`F8tq0~#Z}@g=8TRK?$O9fh{sOY>`jyzDo}z|ye!B!^3VB}is?|0%;vBOTVF-Px1VD)iwt)hsetBT@4`={Yom+} zxVmKxEa?pGA#V+N_g@Xl8_@WYO>8nNu@CEQ_r|&tS@m#d+WP}jNIFQ#aN*uiIt83a z4i1Rkee#OYhKX@jXb95~pB($c+3fYvPrWy4^r@-e{-w_~jN--9Doy%e+M!zeHZ9n@ z=c;HTBD?gMeqr9?%d?F$#uek&4~@gGwCvwlcg`F+{M+w-+_munPKv((bwYKu+3-xH z2kOb>d1t9jcRbnHHWC{WtaI9+fvBq&6*O)bQM>7Dv%fFi7B@Jm^kdRxn;Gj+bAj`x zcdSRxPZ+D6E^rmM{y-=_R|eOkek*Rh(^+~R3mFp)8ROPF{7TQm@j2Czx%JL9=(#a8 z)JCAZTOaf~Jx@kWm+sn!^Ih=#V55Z0p~&mtPj2bUARfBz^v z`%$YU>fq`bx3*F%=ULkX(xf_@=xz<>6yR^54l)bR>GX_mtv?WkUkQQ&*IDkr?6`z8 zQyrPr6}a}ork*Q?uH5!4lvI18pjw`k1a7>Wf=1IRx2E81^hv?7u;(s>rjUINRp0It z#nLc?sE;1_e5(z$a$t9gmA955*7O)O{dwbqJ|eN_!l#}R<6l2GV(-Jo#|MsnynFJH znf2#A`K7y`Xfk-kMqjA@+vlfy4KQ|wY*_Hhn+<6HKZ#YC3@XQfC*13ekURmwJ>|I# zDsHvweD)IyozHeD4e>m>We+VU%sUWC=SwG75H!Bj*aptYQ-4^x5W2t``)Dkdj-ri;x9#4gbr|&r1J3)8ZqP&TF4yH5$RX#w5S6*;yzE#_ej|{*2#Ffz_jO0N>{vavYAN%!l zMAfRGvrDwCdo^!SHF%}>2C*{-w^8xN$!;pal|I;q;8j_X@aNss>jAt=Z#?Ox(6O#D z`-gvO7~?)I@LmiV8?tfghQ0f{%p3FAx<2BT(&{U(Kl9O+sVjebzxs(wpm#RL`32}5 z1+T(m-elSJAX!>NZb@&Bq?8>p)7#1^ba62!t`p>%PPf86rm9Oa;*G1+QJ^O~Xc%x`=-E;hp!=m)` zRq8jHZFF&b0UB3?CNkBVCT)zgfE*1PIO}(67A#>YL`=Je+q#hT?Q(Dt48*BTPxU6q zw@E>!EZO8iriq+aL$gJnscJP~dBah7Yl?538xt|;`;%Q?Z&P#L>Q(ElJ(Sj2oifuC;&vd7<>STY7iezx&ZO1viS`y?Rt!`{c?8#3y>;eALFAW55aT zu~nfd+mMfdnx@JgDr*?pY;x#{+|-5cN0kL~=@}R>b33Tr%q@CN{@1*@XQ$|szn(kq zt0{V3zn6v;oyvY`XwfOX-trp-bFMABb;aLvpSiXyeB%3KOOGW@I62mTl+LozA01d9 zz}})9r#RVp6L~=uaF&ViynWPI+5e*+c(K&_@G|oHuy@28_D@a{n-?H zo19M_>cn3UogJSyFml|v*DrumVes6UeVB1yY=eDrSms0y^*e` zFBh5DT*rRjr^gN$T59eh$H!QiMDV9U-cZS9;el7#(Lsx$^h|Fu7v>#-3zKb-7R(!A!Z=T;VvJ+uG(gbmBS>Qkq1(Vw@QdoxIXP%Fy2)@tk@&)0){EAwBptTr~`tu8;TD?fy<$(9zw zt4pbP*1a0=E_iSuOjf)n34A^Smo9ra-vxOtNvemx_}2 zO?|Uq!s?6ro-$tO-L6$ZohDs-KHmF*`}@Wg&FVJ0L+i&UwHiHt{*YOD&5YGkHlA2_ zWKu!SXz@hrto|)~jdrxJ_vpi|I`wP$P!C97)O~a3*a-CU=Sc>cRF;|$AzOD*iKi`_ z3`QHypG|Q=be2L$Fh-$}!LyDaRtQ;?F3w-_G(bI0Of9{OaY#qg*`-VKL@Rw>j?rq6 z@MreQ)a(0xXG=E{Jxu-uJvj;%;#{wbI|Y=W0wU-p8l}mqA@bmrn&6EJqb!ceh_NKw zRR$WayVJcdhgSa^rMvQWQ#0e0 zAa0I|Alj)q60zjJkcefohR7PVS+!Jilz?kEIGrycEspaLpv*4M``4Ri&mQ|MFYluz ztJW@X7JTYBxCY&yuRA&$QPaofK7%td)PDfgIeR&GyEgI=-F(LdId{-;4u7f~%vfZR z#j0^Ce~>pNmYe5Sc#Ff@urq^@B)t~%fh{)Sm1 zK1p7US*w1AU`gvZI1TmK>vOy3OfGPtZS?lZ-EvAd^wC55FGTUjj~#t~_j-Ek5vODE zAJnt4%hP)n{_!-LNM}#>bv=~p2=99FL-+QPrGK?SD`~6;8umL^VLjpy>o4#+q=y@! zPPHCE>FTVIs!5mY5%b1X;7aH?tQ6HS*lq6w`B6e}d6vduRY-co2=OPv?Rb+&M~2di zD6&SG>wGO4s#W3ebFS(`O@Vv&rnbO+O2_GYeC-{*ON*%^m818d_wYZ%`vd9K%Z(1) zCp!)vQ=NMu*mMasjhjo!lKot^zu{)BaG45-_ z&9qk=9mpi_>^P;GYX4nvvlkrt4qO5gt?z_=i+WnDMs=*lm#~$hz@zg`Tc9MGIEoy( z3PSNwSDYD_U2*8#iG(d&|Le`fA3Hibvz@43wpVB)pCMTOf}_|~2MQa|HIq;rs5Jdf zCl{VN)3|*a)uw7_QBnPqojb*{S4HKbLgSmg)r}J(>XJw_e*PNw#MIZf=jbo4GfurZ z>n-EM_4;<-YvK;!oc6c4P54fgo!{gCZb}a68#h~_dNTw4Q0?4{{Cqc0$!6A48o~d~ zDG98a=J*jdQ6+7>*U1)<2BnABhZieIt5dcoGY{fxnW!8?SP6erise+FO2Ns4x=Yq} z2j8oW0|E~mDv$Y?pgSRyRxnaDj3mW@+zsZD(FYpuHQha8>t>NBCd?f9@-2CL_vXQY z@`JH_z_7!IeNFVEi=Le~-dD-_L(X=bRjoeu-}Aix9+0bJMPx~5RVN;@g%3HHu8oK+a5uc0r83-p_Rbh^{@SD*`Hd5p$0JV$ z`v(4EE;z)ch~PsQH09mm=5aVlU@A~;GX4{feEqekY+SgzW7RgU%q|l~>8DN|J?iRg zTzb^_Gsh_G)g$cDn7OmWh#V36s7N5KtSV^yji)JmScnD-kJeTsil!<8&a#|*BNfib z*l}6tTyZb}ZLx!hAm}?R+=bfv0cZ<%R1kEM1zoJ25N*{+EZmVn(3*rsuEa3HZOv!2 zg=L-SBw9g!@)@vxGyV)`om=p86dpZ8G$z-c_O#K~dC+wj?@=fX{1e1E|DSlj8}w@J zxf}0MyGZoX{NipkN|wAtFGYc}(79q$InZiO61t&tr;a zYUX^(Lg$KK%YjY}f^Kf%F2riyjJrki&wV2O3 zK5>oB`Lqa}3X8+VnOMp~=ZcE~Xe$&Q9|TP&PU0@qt_7ei+=)TZbcO)UBLp-?n2bHX z)zbj)oAU^B#TwB-%~NHul!TjD2Eq?_)J<6Kk@JC{Ra4N`My&&kfB{a_-xG{SqI0vz?&Sznori5l17ju z7JO%gN6*l1_}|9+enwlz3FiZN-yUNo4$_@D2>f7fG}J?T38DGS-@iERxz(2d8v5C>);hhu00Z(#zN4bA|f%4 z6Rt1uzAKNVSet{KTN4ZObHb7on2|G;Y1>VXTss+PZw+c zW?AT5F);vb#U2!AVQ8L@#9au=-i$lJj+;jaXdWS;F~U@%gQJ8;*q29`D_R7wSSphG zO@?MHfQBb%SSP~4T7~-pW-oP+QQFafJg{W8(n0uqx?TdbX@UI zdP=l~agFvV#swI}x0SS&cs{o9tiioo4igXa2v|T>jmMndLjz5Mr+$LBBKMXkf!|d1 zkY=NY#E<0^R_2-&Nup1zPNzsD@dT>F$vcC)D`GRfDHa*!EWBx3E1$8u_4< zzDNEl_Ifzrb=#|F#0|aw;k&Y;?tb9GUj4c*@jbqDx}Nc)ey?%HRdVCO2Z!GAQ1ypy z?fGEq>3506#t>IYX%|Nd4x2X6c+BwuypXqn`>*jPHEBvCK&vd}ce7X>&EOU|7;aH> zNdKh$!VI zEASmekI*Tbl-&mPYi4Dc)n+m+JSm3imC6u^F9_zBiH>`sT`k`lvGNV!x%ByhIZv+7 z|8?8W4;4!6Xf=>wK0JNQ4(F1!QFi7WD zoJiv7XyGZ;eg__t%iW||Fh)MPgwd@P4z|v%6{J&~MPiPyFs~JdtP!T0r$yp>4KQ+q zYa#8`2s2C=iRV5GPZ2bwp5{yyhm?4JH}SZ&qH(%8Pc<6SS@%=+9(5%EEsBtb)0SY6 z$z9R>rQxLSxdkF)_hJ+tvDdNN)djSs@3wZ6Jh_FxI||>rU(x6$&0EU0O@M}M1C2&a z3ZdUYAXd?w@p%$0d~38rax4fQDw{-N`N+iL(bj15aB?Ib#p&g^u3LE4ikShO*czAO zqY@+0n#SeP)wFFu8NX-hf9Y>s5TjdftTVZvUJ!K8)CH`}q@pX4ZwGJGp zUJv*(9WzU>=`ZPfeOrfEr>E7FyIdtheP0s)>17mfBqswk!q0eX-p;pfBMMU6^e$Pd z5b>WH;6F7IO-5_Enr;ncSJSQkHmsAtKwz=#yr_YUE88?tfNtxA78LA(zsc-$12fy> z31Yxpx?df&o_fo<|C&7Evng+1EG<2~y8q&49U6CSF~(xY9cS-}*XOu4#XoapS>2U4 z78qB4Xp^-2k9M6JKa_cAzaEk^_wD2O>&V84m4`_d%3Vn(MDFq;?QlRATDvL6JS%cH z(TS70sR;V9+Mi0xTZHp;+C#jB(!D%dq4sxxw^;U*I_DglV&2k$&rRWz7H_eF(n^p4&}oEHdgjPqWPqJj6M~zl`&sDSy}fnEI|>U-Z_RnBP@%A-ey72sZg(PZhvOTe;ZZC%~^P%i3c?uK;v2 z*C{|tox9k7hu^2Tn?-pA{WYLFFfWw2NBO&#gWGB1-U;Yb*D4G5DF3Yi+?FP8dIbEx z0XmEMqQt$%KUnfbX#eW>X>K8|V;06W{$~C^Y5oBiEyEZr`nyWx{GscuzvP5%QHmRT zoA4TS!W!Z2A=>o^LB)Y?;-T_4*J^bG)VKT!$|Gn==92?L9{@% zIpz$EOpDKW&MS?krY(-|^7~d6Ev|ZQlklK#5t`<-P^)2aTcr)~2wcQ% zUSp{=was6bxXJ%0aTjU_{}XPO&4e3z|Dc;Ot8w%&?sKB}PhtiyoFKgZQc!1*(cZC= zsRkVU{$c+Oyzha#oNe$p>ywRh3}43%kN4G#uL+*1LbxsrrP&k}cg@GJ9I#Q@hbj7Iuk$zR==*R)u> z8qmosAFR^wrC)`-kkYSG3_p?Og|xgdiUTli_I*g)qqJY7v_;e?$gjg54~cOUyn5{M zfTf~Ni5z3JHO4it&)DMuJi#L)kB7vwMte?rJb))?JRXXl$nmTbxzKEIwt)v6fcj{I zB0NVo=|2+FIuQaNDWHI<+8G2w8A^_c_K3u_0c{bRnz#^wp?IN*>za$WiNv)*`w43< zamAfM5DZ3<(AFAroa-R-sUJ$b?T%ebe3O;Hy~dS+#7XzcWUy|_amI6G6FK&wHZuSX z`Ga!4=#G2N`w9458hUEfq)xW+iK)01&$;fY$vO8bJ%7*x-x-%&6F(F~K7fCv*0OJ! zb{b;3UHWIc{yyutRGP8--4nYUUtlIL!0&PvS>~zmC{?n}B*@>wE*2F}WTC7~J!Sl` zxaNl3WcMM+>9WlSFqQLOK{C2JSyS6oEk3I-Iyd@k2nS zTUxL3*COA;^#*ga-X=8c78l)SaAtUUr?u6`WmkR8ooy2 zmQV^!K5ThO)X8AX?i&&_dpCg@v+0Fj9K$jUUQOoxYXY;eeo<*C;Bt=5%=`P9&={xs zP0L%Wpc%KDvK$^efXM^nZl)LsuC+ zU59Rr`sj3jcmEUMM&4``Pk8*y7xD1Ffn z+BL0)il6Zc5sp9vUXE_KiN%BX**QOH9wUr<>847&hf|C-l^OoO@qRg*NE0k zoM#MepRzEp9ZSEaV(%LOam@ysTgQTB-bb)1n)U_sRF@kgW4vsY2IgU5R?)P#09}>F zM$p91{7p1k8;sf6j#d}de00`|(P_+DU*>0a+VTC-Jif0Ox~=wI;5V(jRAr}>h0YZV z0FB)WFOITPBn-_$Vk`s?x8`hNR2BF)VUxv=+4T=SparGoYD=12^XU3~u_- zcov_Uvp5_0P1eY1&WdxEh0YbT1JG7+v(lC%G|fliF4UF=pe@|WI%Q~H6+rU{0gVwR zU{xyc2v73}b4AAh77irQ2vxkD&x`8__8oBrc(zAbG_g)s5O*LA+~go@U^}Lo9E49X zEWjjqn_D60^54d|XaJ;PaV$cqBL8nGp_#{4{j`V*hPxfZoi?&SEk}05(%(zQr zQky1Uv_1fI=p`lV2&C1%mo8u2^C;S)jhsrYkP#JADD`!?N(`NJk za0G%oaW)L>5=0;hZEZQNJ%R{?Y|$yXA@ns`1xdG}k*PPy5oKTHgNxK*{`)Ocuu!AQ z1ykx+`$WZr7@Af@Na!`%25S!}zr2LOnwT(a#pBjqQucAak%{|ZAp;49eIEmjZ{^6H zck^g2n4@_$Fd9p$nUc!C7Sf;%^HGvX;QIbX0X}L;8s*!49ncvr>^xJ_jPhp%pe;$G zyv6SUI*Mm1aj)^Wku$Yp*$@mGsxCoj(!Snt_;+S~D!@}8=Fz;-R2IU6L-+%R7Zc|T3>DDi-HJQ^vB zbH$dxoGe+aI62L!9ghdlJf5*UCy51n*p%o++A+|-tTv>yJ1HY+ZKXsVh3;?ZCP!2r zF$qI^SHi5(Hd=c(NY=XHZ!}>x2pwaG&CaqOSFuaW9y3hj8Gga5mMiW7l+<692k-@> zF)Hnd&Vb>0MKhgYC*Zp@FZwPxaSxGG`#KP(9eu~UKRd>6Teftoz=gVh8h;M3g0ndT^^-ds6-$4fyYj`kjs(mV zkpu(!1XtuwCn0K>9=2w1WxdXsk80es{W z-sd0k@8yb4pso3P7Oz))f}xqKO6awsPC3v@+m*O!Zxb|j=um5iT9_5@sEQN$jk`YV z^jbW+t<;mj-vV!2yD3-n7CtpwjXc`7eqeU~!X84zQ*oNM8Z*%O(C;Td&jao(z}GY1 zKaaP5cxx}aG#_)qZry(auU48P8QO>gaf z9Qfa2YHjm}`7c3}VeQrOzGCOXKZcrxbjhiBZtz39X>J(JZeSnJ&*|1PGBWTvW{J;x z;qx*4jQN}Jzwk3=i)UJEG~EO|W@&y-Q9?Iz9n5EU7C%GlG(V@fm78`Ko;eN!?>%)X zP@g}?pTnb#&+#Yw!QJFH$8$2CxAN!B`MDvUxAAi`diGz0lrAq5o4;3%--|kHPjrWX ziu;&~Tg5o|JDIRXbx>huwqcLOq635DU0(Zlf!VEXt7Wac1zY0`lJ`o` zo~52#dFV#yV?{kZo@L5$Yzy%bH$}-n*|n&gKFyzx=V$B($98_k9so~kWjyR`@4QE= zit4<0vojL0G3y8Efwc?e&1ILCGNCwE2M=h!#qB-NG{JU55lWKzEvkxaWke__yfY~& z4y~KwlBfv8!@gUGNE42X^fWX>T>kt+wU>+fPa1PRPix$!SwdXJx(^O-Ut(;VDwe)g zy;0w`t~$wV-N93B5T#( z+J6ZYVJh=`P?@+?UwX@Q<5dOSprLIQEwHLm)+?(=ev{Uc)`wu?{RasKQbO^|Iq(=p zxqbu8`w~X)>)&s}sHhp8PPv;U&lyH_5*WiCyw70Yqbg-QMzVROCj+|xaHQJXl zngz>N=_vn+*YYazh_H$n5wA8sOWq6n#Q7`##u@n=I0#mq5OW(^JS9`{?VC8Qol}?P zv^4)q{A;_cU$=8!&VyvmoWY-$<-}z;udF6ue!}vJ&Ix6`f!_D=_t%4;eCav_`u=KC zY?1$GbHA%Ol;ug(okC|E4>1qoyh~*A{%>?_2_gRCjsFiFTc{0>EbB{?eKn|K%dJno ziY4{8@7(@kk)`TUjT#!+XcPIvzH5`2d;j@*@>fL<|BvcdEsn0VBN=U?*ed1**|X*mD~4i4 zo0Lpzjy?G&N0pi~=C=ABfyfU_K-$3ynqy=fLm}OXD)bhCI(B`NB#VMBi#u2UB7ocC zf$A)l#ht4+3E;LUtDq%r$|%CPX?-ZRhjo=vJgQ#62>HF-+sQaf_Bx`r$ZokgUKeKC zb4)>=CsB|p>#%Zao)!&NOgzuoS~~}5H@XVb-df;nD*naKZhn5zf89|5@#1vErD;qq z0eOPer|d4L>o~@`l7FSh-`@X)dEON67S0YLhH#0QjEi{)uh$*?om~C308LrY(|RdS z(Ne7L44y|96B@s)=E1^+)=PPcsv6HZzX89ITD3>pDEep)%x9qSoZ~2VF;_WY{2QTL z(R=2GEaSipnM(hz{t$Z|yppOF&q!!7CJ?Q&c%||z^ZDbEWBnNSzpG4=oQqDStxJ+3f5`|u#)xiUt2%KZZ@kre*zSDekYzg5)8iUP)3 zSp%Vf7p^w}Us1w4zJR`AR%x+aOjJhxK$6t+dKn!;>VikA3Y)%8j0nH`q|qU?BD4U` zzyh87x`y%lUPf2vKyZU}?MvD}dKXdT-wF6fjc$&$&Q5s$i}}8Re;3|A4R~9g1E-!Z<9Rppd?$5A` zdYB_TFXAxrK9JI<_?K7lFY_}?COnhQJB8Lvu8AAJfHk4{iIc2{O6t>@2KD*l=z z93SYZg!jCsK#v{b5#V{$|C3`a?={*}zj9?+IYObK(bVT zMwm-aJXa%nBG;9k`E!o|-SIj9exhim;9RHi9&kj7Ns)M4fN#I!q3lN3u?(%DmeP;= zpDsI2^QypqK+q!zH|wBGH>rb;(%zMsY0yCxhnLd&C1C7}^MM#zJI<#9gyP~-lclu< z7N*39Od3xC?yN&W-4FCZ9p41on&)mc5+CK)(-oZ9A~R ze~J;9IZv3$E8uZ2@+y5}j-iyt@C5XsLY5hS$uZnd7T8{J*h?PjZTnq_re$dLoU~VI zS03bVy@b!ZutYTQK0_;TLYndCLwJo*cLRSaNz{9Jjj9^QgCx@y=U4oGpm97%GHr3T zlJFSqH=gaF0Zu#S^s@6EoGNJns(mMGYsUlT9usB`v{t~}RJ-@0!lO6T&WJ{emNtt+ z(GobFIqqzQ6Y#50r(U*Rx89kOESs;#v&_QZNINcCDtJpniab*iC*doDE=S#cEc}g7 z1LRcjR?-&m-)YAWNhax_HwM?cdHfZuTsj(mTlY2#e`9SyIpeQ;1{cTi-jQ7Oq=ml; z_IEWk9*aJ}PnmPr7n0^nEc{Kh`TlPeynX!jP5iX(oWVt0I|C7VbXLH6^7<z=G~#bW&PT1rks*<*=^0G8L~+4rgMM{7py?CeFjfjGiZhy2{%Du z*MRN~?Q{v?YVcp-YVgmvLK<4*YOb9UZ4}L{xnqQ;b|Gn8YK^ctVof0m-kLSWdY65y z*Dd@H0)L0Vyy-?nYvuM^SRVw|=)kREUo`>y_BUc*Nf~Gxn5lT%HP6i zzG=Pcnd`ON_{d3qQ0492;(S%3p0~Y>6KvJ8tOZZm;+#U>UQ=78tTidIUv_R6{ph?S zHmy9?ET`SMfVt1)36r4>0tOKl6>r)N-qM?OCzRcy;+M+{feKyReI zia1zV{85%{hyuU)*xlR2@75blaVTgz_SzCVjefZ27Ylo1_`P8hu0e zR%`T)wWrD%J+k;S0{B~dXrD0UVIS@gwbXbl>R|MV5?-z*=^;dWx87vx1qE%59@y)c z*l9m;)fKQa*MKLFcOmwbS~2TaROVGL+HK5h@EiOs_zC!1*mde#)~~5}`(eQR=Apd^ zpFE&nc666}5s_-MQc8OfpB!-y1x$enb1P09_M#1DkMX|f$7cX|Xs_*=7ig||4dPt>=pUsL{s z8L((J@o&Ar(7C!tG*{4;ov89lNH1T_7C-HL^6owz7?Fir`Q6LnZY%nggImRU%HnRz zR#I87U4|)HB<@#1BRTGuUD2Y~P2*N0k+?}_$Z@~yoR3{!7PpE|N!%$G?qU%y+9_y@ zCUwn`FmCSLA#oR@PRf!V7ERPFXBfv_n)=-dE4S1~3%g$e=R&9&u%W4eLs(YF+PfM*D zQdZeBz~j2io}lICN?!IFWNFlDGaw~w*`8j)BSD4V#1HK)O!;>|spv&TJ3w_b5 zo#pOwgu9YS-?F&dYM%vgTfPYeEpZdqmg9ce`4hOdxzZMHE1QJI?d}g~IqsL8b3scJ z+QO}%C2m?fiMv?)Eud9cG*Njma@Fe;~S)d84Wz{XP?a$lh}GjaByAF1?HH zWXjYwRym590@sKF@Sw@4z$<`%kxvp^$9fk>8pA&U_(F#NOTz1Q`28NhXD~e3+Q366 z6O>#B_!bP0=mNi=#_wwyZCndoZ(-aWO+26YH^4D-&FJmyMsgc@7;-$n`40fkN?7I8 z=fh1k;n044SfPB_+i~DbqrIB!xviR=TOLgc4|9DF1sUU_!>9>MT&BH~p;wo0p@N{S z2TgosUsAeAKF}bA3V>|)Dad{ee1DEJ4P8rR&r+f8V$}zrQ|8bmUyL=33r6bBos&d; zycqJ*f!!ONgN+X!+cV{jubhK(&Y#Eayf1ECG8(zxB82SREc+#`aI-c-Fh~D~JzUKN{ zIr{9OzH^8_|kRKa&)f19~6T5 z$D<?9Fx{1J4Yx3f)-@ECvP7#~=-di(zX zMQ?!P#B0-SGg7yDTOlMndCSZwnmdV_Gun|IIr9JWWT;oLH5svUZvKG-`QkR?!=MYn zouB2r`DTu<(7Y5}sC*vW=-kU27DX{y+k}WA(;O_#-9902q|VK$BX8QTk-T4Vk9rud zTY%m~XAs-*{MAW+95QM@C-#W_&l(vA^@_gl^olu-+e^Pg0^BKx5EZ3>P1M&mAhl;L z0c#CNrMYmBjOrBW6V{>dVDItm4cF-c4!VXl8cMv&+zJ?1QbQhGooo5m&KPqii>8Um z;;zZY+^?L*Ah9CH@mcB49z7f#N-2e#YLO}L3H^(Q%kc%#DCqvjpgqlQGdk@t;k*N4 z&@v|mdpa9`ls)%g!r0Ha!VAsR@h4sS3D0~Qnsf%^xeLD^~t^&`tBV4Io}KV5FgyRg1SLaEF2>rV;i}mERS40{KLp2&5`fO zjAu@9`1bN=Ry8I9I(dmT!rE1s|9^m1X0S#Vp4hVS2t+B(WWY&4Z9)>^WGT`BlVfb4E9&F1GW7+5ay8v~H@k>w4 zD-KTpKksfDzv~Q680{24BK)G*^)>KIugoj@8UOEU{0vV=!-ALDlb$TVXPM)9Dd2Il zI0Ec>vr`4z^E`f7+C2U{0^_%+4}SsO#s|vH0Dbm(i2gJaqR+$S&_Cr&NfkMMoCw^{ zOZ0g}!aEiQ@LTkWwmg8aOVA;f@HaN`uMXf>9a?O$Z8{^zd3}4D@L7TNwPJr(?A(B! z>%7Rhv!@0^gGFvGJpK3vd3P!6H61!Tz2D+|jy+f_V9Pq#OVG}IzfAT*2K;`82lHk4 zH4Hx-wk$=G%nokAv%$pQ)DDk4`E2gwG2FPr4v+T(x!VJchjO*jwOb{AR~+MCX?$dM z)ML#Y_~-L`I&=Sht{R=WbDmbf-kGVEE3!o^I>or~Q$;m)`){*%_rWh6!)b!9?@xD} z;~C<+Jo9dd8A}RUy>6(niZE+po_e=492KxrP zm@_}E;O+fwU=3E}_e>Fn?`n?cDSj_KTW2vxJ_-6=@E$y-PL6dFa5Bvp3Q_Pm_7Whk z4LckDpnxTBWhSY5M$SWH4;Avz7<#$?n&Mj4zE)nyomfp<9~aPa6OVD0@tM7k3;d?( z=($cENsib%k^ugI*}>$ny(0A!x&= z479l@x>Ixoo|P(=@2(ms@&QL4n(!QpwYLI30*fNbKE}CmYe1GGN8Ye1=+%!%+!|&oa z!_P9Oo}N+Fh|j^T@Hu3+;}d$O+6M{myqljd@H4yw;ud~BZ+%WxWo`j~gM@eW;^%*< zXRgq4QzaHY=Q=9X6S=8IO2Rv?GW;2Su8ZHNntwOd{Nr=3{@~}+{0zOx8N<&X(X;<8 zNRjety7_xIRgLg$=`GC`+74HzGfk#&Ey<6(o9z`@Du0q|rg+?+^Ek@T;UC9=8a+ot z9`8B+9!B77&c6kEF?VPKoy+vavBFJNK8n+(Lgr~)!wSn7Cx>cS?Or~DReXncB>mFA zS!vuO3d&-ZCgtrbPb2HZHH!w1Y>oD|X8jsl!Srh?`xekQt+Rcfl(WvL*`!}bHcvV0 z&h^1WU#btr=VkXn(7MAicmTJB9doXNF1FlTt4>|Z7Gy<06-p(-gPW+VE!6;&oIk1bo|DoBt}Q4ZFQIO!jKEGi$?K=v+Iywmy2tg4#v+%YGSyLUKV-SmJwb3{;J+;Ami)(Y zKM>sxG#r;GKSuWgp+Nmxz0%)E4io5d@i29{(5j(+q;hI?Yjv$FgDs0$tu6~4WlLKV ziH)SYp6Kpin;Vd>b+Yv}@>X-3o)$OX%fi>Imd)#?>Nsag+(%pT51h;UV&OYKC*;Sj zE!y+U2+7ffR{Fws$L^oQF74V_#|!j|LOwA zBnd;mCeBgqC`J{D6HK|m>H1ifV7dAhe$TgS5r@)q<$LN_0r>lk+w7H~&`0YS7w{f( z1eJe)7aucxTY=6a<-E_;(PKotXU;6)hf$><-ZPaL4>&y}YFlj`zo%~F_FUlg0(K?f zsZ+N-7kIt)0l(jEj0nocSdXZv%*GfLl#Q`oL~%9-b$Vz5&ZH#ydJ)ffmK%?=WR$YP zqpe47YY2XqBHDMdrU1K(Gzf}l<6l@0S0pM+6A^E6(G&g$8pBCE29k!J`&<8CuDvdr zi@kbV{bT)-BgN6)G10NwvCr|L_o~53(o~@p*Lqb9t zggh78Ds*<})v$J9&xd^$9vwa*d{6jC6+$Z9S7AhjeHH$U=o(QNsYmvUd@u5PRKuv8 zsMn)i(G8+UL_Zh(QuO=Lf5ybdWX5cdjg8HTJsejjZd#lX-!6V?{JRO!33U@zCH$D! zJh3<_H0j=?*OJ4NyCy%C{Ao&R%D|MBDQ8lyRJ^m|_=+W!DpZ0g!auH3(hr%IzL zXRCIv`dHQJ)$Xj;vD$)aCsR{XpZj0Ty?0y{$M^p~v%B|#6)drbfX0&8I~b!T_7=O* z*lS{oy+&h=EyfmOFT@xVOB9X95)~VER6tP>1QhN?xWGjuF-F<%bM6IW@-Cmx%eiZRFjk zN27D^lz-=|#-5FbG>&?=$-BQaso7*tQ_=L@rfZvKHXGP1=DpY68}#1J_kG^)_5POk z?=^q3`RC0aw5Zu)XUp0xziOqon%!z=s~4@uw@z*IW}B&Pg4=qu?cR2N+x_j{Z8x#q zk#^bb8@2zs{cj!K?{KtZvyNLnDD}bePL@tnJKgVGrt|F1NnN^hx!ZMU*PyOuw~^hV zyLaw>rpE_8?)Du2VbKpa_bSz^f3F?Ai}jxMQNTxk^qJk)+P7cdpuS0c&3<+Jwe2^c zf8G9@`yc5aKH$9p8wM60`0l{r15XSpHt3B(RR=X3)O^slgN?!c2A>>!dGPHaenUPR z5UpvhTr+P^v5ec5ufz^Jbw)KAwQQ7g^t92AF@48`d|Ktx^<(w1pO5`>T+eZP#+l>0 zj=w%Wdc18y+5hsZFrn&%`V*Q>m@r|*gxwP^O-P*JobY^NjfrC>-k6v*(VXNpsm|p5 zlPgVbKDp=Qk&_Qid4Eds)ag^dnD+6su<6~VznJmK4BKZ-KRYnLtEQx-9v1Y5Aq&mOlORgD>ZN8MZ9nvVdjtmfiWv z`c;ds#(s5g`8&(kERS1JXT_)$CsxF-thBQC%1JAKUR8co?^WTeo2=fp`toY?>lt6~ z{rb-})z^$)llo1|Z}zOsxAyb3S?gx4ySd(b{fPBvHZ~FsR>-|6M|8;-p{)GKmLHUDxf<6nfAMii0@t}6F z`oZ}JV}5?~=S4s7J5=;gl|u&)mpk10aHqo`9v*P`wa$9`$R5UswJbf1=lk3nxqR zd*kGalTS|#IJG^vNN|%ISpDPtSOrDSM{QnYL#Jo|$@P`I(Jp4xTx6=E|9bGf&TYoh^H|`q?ID zdz>9~cG}q$XLp`GdG^-X__M#CD}1ivx!UL2oa=UOS~4u)I~xp(1%3sD!G7qyF}FV?*H-o4rRtR?S2|xAeC5+CGp?+tv$ zue`XL@9Jw;{jOHO+VpDYt9`G2a&^+xIak+R{qE}Vt6^6kUd_Jdajo>VYS)@x>w0b2 zwJV_kp`AlN4*fiIO=w`~k1$QyHStiQ4E#<3eWZY14!e$(^j8#f!=Y;$wK%_%qM-P~|9=;ppw?&AGMq*7jRJ-wM8U`&PoOr?>OpE_b`$ z?bf$<-#&Bu&g}=c|A_RCtQ1*0^4-X`kv$>@MUIJ_9=RrRbL5W5y^)6^Peh)NycT&Y zGA1%H(h>P2^7$R(j`y8%ck140cW2O@sdrZ0*>LCEJG<^2xa)KG?Ys5ww!Yi@?x?#{ z?=HXlBFYj~B&u|jUzC4TyQr>FA4Lt08W}Y=YDv_ps0~ryM(v6^5Opl-Ow{G5u&9So zsZm+ct)n|de;7R^dPelT=%vwXqqjyMj=mcGAo`Dc-uEist9!5My`J~R+?#xF*1aY7 zHr@N~-tl{3_hRooiV-m-V`{{-jOiHDBW6s@7cr}1w#4j;IUI8)CN$=DOl(Y2%=6e{ zv1Mbc$2N^^ANyhKfY^^?KaX7*yE%48?EctaV=u-=#NLn1zF+Wusrzriys1tZ^mceB$1YYY^8a?xVN~aZBU2#~qIg zk4uTy;>*O>kMA5mBz{W#lK9Q>hvKir$HhNRD3nkopgsurg6Fy5=ov=IMY(jKG z=7W3>{2l~6==@;RgM|;)KiK`?mj`DbTz?S#AoHRAu0=*0Pn8xs#Co=m))csns6F)PWER4%D*QoE!4rUzBIGb@LBRnHIJ2UGpAqYDf5TSpEH9q zuV&uKe3+S$`R8Mg$HgAM@tD!B%R|&E6kXOa$1=dHakeP!sXRz=-dUuEqPJz&htGUp z+|F0VQ~B%pa4cPa`Z7Vd+WjXVla0c4u|ey=(|!QP(eg-)F&ttvPti@)z7or{ zO~OwfCSErdi1u=^XsoppwdEtR3QyLD4e9ODyD5H;~#vHb%iB*5ySQIVu^K_7^N>2+_@t@Gx~{{){&%- z6iaj~ZS}6`t|f{NptaUa%rqv6?Odmu{9SxUn+_)ZbA6*&qzBTT*Th6?K{3?YKupp1 zie4UVMG>Qx>nXii#wl^c2ome8=V|*NXqRQ84SDtE-t%q78Zp{3pE6ydJwJq}jl^qO z5mDN*5nfLcTRf(V(H=uZe;Fozuxt=BwXJ4|WsO*1%n-dT6F5Fdte3aUW$?AHK28Mc zEyN0a6y+Zzmcr9D+Go6{REWmXOftrW7sNWVF zRQ-&R;+W-YQOz<~OtI7yEsW`65^{19+SGDX^s+1$pCL!njJaYgGI2mp5!EPfAEP(? z%n)r^-)ej#mTJSrFUVDGJ&iUvC+fP=TXW6?j#YBnT5Ph+6yuS@>DKjPiLp+6VYD;D ztnGxq<%wuuX(PVy953p6ZWqU`W7*z8xh&#<<%($SksmoYD?UO_Pgu5!Dx^2GWQq=! z!{TR4H?h~_6Y-13Qt^wmw)vZNpEz#V#6j}=%A<`4GZIB#$~B1k?9vBN-?gHiwE{9+ zi2gNO?4a*_N8PGfqQoxOHfgkd720{Mv7G(yi%+e+#SZHzvDK1aRIq9s*9K5G>s)9r z(a#ua+SndtjTCQM6FFxx5oGf5C?j@T*NQDhYxAK;B@u4P5<87hQPJ=hrFkwY(P|Z! ztzU>OmLJ4c&+kQ;$4F$uM@-V=M1R#D#zJH#O_b9!-R%QUdwY13=Md_an>TUic}7jj zn!s1b#PjdKY}$Ad_(6zgzMzWbpg3WCO}QusX)Wqnenej^5j#A+#9`WGt7jE)zSKI^iaCkrTT%f37w|!l_;$*5=AUJ*U1sJkh%8OrlNy2j&|rm`S_NG(SkPB z#5j)=;(hBlQP<2mGHa@vQSO?MGP>AI(Ra(oJX}| z#14onptA+-C|vJE-0n6LD$=3;wD;t43VJeqtSr2HPmHvbhvyH_N5@1T)h>opjAFjy8|xcl zh&4vcK_5*+-;FX>aqRnIA8p>$SSh|Y`io|sldwx3<`T*_%wD*Yp{4U9lnw>K(?*Ng!1Hg&FJG^c+qqRsq7Robl`vbx^bMfsYEjnENB zyx3^T78~{LZ1;j*74OJs>K()OK`~8NRGnuPZ*k0P`T@38p6Xnv{K_jcHp<7BhGivbb-^Stz}g1-spxE!6JFL2IcF&6{v-k|uOrXLxONxnzJR*>bA9pw z8!f9v0m|Fobv;#XRhLtuzK5#Y22ln6wg&Hj(O@8G0y=^A`am%YyBLIwY{bSlHui|I zmKNf;rJOjar;BZtD$q!HKZpI)*JupwCQ8Z+Vx7KCEJcSLK?eKklg(8|J~2k04&b3a zPb}4Eq3f0XMNYwJFc2uY?F8Ce`oc%v>WZE}iGH4A`9;jZ)&wG7^N}|%NC!WMqaiH!&*@kcFB$6bqunO zjA8qQ^3N=N&>Mg}gz|~B)uOP=&r-hDzk%|-Tz;4Gy>fxyRR~t~#mfsk*&F zUG?I6|B>Qv(oaUa>a5D6>i%CSGO|jw!+)gstMrx4@aqEg*aVG-9)@N@FTl^r@~Zh9 z8f;xGBJ{2JT==%iPg4G^@-dPBApE01l?dbsMMe9}4QEfhn;S->v#2KEIMt`b~r@Pc-}+_w)Nve7-#Fna7yZ$ttJL@)jdi8x zRQc4nQ0WQP*OgDL%8@$;bm;H1Rl9B(Sx2b;%_Iu^=;hz-VoyY!cfF7f* zzxo&bna2w^E&d<(=Z$~=C;CslnLA$28#n(ankQTTLRZ3LRQyNvKUe$*d3i~5?P;EE z%%i!saYbH#dT9$)`_Ru_dAV)f!k4x!*M_;SOMFP_92F;0G_Mcm*&s_$&U}~Nf74uQ zDP?ZcN|<|$pUvmS0JAY;v&yc0_@GMPyL6~azvIuN%ax!1Qg1h7UFqc9v4YF?uDo zj2Rfa95o+M<}@e;+abCEPU0ycD^d5b*E0PMKdAH7goW| z48uJ(YV45P)IRQ;Q(vs|6*?P|yuI_~X9T8cnr^Z1Vi#REESk>y$X@TE>7EvY3joga;5_%WS#jlIs5C45vRd+a z}tV)jVmpmw&2iG+Ax~k<59N zNtIt+$$cg#s}t0ruAE#8mGbh>mCMU5Lp9HT z(~-1SdB*{Hhq#Y`>lBw#(+w2U{`zytCKvcC<>i{%<*u@;0B&Br-21l`cT;gKRdp9n zSW|tBBD%76mCoJA)Uk@2>W|&IJu$aXsznqFDJL?gicJsGGjGwcpPDY4G8J7uVBCphXD7BW< zT2kxh)EX%;e=`&1UGuEGW}d-x27}|^7jOt11kAC>y=Dp1!?ff)%}JH%idi|sa$3j= zFYdm$^WyT0Loa@O@xzPlFSfiO#>TfCcp{rPJ+fuqf1dOFPvUOm`JB9-6T5%@El_he ztJu#y(`H51`wNluAZdG2x1`S#?MX9}W+hBWn3ynDh=kDzqY_3W40^aLq4&dY6FMjO zC2)shJQ1w;w0K*5QvBBVRq-q07sRcJpB~>aZukAYaa-fI#I23{I&M+isJQNNUGAk7 zJCgr*>#y25dC?{Js&Ie(C9+D5)O+w`omZgx!7G1ql4P{|@BbLH@y8K7&n16!A0tmA zP)xU~7`xUL3qcVud(z;*DzeeB z1?pAxYI=3OhMr$9pcmG?=$ZR5KIx;($1)uhduRtHsasvo+$7{tdGYhxK*h z7k#}rqHoYQ5--~%j)~*?W}WvH=-ap}@>_ko{+&3lf3NQpA^Hw9+(mIoTozY&U-~uu z2N5c+>xueLB3$1`^ld*{>wtbx+!D7%q<%8#w_4IT-L)Pbgi4CQ{vB3C3cj}qORAZX{ zm^(xl8jFnCvV-hs%rZXLpXk~8Z}J1#Np_aJM-^?~UG_jn&yYRkhq9L;(PFr+$`vrI zvbQAqYRojs8s%gk*;n?H{n2VmJp0UjMQm!+m$Ss2Lfe-~w5+H~kXfHo885OlfV$pfLy zhF-|UTan{F`QEL?M8k)*F+{SM%{5&DS`QGjPmv~QsIK^#~B;z1JW^ldDq z8!Asb$RJ&n(V2@yQ0}4@zmbk+6~BY0fLTtVc!BQJf}lCMK%)v1z2ZgsVW_to^gJPp zxIrHjvM4~4YSd3waziYGR(69vDkR!g*5a6GXl*wbwYl|PL((6z?(c>`SMe;Qkj+Sc z1bq*@Pg&rJYz}w=RihrV9cWMbDrg7Lg>>q}J5q$~M*7##?qC4v)JYBmgJ@EuKn@1O zSXXr#4nF3XSwf-jW1px#lMjHg8CGCk+r@Y7 zBFAiH{jwW^{I$CPnNf18Wx2sSrd=YfOVWR2U3Wtu4|+Z~#2zSZuAt;wy>mrD$+(Wp z>C{8XIJ)pJEMgr9>aQbDIz7CUg+?^bslwQjzS3JQ{R>gl~;*o;7rsB~q@;?SuJW};j*H`5xO?^8>Kb{Mfx7r5cJXE#MNuaKA$_=Fp^x#~m z>z@V}I3DO1bD^$%3DB0<1EF65*MTZa7zii*1{6J^pmc@-Q6M(PJG0%uil8gq5S(M^ zZeUp$YPumJpcdfCxyUbblfo!KMz^5!69pZf6Wet`Pl6V916w2vWJE#fD#P0i>=RG5 zxuNuzQ4|y-A9zlz#|5R&jMv;yd^AdcQsfg2E$xQlt5L=c?3-Y2-UX!xnfDdM?p(Yk zHYAKUIrl!aq8s{IXeCgS^mu43H?W7os153oo&v4!2G&s+4S+xC>CgZ-u$Dx4z`LYp zLYugu+RSL`hRB9C1Mg8D+K||$3rf#2H|~OJOQVGwO79vi-B4|7v;v*T|0%Sy8@dhJ z#SP+a!szM--(VBO-dxbHLA$#lRonIey(j}RWAp}n&@ZZ;`?{fI$LQyVZin`FL&=jd z01V=I59r`r%!LjCV@b~s9S6pfe=>9em`r*}=oB!Obj8nUZs=*y>2Bx_=nSxs<5e3j z2Iv4~6S$wtjXBV-z$((KL05yX!91`AtRuZPbUoO>wNx8z1Y1Z~ZMYTC|BVG85YT6p z4Ka3uJsj_Z?gc*q%4(=Su%GnD&>(OCP(J3wgmIj6RlCuTU6>7}FB7MA*%|K95JoVV z1x|yrwACqVOq0<6PZU&`W3Ig}mt<@&zGS)U7i%?%|xz9j+Ik@KNs?z=b3f}{6$gR+0;5g~qpvai-N!Gs=+#KPCd8-@ZAk@nZN#7_B zzsncp_c39&(MKxsL^}*pbMS(6jtvsk+6U$9-0Ogp%X=S{<`+RNUO$je zAJD&gkgVqG+j2yUAUUvlkX9{7zU@~%NU!GGDoC%`s%x(by?vMZE^Rw>sc$RaPX-MQ zGAg<#JBBUoUDG#6bn7*OW%piwLCt!XeYrZUckf2kgAA1oXK?h=-efQ`Hv_0EspgC7 zL6&OmeS`E$oqKiZ6*Q+s*`Q`EdYAR{^KBV)x^u6f(=E#S_3m9g$ojI3ly%mKQtr}v zR131cT|LOtokO=?LCwkriQY?>s{Fe3s^AwiXX(3KZ6N@lkL1mYb$(S*Ti2v&Bb!#YepkR241C z9%C9WxdrJ3s|N8D^g&rrt11r`k}QuDYEwV16IHOsK0 zlUj^bixq0IUoA|vc%zK_jLGVZ$?A;B2fchaZLE*lRBIV(@rDlv4^WF0YH>p?OtomL zj;rab&QOb{RpdmJP!!iT32(lpSSV+m zD60E$pIakQ9DC}`+*EOEDe;>1wD8vYh@u{buvnu6z2Eicg}xvntGqsemdIUK?%DRQ;dKcs#qu$xHJ9phfG!tiY*Yk;j_%7~i6%fTGvvIEL7UW6Z z^117UL|@q^cfGLaj=pmr!~4+X)7e?j_&C?XCiyYas_q$8eF|D?`;pnU7m`F+o+O4^0iJW(1S>46mT7To_U+tp1h1ncQ$^YG-6q@i9>Rt6-Lai5e zAEZ@by|<_+nvmKOiI+&!be41ZN#0jIpXEY+QY_&oiFK@Hxt{U26g&7yM$kVYmk0Ps zdeW~fgZW8uhMyGY_(>u?D)xJopH$I3mNyx(Nk(1~ETb8?8veU(Gp2)trtt8W-JF26OnSL9Ln+&;vkZ@nT=-osr;1XI602xacs3Nf0bv1 zCc~wTloXl5GD~K$%$C_KpUWIUSJx;r^Qn|s^Uyq4=F7%lkxGq#n)Z^^!NS%tXh`=3XJGqLD1Wz{i(F2+7U(#<aK#I&v0j*#{!#4Wx0~M{etX4U#dBGSD3`>Yo{l{HBz{u94BJBFM`AlL51RC;DB~KetLOgJRk+rWaTCXh!lQ;w_*CHKx^hrURSK)- z?b?>euq0oLcvH}h;u+idIr=qGLX<@7mL}J-%&fhRL{}1(MHTTDmZPeuM(?RXk5c-m z4*IE{sLwmi8VY|AK;L{vG#2mD1C(Z)i^MO$x~w3g_BAqnkSNR{A}hZTEjdaAdU^d#y`o-Oe~Wp6>iR(vZ^zR4B)|4HAM7t7awMs^SDzo-a4Gm^*u9Jf3^@Z;;b)U%hJq z*BZ|79O_@nzf{Ac{+glz*Zf-))C%78UmDOWU`@UI4Hg6(EYzxDU;p9tmlay(->C3e z|3?0e8ZP!9?myG(e83d%O7$DFZ00{a;F|Zs`WG7H1YB#7Q^d2VwU}qIl;X<*rW9XY ze6xR}k_$^uD>Jg}xUvh&E-Sm*XPM7xpKEVuZ!D`HSU=G3lz*x611t2ecfaCkRfhWS ztEGRbN^9!}vK3gR*<04P*1z@a?fCj@tA1L)aotu`*H@q5KO7U@sP3C}-}E0|XI!0U zYOU^@)N3&%pHjCKCB9I9ZN2;T8#g?ve*UG@y1S0<^m-TSj#K=occGDIy`uF7Hqz>y z2uKNVHqru|P}i^Cz5u7=tXf-fLFHNheR9o3-f{n1`p-7_=eE1ne{npI z^Le!4;#{sP&QI}Qs-)7t5psW_;ZZpBvQCP3lyzpqeX1|f5830A+n24Y`ljl4uD&@% zaRB}tbb65WSUPHsH z?_RZJtWXY*svQBG4*YyYCw_jSi|8)OF zTgdkS)}R*F;21XKSAPEDq&S5gIgP*b4&F`(w&Wr{PBSb;I9BQwmZ2?{A%p8=@*7G_ z^eMLHPw^c8Fb6|962HbG#>o6KKToR^l7+;0<`&C{39`H_&vQ~Wm^GTBtcaM79cd_L zVoL(VEbPfU;&UuY3!dBUF1w4l%n$Yy^RO(v#C&D~`-=r~f&4-&l8YqX8(&hqE0)P< zc~5*LV`Z#ZA>(C&SSeFwnpiDO=3&0k3S(*4;(gTOKHIwZARD!oT1&A>Ypu26i3#i! z_lD16mM9QwwMKlaZO{V65pBEny$EKedcQcQ9nwyS%UGjRA{>i!ntQ>|YG=hQEYo>$ z8|!pKxGa*0$0o&yhuEe2A`#mZFOslN4}_Y-whLvW9*Jb^RH}G{tx6Lq*sBbYip_c< z9Ga<_;t$+Gd;oQ?nD`TWRaiX7W_gPj*sY=>2Ycl!Ol(#~ZilO^SC$5L>n&-~YwG^Y z=r-3|OK-iS-bucuch|eiQu;7`ge2}c3!sAFX$I#XYRSVCcARiO@!=; zWxFkVVcqV?-dMO8`H>!{C(8cJJlo_@HJdDlVfCEyV`hf`l%ME1x+y0x=WEDGMggOs zoMw0%-g1Uf)F>rCGklCz%adJL5yS*BD?7kjJ^VWwQL0`Q@qdjG7&mXO#~q z&l_`%c{0RUU@VXqjfKWSdC6F3Y?8cp&DbKZa}Q9UykTrNw#zVMr}3i<=iZpz^0u+p z*e4^6AR|adaj(ol8EqUgj>~(-3FCx(U<4b%@}Y6oxF8daOMDIQk#WViDpRKjO!A7tJM385f=uE2JjtRTSVP(du!*#T=v&aYp;e*Ppw*!@pf#bjptYfOpmm}3p!K2Z3!eet9q=w_3f=?F zK}*mcbOfD17l6zg$h`3(=neXSeqaC?1csO?JoA=fd<;f_QD6)h3&vBYiC{9AN}t<6 z8IVU~Gv@_@9UQX@ip(+BRNOenaUtNUdD;jEDduU$a{lIR(TML-y<co$8&?>6R#@9$#-dYhqf>69Q*P_Le@`z@+MA#bPiu0FUJuj<4M0QS z4?2PmKqv4e$8H2$z!~z0P;UkYcR&g~Cg#9|T38FS>)Z`{L38E%J)Fh3X1W}V9N`I5m2T}SUN*_eYZ&LD`l;|cU zx=D#{QlcPAag$P{QHq^43bW1Y2B^lk4jBZJ$ z&nMHDlj+B*4<|D>=FM}v-g+FcvF!kvz(oEe&_H4EI%o(2z&qew&=kA}nuC_0H|PWU zfk9w1*ah}b?`Ckx0hb(b$pM!faLECO9B{}1ha7Oo0f!uL$N`5OaL56N9B{}1ha7Oo z0f!uL!vQxOaKiyN9B{({Hym)o0XH0Q!vQxOaKiyN9B{({Hym)o0XH0Q!vQxOaKiyN z9B{({Hym)o0S6p#zySvwaKHfv9B{w^2l(m$Xb1uTeGm>f;D7@TIN*Q-4)7gG&=vxOm(t&<-ppP8r zBM17(fj)Aej~wVD2l~i?4&tkCTmiW>7hu5`U?mq|B^O{N7hok9xFp|!NbnRq1J9{Jb+8ny18_#?96b#i6}-I`H*8@0DldmFX4QF|M;w^4f=wYQ0* z=2Hz7u{9Ao$LeQUk7E4+>yM$?Y(HiF85T}A!|_=X@mCV@ zRTA-267f+I@lO)*O%m}-67fkA@kbKzMH2Bt60uhi*sBQaRRp#w0>2=U@wm6?Lm&2` zrlHg@lp2PLi}a^LJgL2qnZu=EIap!(P{UAa7)lL8sbMHJ45fyl)G(CVg;KjvY8Oha zLa9+GwFss3p_Dq5QioFFP)Zz1i9;!IC?yW1#G#ZploE$h;!sK)N{K@$aVRAWWwdY} z3$BSPSk&L}Opc@3W6N9C&Z#P63`k6X#E(pehlM; zSTuhOS|mZ7!miOkj%A3!GQ@DjhvF*dTr;nWQ1h0!Zr&3P zj;DW#OppbhfNbzP$I~|jeN+4ia_IL0=w^(xKuejCXsraSObk{gMxs+>1JD>W0q>L6 z4cY^I2FRa&wjM5eu3?aQ236Sga3>O;frLAe@ED}p zLC^6*qEnD)Clc*MqR%7I8A!ApiFG2KPNXshsdOThPNdL@)H#tlCsOCc#ztdfqp`8k z*w|=nY&4SSL=v4yq7zAUB8g5UE(3|nK;klxxC|sN28oM7;+#mF6Nz&oaZV)8iNraP zI42V4MBqv2GSIRG-V)3 z8Ay^7>2V@GF-VUSsfj^qV)T1vG&VmPn;(tzIFXzfB!?#iKo;vJZ~l@%1BF3xTA>6e z1zu;nAqW6`n*b?sA|+0w#EFzRkrF48;6xIfNP-h7a3Td6NI?ctkbx9rAO#snK?YKg zffU3b1u;lL46W~^Ot_l~cSGQ8CY%j{vzc%<6OM+!%@DX50yhKUW+2=Qgp(m~Fa(Z;z_AcG7DDYa zseLB3&!qO5)IO8iXHxr2Y9B)FL#TZSHP58RA=Eg8@l0!Eu?=Vo+Jhco4cGvF1xki5 zK`(>fO*=AcM_%p7s~vf@Bd>Pk)sDQ{kxe_YX-78g$fh0Hv?GIdWYCTb+L1v!GH6Ez z?Z}`V8MGsVc4W|w4BC-FJ2GfT2JOh19l5e2S9WB|j{Mk>9XqmPM{exMjUBnMBR6(r z#g44lkrg|#VnJpE52#Da_v3o=41$Oy3@BgBF-LKKpb;4b6;DE#qzlsJ~rG~T^T zHG`#t^)%=c_Gh#Hl=y%*C}O5*MR~JQan{SQUYoIST{D<=`_~aCQ6Vf_iuM!O2lj(Q zqJVZ7{2xc7SgsW9Pw+xTutWhOSiwZFf{9=S>-9kc&=B~807m)EK?~3lv;wU`2T_RV zRxr`6V4_>WdS}wQfUck$_z3g?eL+7k27C&}f{A=RZW5RbrhsY0Jm!+$JfKF(L}v7z zlxsIsjhfNj$X~L4nKU(e4u@h97)2Lk6kU)}bV1}Ynfnq7Ae-)yH1S^K^RLl#L83is zMC}bN&fQxjKq>IQ8DY2QoQ|Lq=mL;4tY8XOFa>%3YxF&UZ8ZWPPrehuWS~alfu!e- z$c=NPg@CJOuyKP3$xTs+Xj8CpADRGCSkEN=3CJdH^9S@9qbt=5kTbrIl_vUwbeA8v zTh>FaXd6kIUI|nIZv*^9{Ws1vz-5l*&M!ug{XsfjZ9UKeu+3SIIqNZJJ?5;(ob{Nq z9&^@XX0ATs>&)uReo#h6Xx}HU9LktaUd;uq`UI`|1nv2R9J9zViyYPX^9kDXi7V%D zXf#L#Ss?F9#my&Z&nIZlCuqngXvimM$R}vWCuqkflq8FLCafkJ0QfTwX@nozn3AaR zNEb5I{m|^&_Vfe6NGM|}5%U@7or1BfSUs5cCCbm$t}|gUNRYnq(-Nd^E?8F)w4&u3*!yVAHN( z)2?9Cu4rl;wc8AX>o&MCz8o}$&_Xr)uK18)jbtuV%nhr=0gI0KHJf}^M4=qbGd z+dIJ-)-OZDK{QAOS=6*RC;>`=@n9mD45pf=DCsFmnL!CNh^zQh&PG_i#`G|(C9<1I zDQ%R}hP*yTUel4+WJ+v9Rx>H}O=QoGys18%NvUm=`Z_YE`g10ww;^N6$XGHmrTTX! zGG#}e(vT+`HM)uH*r|<;+SsU#4f(Jm8+K&Fj%?T&dp|}t?8rnqHMAiUN-t#6_IBFX zPW#$vTcsy5XR?6i@cyZkB= zGpS7Ns)D+pKJYi=;Yd8(h!gYK{u-ZC6u(!3P&)C zNqb7#GvRF%pfw8tFQ9sD88e=4o=kCzuUtn$l}(6c{XQ1PMqeq79#*wOe+rs z!`U9KTHMU0rJQg)6OL!X@k}`GgyT-Q?1Z~c`jXPKPWn<7oXvFU*C@7ANPi4PN4oT5 zF~+;Efs$YxBcTak5|~QgS_ln>qMNDJ6ETv0br((^q(RG--!`(jK=+QyL_S zeh|%iEVz%~n_zO^AnA5;Nn-}(F~|Q#Py7QpHiQ>_#0w7CBy&``n#C@gv+mX^N%RY) zS(4}%$>_*L`bA;-g_rCH9n5*WQJQ{HI9Joy=@W(N6JGQIFZzHNeZY%8;6)$sq7Qh{ z2fW~*4O#a>*1eE*uYYJJWwmU`t`{7&A-7&|)uwO4U)%!42S#?i+**pXDAFFVodSIf z@Sl)bFJ#us(D9{;;di|TN`lg65^|f2+xJBUA-7)0 ztrv3ZMe8Wbq^y#%NJ_IM88gU-I4*MNm8;>D6|!+Rs6Vl@#&G>zVvOOe-(o!y8s&cZUse2V7Kme9^nJWk{<3Asyxvx&%Ek{pNkPTUf1Jw)~%B6|;! zy+pXB;;1TynuzQr!KFlG?-3k&i0mc7Ar(VSMDCK1yCn4XBjoN8a`%XuB~r6QYL-aN z9#W%3YV(kLVf`s>V^<9xP=iEj@PHa5(0dZ8L87Y$Y0$^mQ3KR<&5b^w7Kzm20kue^ z7OB)Cky@x4BvJ!r*v$u&{sETvOpm7Cgym{J31BhVN$0WC=D2JHbp1bDGnZzmQz15Yml4=)1`F9Q!R0}n3)&n*K_Edx(2 z1MBR>OUuAZ%fK7Uz#GfJIy;%Y&@ZCJfUp-!&hgSvh^(9FIXIu0Hwfq zz$g%}C>w7m8*eC^JFU~OGnDIwuW%lSV1h=&xz?wKSe0`DY~1eQ%6Y zkmlxqv_qvn=|0&9MkA1Nq2`kUN6fzrmDgw%Y+TdHFa{r9@aqj@5^S|G( za+2fz579pD)q794M}kpzDx>aHM%}55x>Ff-r!vY;Wt5%DC_9x=cB=jn;GPJ*FW|li zM%k&1vQrslr!tauGLlYZ6rIW_+Q}$d-ACedMFv$AFfRi5YV^;2Z-|poa_avo^7r5G z*Z34e+BLsPZ0AqduaXB#L9w*@!qD-?nXE57r%3tgANRHzjVz+ z5br66ocWOEOFXAM^nK8U{R5$czz~iZ21c!gJ6z0l1~% zJ!rHfcTG99K=3VhX>14IfgRv`@b6|n@?u0sIOiCkM`$NGmOC?u0S0O3KnS=9;FES0 zgn}C&3`Bt2;0}0orsMyA@uDF2tO~w>no%LXjYRf-7%ve{jZo&A!0^_h#3{q zA9AdXW8870AYz(9x{4e9LHeJ-9C5=8to$mj>$vo1k@i#H)V^s*p& zStPwIh`4Id|2gJV*rk!xND6C$R(A4~R6*B>suAmL05i(2kr7|xRihs?v=a^O7)82Xha`-hO}|K{rFqnRJ|R12X=t(!ATGd&VX|u1Y87MTe}KE!3_`wBEW5M zhj`*va2`-jo#S*HaDYr;ih>55Ff>pYlrewj>HdO7Ll6Mo0q=sQ;62bBv;@6DAJ7jB z0y8*oGjtc&L*4VDZBAFTO-0($u+qxgz*j+QWnq(5oXP3(7MSmKc?kG0+N;sGzanmG z2I!v=H@8>tKSbQH#a8re0cL9#fG@xzuox_%kKF??AdX`^X}RP03pem??$J`6X(2w) zOBsjZGmJ4ixbn&-FXcsKlUFu*Ws_Gnc_~jJo4m5gE1QUo`@VT!(V4qmx|wsthvrJr z2kl$RoFmVeE75dwu(xxFhR@OVf&JhQ@F#d-&e1LAO5FqG0|h`Ku!Hp7-~tFWSJIQ` z(2M8L%jOW(okLW24pH4XM0MvFJ-~-x00;y>@gCm&-~c#9S&GRBGhN=M?2I1eU26CQ zJmsDnZ%~vtesMgX4n$6-LFZ7fxvbA4DsmGL%`p-H(G%ktzM{%4iQF>DEtT9Jk=rA3 zdqi%J$SsN79+6uTxjiDcOma&iwiXQT4w_R}ADHrB7nss5a;D>?GssqKp&v@vK@=kxJfa z=1(F6nR!9XL=xTfAih$L=v56fR@S1A6Z?_P0JDBvBU%nHPs$M-JDRd-ltM{Q5Nl~f zMY&H<@>QaoWe?ol<3)3t{ojj;hVR}Om%Ga14v6s5NM%@}yx5AWiB=u`c{R&djrm|yB zCVV_C2jpbXV`|f522kJp)Yn4EYr)goJWZ0H5s$j(v9Ni=b>Cwq5Wd1+hbZ|GOcli*62i?mdQx&r%6ISJvhq=r!wJE7H4O|fh;)ih@&ES;%+)568X$WS=GGYQO-%>9H(m})rdahj?y~Zav_VLDTs0+ZGGUwQA&2jJVcA#;k;v< zcaT;I=iEzNFOZTdDNZDhYh3pl*S!kIGvI-p658NFGVR^R+(8+-lbT6tCaGEIyeOXg zNfWP8<3#dFqQ;5T^dU8UpvLGfX+7;Kl_$^q6sB#q(H7a_Jooiqgo{z;kJRT168`XS zvz|ee%suM~2Z+w};(5|ONPk^kEpwMvKTLTp^0o7$w0ISA?MRC+r^Uaew)?okW#ssC zTKQvIc@b9{1_!p%$|GsziL`QmuKYc6>;+d6k>fy0F$p=I1BVVG$Fq>*Imq#J;+d>J4V~P@8K;%jUFf&hPzShjbd*UdzG)RxTWT5FVgaAo;HnEQyN8`>qS2($hoPU zTR6A9+*-#9f0E#ZlIleEILK9v-qJX4E>cV!PT&#K4k>UV4*d~Nd&Q%z82t%@mcGc^ zW6pZaSv=uP3QsSqSze(PD5#zcE4;VlCp^nlk!QsI`r~~r?mzP(e9imgO)r1@Q`;}o z%*6lK-kHZ)QCxexx~lGQXMq_8a0X=GR75})HA+wrP+1k+7osA#1Y|XvKI0Neo>|;q z5R(_8QD=ZLF)oORg0e5hxT7eGyP!sbL_nwC_nf|c`(B(8^yRQkqy z>(u=nTKbhhD>5N`Cwz%^YoN7;(V7k6=5Q7HGg3&fIt2s6RrP z6=`6sgU(TRx%%4@_iApr+^b9C(e>XrL_HrBOKL?fa{F)l{#1*s))A1(eTJxHbjIBC z?p3ff`5oSYmi*d~FKfAX{cDS56T^3r+7FOwmE-U|^x1v~o@ge#C(a(SDjB{CT_4^Z z&JWo^jvi~w?#;R3@^B0HyY)eTN_NMAE>Xl&^%4 zmDcb!=pVxe!<)hdJgW@vO=aPq!(TDZvg0Cr2<>IUPib}M@MD6yhMW#qbKdF4Ee4|rM`}ws$aH=ZWJjch}5mA@8rq7V?XIW0(x)NKC&3*o0$;nrtn48UeBXj9todE-|17G zHi7?Eci`}&PcQmGwPI77T#L>6W$ypkEy+o z-z5_Jjl(z4qw(A)_Z*4t3Lg#^=B6Y(?~;aV`yiYpvzqW;8HXCm^|^>{{c2!*PmJpe z|C3Vs>?WTzvskGwfGg$*D6+v)MK)Nb$Og;7-g(EYP<(@xif^z=@eNihzQG#BH(0Cq z2I~~x;5EfJcwO-gHYmQq8;Wo6rs5lH1e>R+*#th%0cJB8J(Xq)I6W=QTVVCHG;f2~ z)7reF7zpeja$U@Of_nh=J-7#8CV+bYHiFihEG3xCbSQdr+>p2kjO2 zpo8KbbX44fPKtZbSv-n>jUb2zJr(hw4~PeAK}8U(g8_)oUMk~s}_Y~#e0!29(rzi&(E6TwoigGYXQ4VG*%E6tAa&W)D&|er-`HTET zLA4?t%u&RHzbN9tgNk_YkRl%7n;OJ}M-}m4z9JqxricfN6!G9mMLbxnhzCm)@nESU z9xPMDgO!SSuu2gRRx9EGyV*cIc-}7o@!$mz57vN+AXo=)DAvK7igmD2u?{vV*1=}Q zI@qFE2X86X0qYOJbRD0~b$mA0@!3wtXFJAcC&p@Lj+UU29K_T6V2*&Xb_hDH8%Ggq zX5A^-gQJr11y&g2t2Zbof_Tyh>-cxbb2LXQ5E7076RR(WASJNs&FJgLjBOA{0hlO* z(Tpc>ROt9m>-hJK|550O(Hsukl2gee2r11}7Zjok&gHG{JdQ%N!WddFI4KQOF9hg? z2U#iqD~AO=>ml0qFo#u5QK*{2tEOn6nxd`hh;lTe6t$)e+9EU!RA01FebGksg+*UfveMcdM2J>F3wDebqC2{gvwP6pv=4fqM_Qmq zdYST|chDOYg+Ab_6st}tR-ICeHaVWuf#9k%RXq}*N6w|xdF-Pp55|D2(o}I(ng=t2 z8K#}0t27U8M9Z{OEz?f5Ob6964bd{2Ovhkzuo=+ct^5nVeDYlISsdEx5mN|i*rU`l-_9rJW9;p*c7a_0|2TVmtX*gq z!ao6$OB1^Y3r&UMxiqm)VX3K5RF@`p2^O0Q#dc|8pTTldp$IPldT=?dT7eBG4HDT( z_*K|)(qNLUhF^nCCk;B;TKIL?cGBRKJq!OgY&>bZ-ma&eq9uz|OBSn^tW+&osamp9 zwPYo}OhEp^o5>ES_%rdKn0-z^?6SMK#@%)|{2sdp{tNpB{FnAictMS6rdqX`YSm_{ zRR!scUH__88>v<;QmtB~TD3^EYLRNyBGsxzs#Om}t77}YyHW>J2rgPj_)e~qY3w>X z_SOmF4E({4J$8aS1K$NLT!t3zfo1b>cev@`dZLj_RU@-kAB|ip8ky8_Zk%cD#=A>R zN72i~fJa0A8E%HLpsxMgq(EJ}5&W}Xf^s67`ZvVi@;vb` zfaG$ZJXfG#=s?$l=ThQc~e2Fi??;@x@&~jgH8h~ckM0~tsr!Mr( z*zwlMAAr5O&{weYt&^|xmGG_E`DT3^yucRtw!STVJKqkzJv-s7@8H=R&f>|d z6MScO##w)mKM4L{cF0+Oh(83r3p?ekKhz%z-<2J6)*t2%gYU-9Ig1al?(jX>L1+Ep z{&4u7z9)Py-wVFC?+xF__klkG-vB9pBsSEvKgu5k{~c_pX@9go8vYn;s%hWX_l5ti z|1Nw#-w*y+Y^-U2oIeh}zwZw}0N(&9e>^tVv>)gP!Vkjsn&!DaguWW;htf;K{4n_8 zemMLHKLUOv-T@q5yH18b1+M_kkMg77M|+-7{#1V|{AvC)_|yIA@Mril;K4$IGD|Q; zGE0C?2JxrFPr)Kz=%<4GQ{t!bPmn@C9R#2fe+B;tDU>+`dl9enSDNI7v83d)kH^pE&Qh@bE0Lm%^xk#m7x07}v0 z{&8vmeTh1mi_qF7ehF9iH26iW{4?w)DD+FgF>2-c_Zs|izuX)s*i5FeU*%V^4`8)l zO>JvHA1Rf&i~Pq06p~VzyWnLSoF>yj<}UEyG!YL@6M4XC;!Pmn3O~zP)lJrSTku?N z@zuAKI%4F_#Af27?+)2q@>@QFCQ`%<<^X0ZCCM6w=HqRScE};$NdUx>c?*cEM6ou& ze5nxH44Si+nq>c0T-@&Z3fpXpB2M2!>&yI=_yVq7dM62TEpinST=bQp(e>xoUrhPt zq!(xMG}iCt%*Z6PRk}BkTAT5a-aAmK!~mNHKAyx$5E^lT=8?FhC-Pe?X_D%>dof;T zgeIHxO_WDyRBQ6Pai%R26J14eZYeM665p2A<%j09ENN*{uhTM-#Ka|}k0c~5ib_YZ z_0cv+xL7orBIiQoI|?nbTzzH#9q}U5`wA7jH*_RZIqwGeE5I5WeR9i5TpSvbBY%CP zQp*_1N1o=uS4`EAK2&|Gqq@Ya%hL^>-Pw^2FKSMiZTU&&F(Q9!x)BQl!%iFBUmh5S!$omKca$sojr&hMBKeQcA>SQ26W&%d#2Sx1W;wsJ zEA7NZ*HnV;k*k(FC4DQ}8Y?xuARz^xufL-^)1G^u8=|@_J=_?%5X~Gt21v~MvWW}f9j~Aq_V0V z>g+GBx53xcEO|xFlvM04NxsTYhj^N6^>JgW2wr7I^~e#J!d+=NMECzzL&Zcw^~=&9!Y zNs{{UWT88zO&mMf?4CBQ$Kip2_6!Q3y@C>G@1PvoC#ZxT5wwOL8FZXZsi2Ft8^WE8 zq*lg_T#G!}9onTr=a_+x6S>oc`jPy?OHR=r0lG@4j55&xLS^0+WaK33pJ)t-bhBqy zsmP>w91toJF7^wdqDcepZwqsT@6q7n^z8KN(#uPKR{B8c)1~j0m6Z)EJHKpt*)Pgw zl|5XxvvJeL;~UQ_Z&W^^{F?H=ls`{NDGi2nu-oho-m_DJzX#6+e+!-s)&*;WHNom& zRj`uvx1RQJ*5VEh-VNRf-VWXhwy=7)DcBgi$%@{F;B^p`*R#U+O7L>=kyp{ehioe`rVH6Jjgtd>;iL2cO`j8jM@~L+rpi#LnPf!RNuQV0W+wFA-k` zwRCXcYpumkgtz#U$5TWaKM_T?*dAjWvNBj|%lzl~jA&w;+Gco-sKDcOb9{Zbw5@F` zSxsUssi*7Zdb>XE2zR7A%6-Qj?T&GM-FIC-cdR?k^>+hUV;blNxxwxPccMGV4RJ%= zFjkyKxRLH;cZwV3MzivCnmgT{;m&ktxwG9l?p$}C8{@v`&UY8M3*A^Bx{KU6H{M)p@X4NPz3y>qQ!ho|ws`RDxKdGmb1zvy4`FXMUqRlnZ9=3n<4cn5vcZ}gk+MZU$q z<=^)2_;>w#LC9O_2fUMR_1pYM{$u}%{|E1;+woqpgSXS2DJM?aQw9ECewW|vzpyR* zmwt~evE`}alstp~-($p`{|7xrBqM(V2;x(|%^0^A*=eqajB(dJcqT|OTeIq#kUy5~` zm%bpdK-Q~A@t^^=sNQ%eIx09i=o<{c-ZVHE5)2Q{wpZbMeOBTH-pk2J z@3Z&YDqD?3XKw5jKJf@|AHkxt0PD>nEHz88$}GbUvkIHbI_xWdw=dY2>?_zSNJBbnX7Qk-GQ!^ zYvbBs_vnmuqYM7wyJh{l--87KukP-CSLLd)Ak201SnXfxmI)3%>-(!%*I&bWe#W;t zUe%v>FS?iAtE}ID!V3I9Swm0zMy!lq&6?}={^zN5ihsKB+%90o(8Ubku1)1W$?RC> z5CL~f#SpQN*-Dl?Bp zbqo$-wv*L2w6VZmfFGv|?O1!hdQ~bAnY5enF8>@Q<&8kS8Wr@!W5rbSC-VS)hE|&| zf<{;}hv19q>fmO4PVHo#(BAg7Bk%|GJ2dzvyB(WTH=g!Gc*@Se>N5+UI?uXIzKB)$ z!Tu7~sc&c9_f@|=)iTvBbyR9VYFO&@)HSI&sTWhV1qaik;HNW_YKxt@tG$M6s1}QZ zsR0eZnkwHGIu|qmYv#zxHdhz03Vk13jd0ioDZvN4FV?UvJ_o8aEx+DhNG>b~Qt!{9 zRag$F7n_09dlz&bAF1OGzN_uaQj?xZ;%oM5<*y`{pmUhvmN6@C&Dua0tno*%O7DoRwzo(rY#QXZH%oqO8q(I=pmVSc#67wI zt{OQgqMidxOIs_y5oGDnh43~0kD52rdM9tO)vid>7fCuFX+7AZlz2*G_HNUXOq>2o z%3=+XHc5Z8cLF+>eI(MRd!X^%SPEZ*H9@X0KJ!cbs>YH)3RXBu=k=1v2)i&eb-kow zU6DII9g2Kt8)aWZHC6~|b-tX4BvfPTl9tVaR$=Rs-jaJd$4g8kfA_;h@+a3G%imnR zcKNk;y>d;}*sP@9yP;LstfW=PKTHhSr){C<)9QH@PZ+Rs(e{^8KM zR-}85pAC)L|2SN(6ovBJ1$qt{sWsT2ByW5#Q<`3^=}$^JACaO`jajTQ`7M!auJ&Uk z#mac9^5dX$T{Gw$|0ifHJIml}utCYy#OGsNQ+kD@xEG=Mvh%Q}PSI2u%T?Iq*FXvgrRP#?!$$1X6ihqtu&hJ6@s~iW{AJL& zegZT<=f%WS`$^Cme<`%ee;+#6PlRGCLAx_o|qgdHhSb$%)bgD2_lzGdNeIyIn<*|zGXAj!a}3GJ*@e^+uDUJp zK3GT|tjcgp;G`u!5ZM+^&UA*k11@`Yf%u^e=&{_mNgB5>FYYsq!?$F%4_dNormJ{v z%*GTE)6I4##?q@Jb5i)%v>n9Wp27A+dy>7_UScn`m)Y;z33ej6O4#vrF!!_~)Z zZb$IkZ)rzc8NuvRU_H^;@pe4BZYJBwSf79G<)7fm`KZy~ZYLA}8-J6(+23Nv`&<2O z)HQPZGZ9C?49c)MPBsp4e7y6l>;Ei^=J=Pv)``ZEbcsr1qrBAq1{{yBN65Id) literal 0 HcmV?d00001 diff --git a/react/src/assets/fonts/Roboto/Roboto-LightItalic.ttf b/react/src/assets/fonts/Roboto/Roboto-LightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..46e9bf7c95adb27c042d0646deb1f8a3beb8087e GIT binary patch literal 176184 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 z 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 E4`L@1umAu6 literal 0 HcmV?d00001 diff --git a/react/src/assets/fonts/Roboto/Roboto-Medium.ttf b/react/src/assets/fonts/Roboto/Roboto-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f714a514d94e495095e2f1e525a341eade187c17 GIT binary patch literal 171656 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 XQ7xdb*Db4|xw|54t;TxnuVto}Tq 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%0Dx6y_9c8u3sy@X0Crn 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 literal 0 HcmV?d00001 diff --git a/react/src/assets/fonts/Roboto/Roboto-Thin.ttf b/react/src/assets/fonts/Roboto/Roboto-Thin.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4e797cf7ef9758a9209fae4e0b07e6b186b2c69d GIT binary patch literal 171500 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 z zOo9(|yc~T#`9gAaa!s<9|6w*K-$!rt!{m;{?EBxD{D`&HceC!b#EW?FXq5N*jkXGV zB}v}ncf!A#=&fE&USqs5d;f2mmYdH$hjSorx+_=VdZCjVgQueL?ie@0O-AoD#WlKS zH&-sjFZ%kThj!V3Hs@P%gWM?JmYZawWF?1Ar!)1~Ui8*3x1iIx4gJjz(A8`~FLO7V zn5}4C?nlG&p!`f8mPgRCJSxAG$7C4@8|pbfqt+b>JRbnNAqzw`i?J`(<|NcQhTqM!GBj>q$d{0_gX0*?L(+v+07e7p;Mndp&Ryhn4Xa&NC51Z~zUv)S{*$HAQ!Pfm z0LMjl_@Ouoerm;rr z#Y{BH&xXnKhL;yZdNf{1m;N&_D_;V3FvG25R(vqhf#GQ7$04WpU~_V<|0K{e$Zlnjx#>>5V47Trv^OTQV?=BfAg9h>vjA^ryz&tcSK zgOnV11k5{W+LEW~tCkmih|y&2%^C_|C+kU!rW=6i)3}Rp7y1ONVS49>xyqqSAO<}g zxyxF~c!bp$A@=7Mi+;tP^eQ0y5ooma4LS4>Ms+!#7$@Y=b{S>sfmyU&)>`&VJJc|d z|27he{AYDf`L8q7-LBqQuGJ}r*2>EL7BGv}%BVUP*r8ts#⪼1irKO40j0qy1+I1 zZ{TyXFWl)rLYkDHo(eI~gqZ&fF|oFL4UZ1T$}8ok7ee}%Li$@RR@VWuXz8t`%G<@B zM-Hu+(N8U*zZuvm#@!vd0T}7Oolq$ky=~Xtg?m^}?Lq@(Y13z!3Gux{{0}Xj!?>t6 zVE!v$$|mLyA-fKt4;Mm57D8w@i7jn)_?6XDfSvLv zutWb9xT!Ry&IXgy1;8$y3(Vr#+o<_Cu%j&H956Zl7`2r1fLZ<^wUlQ8%Tq1_lhY-@ zE*_z>&xGOP<4 z!}vCiRX^CBVWkhgN|*&5#4M;8y~s4?KDMrJ9^;hFd4?xz*pE!EWdAVppU<+o$UHrM zgc;D)jAQGP>#>ruoqa6#%)g`HkRW5mQ=CZ+Bi2?IR^XqlGEG^aW1|LB9+8%t6S zC$@%KH-J~SnKbB?32h-{l&CY_wvgRvR`L}>h1xmuN9ky>Qryyj+gyfwIpFXyS!jbH zteZK~JUA9G)nG=5r4d?nT1gClPs_=y?m0!K$fsR!%VJX1u=48&p6O^> zKF(#E@-x?B*{mp#C9+hEHqTRTk_$`9AAwJtIWk{n$#j`1Gi0vJmNR9Zv`V8i$y8~U z7T)_qWT99OW~BlW#Y7g#BG%n3lV#|iuU7jbym&uK)azs!_%G_0^cuZZ7U^33GG(<; zS`#Ion+%eLl-Wp$k}q+(%;&9ERtmJ7Swh)tsG0+JmilotFOCP2%jPDOmr~3ZV#&J<=H^lghJGJn{TBSAVMZ3*sJ(9JL z%`uDov4$(W1CcZ0Y~E=p+QYSJ43K=f>)drj-{bD3)CM`67Ea3$R^wH>d)<%SJ;c19 o8QozrO#Y5E#T0{h3dbj(#4GJ8IYB1MB$+HH%1M-LZNiiKBS^I^fB*mh literal 0 HcmV?d00001 diff --git a/react/src/assets/fonts/Roboto/Roboto-ThinItalic.ttf b/react/src/assets/fonts/Roboto/Roboto-ThinItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eea836f4a37fea4afe61d6483692dc431a9b1c20 GIT binary patch literal 175872 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


=UNmjg%dkGKi=+BavrZ zN}v>C8(nF7G`A(3p0Q*-nXIa!r=A@qJ+w{Y2+Yq4wZHUU@vA$AY4|;Zn;CBz_uzNu z$&EiBPq7L4_ief;M~Wk(hUK|VFq#h3A-jMDg*ScTBPHwS6rR%C2e@5oBCTjr79o#z zil|@6I(j{}bv5l}m}!u=T&y-i2__P=`^uwzc{g|u3|ETLPkJd#2sLZ*x#*b8#lT_d@|$3(5b zo@Qlm?9DE;uULwI#Kq5;>qIuAI;%@Xv7MFi;*~*0Yr8@?cjtr~a(v;p;e=*&8+IBf zABDj+x*3)D@G{kJR*PJJx}mfA7Cd9#vb>mq6|IV2*HnWvCB=LJ9 z2Uk4Qs^6k8pNUeh{V6&0TC>T7)cCP0mTsk!_I6?Z1?Yrz@4``-&fPQ8X+OKAfw-U@ zD%n8JXvFc4S1_p4gk!Jg4ul7hGj)A89cLNh(?vz4A9^b)+D5HVnEPy2zX$p0=>cLM zP^-$1;X-70As3kMRM0a8$A93u0xox%hCI6K5_T3kH(&m4aclBSMcda8 z#wf!dT$GQ9U{W>3bwRK!@u-?XE0nEEPr*SU|JiV9Pv2}d@UO!xb!koj(KjP3X)_CWk)0Mdd!lndQ@4L&uT-bT09LO(2rmS4gv<$<)L zBm?h53wXkj*fdN(px_phG_J}2T8N?4FdQTM9mRj-8f4pKY6bvP=47`qCa=73ZYwib z6J{h<6Z&q#TYL(@{B5CCvR`Bl-D!Yyr;X}`EgxFFq9W=$ZU@pk!9A&m#}g{=hd+D4 zY$nVHfN+)Z8twvx;B%wpJoTa?)=x z6pX6HErQz}O?-j?sFHjY6t}hUae9C8)#|Kd%W|Q^$z(7Pm4(;HUlwuoP9kXZsJ-eR zllciD5T&6to#ZE5`M2?$oC5DmDI?X^^KJ^S)5|?TcgjvT$16qRjcJgnJ5!FJL+^-7 zPMs^7P^R!}#1)!@eWad0T23=7LDe@y6cTEYGkAxP%&ID~U+8-Ie8pLxh;-8Eqw!FH zYCYX%3$8RazNb<_NB6yo`C2_JDOedWO#XdHjNtsg z=IsZOSKBjYrXB^|jub-nWsUb}c5@=8{33A&dAe|d2*>~j%^F$^s_%X(vcYH5ceVx!GDx5*@X z9KY5CjV!e{n4e|f)v%@4x2`WXp3jwQR+_k+HB+k>coE0~MSU(s;Da8I#ieW)73>aqgil1YalK#J zNL(_jQ@0h|?`Mi>T%>0RY&bw3oWEjgFkE`f0Ix_I4%5o^+&Y(GT2w6%W(`lXH`4pu zJg0N^eQOQ}58KX%eUu|Ex$mq05#Bm5CFBe^MDbUy`$+;?J5lT<{RXf6%r#&1SMR4h zr{EjUMSa00zzANA9LY%eCxql*-TGhrdfD?mGq;Xo5TTerp7{u$tkbYSv5Q6SQl%a6 ze)`)+NeLMl6Z3EPtG;p$`Fwh2#Bam1;MY_@Rb8o~WCMT(B`(tKu-wnO{_h^^L90jS zt+z8x{yxEnJA;a>13bY(sv}02=9}B+v(!21QBD3$=KNra)H2DS=_&h1$nKiVhP}}g zfS`;?9BZ~|FTIn7_mn~l(+sDqg)7>A`EKyv-T4xO_dJvs;?FSYKX(@OkWQM8#90ZH zed3$;);caKtQ?Jqm4FMMj`N_~ClU&%jWOtxaYPC74!Y$8z0P%km?T1ffC+Ta)mQ@(^Qk z2+q&jz1ix08qB`(E>9(w?iR6bPlyHV04;MZhm_CFoqJ^-*oY=)0vKeHu!eTAj06mk zH%)oEQgSg;*bd5a_-SV7<)xF38WrCZb!e3(yt7HB)W%N}w@SwRJc_=IaM&1a?Jhwc z974DE%|G#F#5^HBVn&uH%kQ+I9a9uzvT1sCmA5h@oK7oi5bw|=W-CqmU8))hhxp3a zSg)3gS5$BGy?=ta6zx;uMN#paR*z4%zxH|0uRuQrKSbycjLAo0)T;XcXIYMtncXH0 zu4Cj!NtgB&p7xL$==ggb>*BDt3Z?YG`ttv#9i!wxO7YmkC?-Qs*(S10HWxu`8+JBlUwk#vQ68d(-ka<^Z`r^X z1iQ$X?M)l>#-F&&&T;^GRT8mQR|1_|K;tI`;G|yG{n`EM%ZbuH0hf+plZFk|P$rKP z(Ts&hQS&!S0#h_A%lBm;Zs^OGE%&8dMTLk94-QVF92aUL%ObmAh=*Py4^iCD{^;;1 z9rp3ByFVcjq3Q{eo$|oCa;D&qX-w#w+t{>NpBrwnm5U2y0%_6RMQi_iQj+``}x7PW}w}~M*UvMQ`l_% zleJ)~Wiq%$_#*Apk~^XI3o8b)sUmTP+`~k$PYV^#|2&QcazktL$?6N~*6S;=rt(p0 zg?;{{+U*&h+L3GbGThp7tGDK&zp8v$XD06|>3lov;9*~282jDpnUOR@3S1w&J_J6r zM}bETZ*0{GFmrEXjzf#v?-i%N+h&~#N0r5J+1CqodX&%SZpIwI46Sp|f5;dbJj}Ym zbbC}kW4V&%EY>}Y1QuJ%u~hSJn6Q!7;1n)*A32ghEAT=t$8P86LkcF`)unY9p6d5?WZx`%h6&go>UcocaY|$33Nln0pxW0Y- zc)p^d>}hs3P1v!9<|Ct)9m?6$Xj+dZDwnUSXf+S4KZF=8X2YVx4DL9~u=8^`9J-!_hTz@dAap zxrZ~JIBl<5T^mnl-7Jg`$WTM4hpjtkt-^UWyUKKZZ_Nc8_{gVLVZq4nD%rcc-xIYj z6n0jw&N!W^to)p00)59EnbBXK)K&JFI%|9KiI0Ek#=@_qJ-VXJy4kZyu5a)jA_3ypByXxHx9*2b!7P(kozH5lfb& z9Ib__Ufc=b9J!@8>9AL{h|kVnJU%NlqZDicDb4nkKqQspvO}5W8vIVZ&jK>#l^oBL z$CwR!qBO97mtZZ3dbm8-56f+D9a<^#GcfOy%5U*Z&?x`Xd=F;(Z4&tk(%;s62ODda z6D;;H7E>93&6C9=M}9bwcRG>c_|eh2-I^iFLAMiyDFh8>3)qQPu@!F%a_da*5Nh$X zxpd-M5e4~WrpJ}OV^gO=KOmQ_i|K?jEDeQPyvwvoj-@cKIs0;w>SMqx_8%RePY-?K zlLQv}Ow2PNy_r*R84`!VQdfe6aVP!ZdBs6RKg z@*m;7{-ay|+iP+a$wm%(?FRc zn+)ig_w*eGl1=alT*u-;S>oZ%9VO-a4((1oB{9p})I9Re8MXSi~p3w?j3j zgat(V$0f4=y6r@`JrHB%+4vR4Oan~ptudrXglOuJh)jI%QHh^^ir+*nEUluVa!ByH zV|;wllRcm)kyF!?e&r>J%61$OOKr=@jw>}M)TX|F0Ft%cPHx0%jcR8rKf)z&Ya&~*93(B5so^U^`l8oB&H#@ePJdTi#T<$Z!D14#b-h@P@m(5*rZCH&vDWh@? zV+U#{7LR-mmy{gHr~V>hk;=+X0_ zHxOCdpdW&x@CaG-lDv(uJT`sr`Ykic6soZOT=x0u5QXK@an``|LR~<^*M#4G@E7rQ z&A%hP*i~zN6NeWaIA6G^ZlGMa&+6--$6^-?JPnUePfgPbl}{=q9wx^Cj%Yq6?>$r^ zw?pOoL_}tn7ZzCfcBUe6Fsewc6sX$8wAZCe@V2~F7l*Qx%=Wv`>4p}cp=XsAAr4|W zq5L=*m+mW%&&wJ>he@IZh^SZwb%z2UljN}?Z#(}AbMYKA~%g?Jey%My5+jYTIwHbCzQb%SlJ`-YVbafue`*;(4 z;O#390;{D8_(hLo5%`;fxap+zWbU5(cVDN9w8DHeOji4Wf};KvvP=ZSwN4A~&<5to zjnyC>#JhL>ihh3yd~GGl^mp~^O;)_#{G||EoC+Wh1-1XDN+rBnC`tB>g?Fn1vq|%& zE&RMs^~uZ?BX80`17LE)!3mB9!!((| z5fKmpbAlojkhTIh3mre3>p=7otY+v0&0iik7dw?EKi-riR4ltGf+qyE{&sFE#L$;) zhW7)WmTrK&|K_P{Lpn48N)f-a3z|9@PUW`W0`iOt+*U?YO+5|Q+=@3bXX`l#X-dm) zYUkIP2X>%I&4Nn9bwoZ=N26niJU_!HkTuzgrV#PTj1 z2tgD7n&gw?~lrrOp2@MLgW@9-D`uU_Qv${gE~nK$?3!Wp&$J< zzF2u!-->J#X_Yyr%QJsxeC!O;(2!LKXiZyS!)~t;6Fsf2(MxRyI{1INZuVX%+to)q z+x2R`({_NOA=n>lT^?xBq|kEksPuby;qGe?R0 z=Y(le_cV{^+!{{&p-*%$#wrQX#h9pCacs>c+G*MgJ|&Z-VZzNRxjF?WXcZrd0X@YG z=UrX0g&Qs5sR=KwRJYX4&44?SpCKQWI6g#W{qjIN$Nf6Y;bipQ{Ay9gPX9D&h3b>) z+t@W2gnKnjNzW{-^yl;&4wSig`fyI4lkR-JTpUkx`sVvs2dT{oC0UT|4=lsb=}7GZ z#q80KTy}9HI&pE4-dUUPX%)&o$&0a-`ONijq?yMoVUbB;4p{i3{`?zaRNdN%SZcWRMiD)E{(nKaZ(NCgoTl% zf7lX5$R|=t1qIAUZGoD-oUGs)(dBfd{ZB?vJIkfM9mieeif4QbWWDb>twi2#_mp6* zU^Ev1%dc;iw60QH5JdIEZsx|b;Y;fc4bX4k3)WVCf!1c-u~l)8wh51?sgIUaduW9r zN)gzwnsa-@$LThR7p$pyP=|bBN&@s?@RMy_>6-iBG6~MDc_m6CwqAs|f_*&OitVI)PfBy9u z{C7JbVySF{$wk=T#bT+BF%P`)0aau`m)2<|%iw{0={z7(EW4fRH=4dzBw`*z&={kf7Z zq;rAz+AJQU5CQnlSRU<0o<%OnCS(H2>Ea?b@;&*hq?rO$U1Qp;KwXx9 z6=McGAa$n_bvLON<~}#DToQf?JfZJe??M(4!mIYmlJRaH}PuOI# z794e)g}h@MEGBAOR~CS^?+>gpA3;AjO7>8mY_-OmgvX;Os!Sai_ukT;Xmo8#hIqT_ z_uP25?DKy2)hLUs7Zh#F%hsdxJc@kIgl|ptL`7SBc60+N8<(&(p-#{x8}=9itA#SE z9Mvn^aJNy9X3lt4G!ceRdmy!1(%ybjSlAo&x|A9;M(U&%T4n%NfS(yI4b3Jx>G?3A zv%ugY<(FL;y8ZA3VHt{Qk;tMTHs*7WgO@wpb;j_~JJhit_l9+el)41M++pHU;Fk5? z#}4eBCpUp_W>K$nNtzWuB93@Q;oz*JRky4-Vndmf0KmlYDZ=R{T=Qdi?*p&Vyj zZ}(0?63{3%c8!n&zF{}yF5EgC^SNC|X_SQelZe`OWI4CdNm(?3s>V>mn+^HlO0fr` z74L~5Hg$PTn~Ov|sye;g@cI>U+a_4u)1WpS;m!A5+>NyEF(1W;(`^NilNk`dKy5}@ z*HpZKU`F9bt%BKcCo+(Shk4R@KvS&3h^H{8GEah#oY&1%8Zoe5dSzg^?&P(-aiy&t zQ_l9&vb2gXQXSt;Z5f!w+zW3EO-2SK9Oct=kUSef_KiDF*mG*kh67swJ4)MWY|Lnd zCI@(?AB{h@D*ATs$cm+h?`EAVO?}o`x>UPOgh!i*?f$tN*S38n`a`-Pb6U%FT12^IA($R3@7IiT2% z>j*ak2zUHVI8|u z`v&(z#!+LE6dUk+@GjU2cOMf^J~;?99jYC+o@SBNpQ{=R--vROA1`t=&)S?-2Ricx zji0S;H{K{fPN%6-{TDQu897PyY?6y>&6M6}v%&vp{f03%3XV*Ib*7yDm|iT2(|GkB zGuel@H)xO+dJZ@aD8IGq&~7((!R3!*iZ;v?!y8Blpmyc&VvZl|MB1?Ug2nDOV@Hg0 zn2>E|;J8v@RbhpY)sr;qA5z|h(+Pk!FAa-W?T~2VaD_?)zwS^Vwg}%O3bMI1Yytp6ev$NrALjU&ZIp_1s9lx5pZm#V0?(>Wa)l#;}Jo>|cGed=>*b@Z$Ovo0iE{`Tn+wUQw69>m4pai|hwCXOm z^C+9oQKcgziqO&fJ;dpz4r3ttSxQ z_ffHi0wcKed78R@N>a1mEk9HSUN-5&+F@i@!X|fYM!W*_M=W<#Y_1lmei+?-DK05J z39^@v`v+R4*z6TB0hcm*+I)`Zi!+S zcH*4DD0qK#`bfnfda1VjR%@>}YFF~L6V-qR-E|?3XUbs$#)0wKdO))`rEj9wms;1| zxstCuDh!fdr02$$tiO*jsN4M%Ivhk}ER0$61hhk%&pdx)TT=X;^vxF5)d3yq0z zheobN=U$LI_Ck>MXXx>ITl?ZnP+eCSRrDwfEGeD5K@SMq%o6z_atzvSM@xKqq||v$ zQ@1F?cMGLeJ0Glke~WFOB6slcuO9tR<&GQLBjZz$tHvYkxIQrm5{7c)1y z7h{yEXTfowbu^t1OFV}RDBj#7*`b4@qr>k;!S_a~eVwz8$MNhZXITn~?D)j7?cI*+ zAD15_e;)lc=hG4-C?m2->e#x`aR;Nrq5P0Knb;I-E4a365B&RaGDQ>i=u1Tqx;CYG zoW|_<&Tgh(EHDa_^(rSKqc_fpJ=BManxd%UXQNKel< zatVVb$qEL0brU<9FbmIComamn;6AtP4`+*T(9}$231$_Woz;^5Aivk^QNdHMP!4*| z*@E382b3$z*R!?zXqPS)^MRxuubFjADl(3CVu>!iR#OO@KGP!RMBl%*GadN)<>1>H zR>VP}h_1L)Z7*7{h;>COR!f)sypv~!p{$^ zEpZZ2s-^HN%$fxJuuXFG6zJ|#btg`{c4g(bt+mNi$!M;q1x01K$-EDt@(gYV@O1S- z{PC|LaitLQP_h@aB=n3EfWhT1DK+FgNl$~&aObiFF)2v>J* zQRCBPUC>9e{YADJy|ks3 zDQ3G1n)9AHL7w5pT%S=pOYB_(bL7@=pT=)b+T3k3dP3PBhrdOP|BWxi4FqzhTKUBY zDk&=6UJLqre%;|R%*dg=DPT%SNSLR8n%Ax325;M9KMx9V*a~F^!V&b&=PQm5Goze$ zVFd)5lH1iq!!Ev^o>wwfs>J0pCuYJ=)y!9*5mL_= zFBj^wvspQ&^2@OZI9Cw}jBaQ^ssCd5cRuuqZHbd|(8H(QtfuTB#aYD1d!DvyX$(en zl6T(p%7kw@Q}1wTj+7T^+iNZ9(W1oF_P))zp%#49&zUBw@MNOU1i1rcgidL`S~Vg_-eI3>gpz z2Wp9GZ|ZYu$11t#oG+q5vgLq!N4vq)1~aCP?@}1cF(rOGi!{uL#SK%hmkQoNG0%V4 z!68~sU6kFbrtz4U4sNR=JB=@G!_Da$jZu|4O(-hR=4Wy2(8{S+LL;0`$Z`y>UM%-p zJ!7$5pkMjk*~oSqF7mSEujj7h*8)O%`}+h1vUybDUbdo>Mqg4>%igY6N=ZM7sYde1 z7Rr6Wm58T_^eRg1LaPHl7O9sFLoG|i5-RcrQDKN9lY6n)d7D0tg?5|fvesa5h?vrd zimjPKTHIT3z^)&n5C~{!Ad_2{z>0ShN!6oHO;#gaVekFHGg;mHj5QtHh!7QYZ@y;f zP(TBhC40V7>#i4l=;iJj!P;)PHq-T?)O>J8;b5-tNt4q%V@inbQG*Jm0qK~Iy14Vy zE266hQ=7h58y-1U0!T4mJ0T!SKPI>MpCN4S@6INf!TV9cEXJzl@FsscHd>4Bq%z(P z6fP^5+a|LI;8zw2(8<^)H`=^|t4-JMY8l--aNH)6^qYVC+vvdm ztL2slEr*mXLu_4n^x}f)4RwM5;XgXMV|A6E7Y(%U!>63{^(~BoCoubBhuBCQ{-aQ0 z?Mqw~~Uj@%* z{cPZ6{?Gs10e4)LW@x3ki`^;Dxid*GG8UB+znz6N{q|tgEY>PAd7E4Q2mdes{sT{8 z`B(Sy7Pcq#y_Wc@T*s~Vk?koVVRkthNoqW~+OfT^QA%|LQ;i6Zjs&q!&Vq%G5X&|a zotbY!Rs$2xU6M$r_#w^%Pq>EFRq9<;DIM+Gb&Pfd&*9F)`qPbi`_Y37ynOygAd_6c zqTMwN-tA3mA|)Sj3;Toc%~oJ zQx!j`8yJS6J1#Myqq(C57aPCC^3zth5*h4)T^ygG7ls`63nbM4Jy>igX*|aOV)L`( zxb;27Zu@QOLXg+Od^ZQmD474{$X(U5oMMGzJmioKhih}DRt>>HB_TiaR=n$9%aOl6wj`n z=(obvDop+0YWX)hbp_kE@fMAOx$0R^*EgAJZWw(P%Iw)|AXqweF21`$1dvEitZ)pj zn&ix7o&7Nr)LOH2EV8>(yBC?1k&^Fdb&)(lxSC4m-)SnA%5I=w>^|B)tE*KH81Xa9 zlvxiS1d$b;)6!N{`T_r8&RqC4(e0s|t|fLkzsol+5L&)eqh=;^ECj5urJw$%P>!Db zN%5rmU^Gx?+{JoU!_T8u5 zR<$hD1iWHBe40H{ct!&r*UZQs#ivslvbx)cfxh!;lR3wJZq}(?u@37dm9@EL$LE7% z@gr^9OHEp5_2l^R^Z9pcV5)V+5^aSx{G15pk74p~8RvU$HimI~2Y{T%(lTkA0Ca

%)QR7|RR621r?&cLKKg#L&AI^VfMQy1At#jO+naMF7p5W#d8s>7Xj^NbPUf2>&kD z%Xb}r_PXF{|LUFW7llqI0~Ns$P#5mp*rg7 z2dJ}<9j%89QcvH@PbxdhY-bsrOt?e0jqrwPgQC3kW&GLtUbACvol_gHnmgrH8V2)` zzc#6|Ogt+GX3gRc7Bg{yTh2l;yHN8Un}i)h<=ln1bFt{83^UStpy3E-bzp^s-5|aV zoQ^M*#m8%~j9;30IjH9V8#=N@H#D=Z8~AXZgYUaUY2(D+Or2xVf;#@Sxz?lRubNLb z=5Z%1l1g^=_(G6$&e(m1x_kY_dWTMn07Q)mddLVV@C@WU;U+trph`U}M^EtBid+cM zCreHqaT#H+2=jNgU^G1F)c9-}_tv#h32O|hRTvFWIiHXQta!>*I^@4IW6ZDL8nJ@w z_@a^z8Xdgc66OF)JT$}0G(Yw7l{o{})srjB7y>4{1?2kY3e0IG({>~dFlB5iRc-sr zwby7`+#`m@1pkfaN{ZOA7*8+7?UQkrx6=$Yb&RUylIDC9gfxaOMoYZhBP=GZfDw1#8R65GEhLob((%U2WwO@5 zoRDLECL%n4Yqn&h3NJEY5JL}+P1bW>#1NDG%!z>~UB13C+xxo_seT{$A{Ck(Mp0m9Ru-2`b6eN-2FLd=&u#jMq+Jqg5di`Y&&2w%mEn+O#R&C+;)RD2{Wt2?)AT~hi$oKt{Fyk;nLbSytcc^_jRw8g%>O&7O_ zbWIe=NV@T=1?Y*0uTUni&4Ho>Q<1JsP-Z_G^%6hM8PjYHPs%w?vY8-(Gja?AP7{DD z64qfWKYcG7`qzZ}ACyadwClY|-$oYtMHxq_W6h$1dq~%A>1$G}M_O3X7E@7nwY9a% zbezSMVCt^k(-GD3B(UJ}vxL?FPM==AoLQ5m zI?JA9w0ODwpZ|lq{-6EnoAAhq2~Yx3ysty$Zf9GLBVs%nok6O!J20c?hZ9lpmAKp- zUp>*-xLju)Rfj8T?XLMw?Ii32J8)|=Ml^#NW-8m5fv;bJ3##tI z-cG_N;Fi-#+`5R@%wRiLx~x8`eb*&t^o~eLRbe_x!itk` zFp&YN#cUD7gkxGM$2>iN8S}k7><|vib+r7%79+CwD?t0EC8--kq+9Fb#D79 zmC64pP`DxJwC$0V0_N6^J+NAt)BO&XKqt-k^XxE4sKy(wfYdyb+LB$PhrL$SlICE= zeV9feG|Rg&FuPq`Y#cz5y~WGAsk4Q7Szo(-l-5g3XJOsOH7y;taCnpRJhVCrT+IwE zQXJX8@kx7C*{Y^%6PaMwvsMK3Y2xXA{LhNdbKOE+tP9%LOxd zJOG7qog+CrUajOL>t66L>v3-9hL;z!qj&eR)b_HBnwa%_SNv2}DN!@X)~>=IpQRrb zP8_zicQ-d3{5TVM?%lXOCK}^ah&V%uZAwz(^T{XjhgI9)-;NbOCFsPggm{KUzhO4G zd!RhoUu#h6p@EOFFUhAJY=ikTbChq%hu=jNtk#8?< zCh2a|9HyxPaSE+yD09dzhvwFRK&%=Y*EX(p*vDHIw~R4CJrV)u6^}nB2H;k(RQ>!I zuf98qr!iV%h%Dqu*jGM2=5JP+;d87woC0i_{adS>PEu=yUAj@CSKTOq#Y+Rh2TvU+ zmnJ@5Sxa3=V3<+9@==LBHsEnTM&D2>Gst8eKGGldqd5FMx8rY`b=~=Zse}9>NwGRI zzNlVff9ytk&}`C!T^5LlZy&nN(}s51Nl3iE-))m0$qhtKP+9CK<6cCFtZckY141n} zKl-?g;DZJaM_i%Mdjx8CK(OxG&`t1};mUEe7C0_0x)!%UN=X?(jr+5`TH0JCG<~4! zKK-*6ZK`%wNr!LVnw->mdWO$VuY>`ars{Tdu-a|;JKQ5x8wFdTEWN!7q}w?tF!u5_ zydP|XJQ%!?si(q#3$CWD9P;}bdiB8v4#W#SS+DKb^5C@79xhL~m6epN8+Fu7vSsOD zpOxONEXbH%rJ?n{Rfog;cTbu&HM&LA87fBB*+MA1{{k`VlwfaP6#9K(DEep^J3O$6 zWp?*2qXgdWA2b_wI93k!o2qMJgtQN{-5e!cOCff*Adm#NF1qO_UOb6fw=~j@OU@(5 zSniN!Rs{79k44)Ps7!Wd1O1D#Es|RSP%2JaV4J{fKE*Uym$ujHMIJy74DzX`gQQ0% zrEd~Tjs2#eGXI3nEl!>37FF<96iWkP#|6o+5$fgl)U20=EVGfmiW1gJQskem_q{%2 zDIHT~Vdb3mtJ=;XkTAjgW>W=gQx&HDa$UXsg{iT^x$PNl?ypo|cZO+u$Z;U|TIsVA zrINXunEFrJ+3GDr8Ht}>K={7xV1xb9;!D$%QunWXMt3wEmagQ40?D{W%vnJ1inlAI8r(q-U@%7+6#nt?Mu1AK- ze|XvfZ>eLU=jB~CCC1AGv#6-ae5HRyV;W;r?Enz})GX!8kwYGA%hv`X-y||nvK@0z zX3lD>>~>4rjw2bTXzJ8`SDq-{KFxr~5V6-g)}Wq8g~qpYZNha{3ZmB(=OGtZ@S)PW z60WJZ`m?|QuH4Rwd2w?%vR|2h8I`Q419>ElKZaD<1n)W8&_WR#RK1+?%C~_ zDMvi*f?CAtO25T-#fCwIwWPr=(ynaw&1izlM~MSuuzeyNr_z4D63p%q)(g+Fs@+UI z7V*i1jSMZQQ0)?z#ESbpOVA6=lvEs!bHCfqeq*IT3E&mFZSDGYsPNqqQ6*kIt>~;Y zBqR370tDG3tm;EkV&WWdE4h*_@nMW6xEz;guud`Vo^7HyK`EV&?na_s+nwK}I!Jps zy@$rmhGWy0U8LlmFa9GUv0fPUu@8JPaWZsCvgIS~w0gG>y;9ENNiT}}oz|0~g3eh< zvrCP=>jHXhM?$C=Y=NnFW8q<)#Hsk^lvKN?Ty;a|sU|8#s7i!Le)46rLgb?3SH7^k zGv*JcuPhVHL#bv|Q;f?|(#7+w1eNzuzen@`>Fu#*-MuPh1KFn@&F|$>udVi@lIQjl z3>>fS1rOztTH;-8&&0-V&?|Zvrv}#IC8Hip$TUM=jv`f+J0kMpfr_B0#cN{DG*h^7 zUA^3E?1u>!os6>s>6Y0zP(}ozl_#EShm7iu#8n@lZ0M9IEU`q}9c@4eS%Y7{AQ=Dc zA5;ohDE&1s;1D6$?Nzw^ZZ`aspr^9DuyJNnd>%Y~?pVK^x{^!H+TneB<9d%uXhqjL zZ-6zkU-qTvLwsVTX%)ZsBFazh*94w4I!U`0r2mf9SB}8rQi5SKvV#EWF}*61Tvcd% zk0%rJ5wj(kAotv&v!mxb$);lKbE=2D$!7#0M_YLwJ7j_U`5ItrG;*wmEp=UJrD16bki zTu*IC4@?i7o`8s5Ev$NC@;&80vhn`CnttPzv?3Lmd+Nh#=7GTH!leyl&#O!ya}JKL zwmoAQp39!s&K$WJMs0uP(;z6Dq%UJg|NQr#|8E>zZNU}a_L}8r>`C>%aW0v0qye4b z8;(82hOM~$ci*(rDH8t3v!X5d;Fkhd=Z{e}#y~ScT7HJ9>_m`d0I?LBrIAaWQ5oqi zC>*g;Bt%wNLV?Fq=Kcx-*fD^#!uqMoL6bQ0!-tu86U_(Z9i7ANQo-i4EI-9o3rTc! zHa5+uTB{*jJJbrQ0+4t-g>#NPX)M~T_UqFbHoZfEwX9m9l(*x&06A_$mo>$Hu+20I z3^Wg!=;x6ZtYNM_OKat}&w35QkBzL5_x*N)Hs@?W3E4i|x2u7WJub6SPWIATe;o$Q zj14b77x!m}vCPlyu2W$#JD_bxW(8?t#DhamCbbd<8O<%=k>|ax`3I-@X)dEr-T>{5 zmOg5sUJASH#iXVN_|m8$0p$Gj^-prW=kgs~QhulZ(978ahjSHq`H0Z8j}Dg=)o}am z#}IqvZ8DsDhZT6LpbOqh=scGg*u#Jr7X;yttajfO5g zz}#gx=n#pRA=nNDmP+30HNj#_LP@{Lk*=cut5FcSGhtvqmn^#p;(E zrp#-9AIebQ0ri=cjAbJ_W<6*V{w4W%zvl6VNovwV-7LVHSI=jO1vu-gx(|ZGY|Jr2 zu=7u`qZN=niGb%r0?`LH^nJadhNPg#7z}onluVyHNUR9Z4`YDh;yOFULY~3&UOKsT zru2X-f7(FhZlF=0kISv8NNCu0MzmiC&CqdTceHxf&wd8-C~MJi$8PpmpZzW>%9w67 zJXpdRyohzkdcm_I#~b~Pjjex3$1ElryjD31-T`d}p6&_5s)^@w`i6z{y#*?8s-Yy7-R`Z6K2V$7%L@%X4xbD;Oobj#EvT|9w&F*z76n^7X zhPon-81p8d9Dxhxgt7{Mc4Ia_(&~&i@VXG<;S(&qlGZlk!oaW@%aDCp(cQ&B#~Sv- z<+7q(W28zgMv`ed&#=z!qEdp}s9>Q7kDeVmzy$SH&9={)$Yz~aLp>fIg0A&$g`vg6 zU+sJ^?ucDjTQS9VIOWx@fw++8Wd zV5B%ZCYXYGr=uv@U#L+3R$f1UAbkwJwv?rK&w%a(TlPflL@QPY$KCvMGtNwLB^?>7 z;foNOBLVGZkujxsNqtqun0k3ct4&q9$m%s16g%c+nZG@vGTQ=>wJ=R_S83#N0b1|< zoevQ9k4rtm@~JZlkdYj9z?}VZHMY@3t!OGi)g>3{>lyz>W{x<6n>uW~tj~(lJXNzw z5R5!67?q7j_l(HIx&f#llP(cn zNur|K1UG85FJv)|)O{cuSwSlzJ1wnjT*6|Y|K<j}sa6r1k_u8;FF{{?nw@ymnFu48GTyNB+5o1uCZ^K>yO{4w*c(rPU zIUgQ7y?XL$!ZTs>E8kthSH2%lUYytPHcHXKr+rB~f1RJ?f!<$FBnf@x%PyZS&z&nO zTY)`22&7)T9y-uJys9tY!q_#jBM#4e+&yRDGHg;P$0ajKZ3#-Ao(6Y$ULM1Zgb|Kd zw2vxx=C-oRcu$z_N@mWGj=tzhgQMkjn@?`JDDd6Z6<3I`xA~#AaquhO8*kF-0A-j*O?6cMs!w2Bv3AFFs&+OnNI7pn zqu;EcP^|jss`es`G0G9U`=aF^@&W0o>&vyGwdxPU&r_^M4R6hPdipAgh8FGPI==Fa z-HDBiCR(b*x?u3iOXZ57$n}MNe+1&Yp&D|4Z10NdO=Z!2^6kUJu*~JYMCXrGNP=W| zJAVajWdEcHO|0lM+~bcwd&g>7<9BjTUQeMu z`GeIB&Ya_d#v?Z-%Jpv9fVHdP!6#;bWI7KI*@Y%H`EBMofXj~itz#H^<1S~wJAy%@@_af33RC);NDRFJLFaO#yn$Q?9>~5A8 z=Lriyy9`DnghX=C(RQDbyUpmM@j5OE4RIR#k;kB~eCqpk(`;XVQO^;{n`LSfilZHo z(SFJ0vr_MS-kP06rS$||n+Z<)L^l=H&~(L)44Klxrvz)}Z-}DOD;4!7zH2mPJ})JuOY&yo$qJ8lCgCRaI(s z&*N^TRQ)gtKM_zLWT7s(Oki}Gg^o=w#NMonXOi__+=7=C`)5he##5K5(5{4n{gB-s zb!&uWwxY7-bmVKKs%A09VOokp`nS|#tECr>m-4GN&VHOZ&1mmpD&qzPMLt5+;DQ1{ zDvdFxmI8m<|KjYur-K&t!u@s3S zrg|D&CxOY27xC#DaV_5Iw|J_SC8F&3VE@l-_+nhWTS$aFqkPkGNSY_MaMXYVT8ENL zty^@4Dv2;&u=~BSr>^vGT0_qNm1*?9caFbFB#>n_xC8EKi`(k{qi;u~`x~e_<>yA9c3a_}=onf}lQm#fb4@@rKRN*g>^+BTG7Pso+HR5tQj=rDBrC#1E9+5fdyq7Ch!xZ=4PPEfH|%(R_~+ z&n5WmHCFjYeAAcVAWr=CIj`~Q@@}b09mj-XCA&VLw&_>CT8Eg{r)nsJ{qklC)VW47 z;42>{ku8(>m2X0|v-UYC@MtEljrZBLfNmFv#op6o2iYFym^8$h8C8kA7SLDw`I8;7 zXB`5K+-u9aXd2X#xW+nhks)xc$ouqmtD&gsyLcYdU%nb`Gzn8PKT@yrpSSWe9e0!W z5z|LLByJH&dVcG9;b^)4x*soxUG0jpraPQpD`>}Lmi-Qy`n-p_T~VJg)>p%rk1PG| zD6-_tz3B<;-8e4|>MP%}CvuhGHM{SkUw42UAUxwb{Hzx!hPdPZHcJd5{+p(72~yU{ zvnfA`eS5|HQ2l*>PZKy;W5=;?sdY9^YfMv|LU__QDJ|JEsI_`cT0Aj`BCvAUc z@19f8QJ`K;ft#yUM){Anj>JZ?wbb^|SqmaCRtC7)IP-am1To{IVJuoE)=ZZ8_iu}m<3O8w_`|p zxu7sar<>|fI==~u=APQ`k&|3*@Z9|y!aTZ;kd<@({E8+I@!?;0+pfNE9tP=k2Lbc@yx5rjyAoyf`y#9JWCRv`G?Jm*`jAt+6vn`3wD!Dp*MK6 zOLJqn<2ny`L~fq7MA{H8~ z&%&@;)VX?CWx^px-(!UzPq>a`)^xcdb1+N+H*ntzeYACnn=2F>tDUa7? zI%+oBRF0TIpD5Tw){#}`>*>3lYknHHSgoTjs%jCfIf$Enf2L;UXhXQ6+xzN{doife zq&lh$BXozdPZ~b1^`F=Y+;+VF{X}aPxFEh|)HcJN6J_cp<)ulu5-hCj(?VC_gZk%X3 z3?fXXWf%=Ve`fWSFDmpYg7EF1_X7y0tnkr;?a#>vIL=lwY6Sxe;(TUFEYoyh@_++& zFUaE78|;fl*!`tA0f`cqe%uzuF0Cc2&UY-j$&Acf)s14aLGEd-(|yR~5|{IX8edYd z-tecPyJA1xzQ)WtwSX*p7&T@SDOqFo@~9M~z%OJPsSoCndu#m}WM}m5AOH2Y{D0@H z$e8!JZ?kybOw0&6of)mNq|B0UPULLa?ZWy z=6>UzJKp=_E&GSGq&>Fw)S7ecwbm@pLsE&jmNKvPpyt-iCkGw|E8Nm=(4xa(#Ww(z zY#^7DOfW3&QDgt0vv=B@)VRoxEeZ6#?wZL7U0i6LU+??MYk!`}Jilo%o7?*VN=T5B z0$bkQG3(jlL53c-pTc zcEi4O9jSKl&vvM=+}ZhH6^gHmVpj#&epNY6)QGR^!dhcb&Dn}_$)_Uz-Be}5?FSii zQckn5^xhvD4w8D(MrH%p5!mA(vqsf-n2_xQK%Be#P@-iW%Y~uTVwr;s3UYhD@CYew zx{jVqtgZtAdBmTaNFt!On>t}VVGtdrcRr@2$U{=GV$;k!owfLGLz5E2;;fQG!wmC1 z(i}!nDE1?dh1XDtGTwW{sc=8{FGmMD=$&`&h07ld6}s7cgl^_XbLl2dr%nup0@mgN zpODw;a{3afEy?bW7AyeT$C4Qof$VH7FM~F^yF^BShvL$=A@9r1+M1Uc&N+EGt%zl` z);&d$>~RxsIWZaA_uUpHo{@IRxLL$6 zOg+SABM14qM5~q<^|3gkufMjzrx~myoQjq&pG7owin^!(4Kq_3VzOcYbDmX@c+aE( zTicZ)U;}crhFugXYnY|pd^x?fe(7id9m4rs`kp!`@$7K6F5_9WA5;AtT`5Wr@p<_J zMl*^jxQ*?z$cXvJ*P2fhYvz{Y5E5+~q+ve%hjbUDTU%Pi+zCdp%-#HUx1Gw^ghHD0 zk#i82zU!o1bSoyS{q3c<$mo!z*~G11|1s@;UcMT%pcyktt6t00-U>Y80aepKR}^y^ z83%n8s=9OJvde)(%*wUf>RODlS1|ypPJD-6Y~0Myhv(^o|Auawi9!tg%!-Y>ypxDj zpOZw(6{~6}Hm&;m8rQg(6yu8|ManlC5$CaYFOBZ)ET0C38mWcgDr}FTSzS9ZV%`8+ z3P9?GS8#zW=H&a^q{c82v^qSO0Fx;kcg0~XR)Y+%uvEX5pgbm-5OyDj9W8}iR2rs_ z;YUdhtPx3sbvRI2Rn^Ei?}b)i^S+i#O}U!$IJQqQm0}2Xms$#>UZK_K5iY-F|x9k$_IDiEEtWAU*%|h}Y~gJ-wgav3%QL zovy$Cxu}?WSkZaAQ|Hde=;3z;nCZG1XURkKo4$nwW@v99v|LulNdDLK+Ktu0-4%LF zDd$dlYX{O9AVJZ@0q;F~&6&QL`#B=+M-eUCCZ@%K=!_;~ z6VS(>LxDM(<3}F!13ykHpp!FOIXg?#H7oRvi631>$@Vfh5G~$oFR>}R@K)VDhagAu zRDz=_h!<4Lu6R+NZ=+thz1`kBU&xQOWpSWck=K<|Nyi~Y{F^0C#tz0m-(#@#99yR|-=1sOLsU>MewfT6&vh9VG z6uj_#4rmv>;7F(}R1PW@bj)m8<*jCd6@~j(2pb))VHs@U6}7VatliNcPpB0vXb~ z2+gcHzS@)F6D_^m-R#j1@gx+3)mG*|=NEzr~^va$L8CZoGLBb==+aqeiKRzcd)nmq!sOdkc9KW`{ zII!#PETvS?Gt~V_`{OB*M0}x;zU)C3YC6hBEldG-*ZHB23zuCbx3UPTE^fi)H!nVY z89q-O15EP$V_|M)GH z=2%Y3?y#UfNL*E4nOOU)mRv|^Eb>w&l)?;q@uZFyVi@VQ=E7`Y@jI{85h|o%StDy0 z*+SRT9jtj>(cac_bm?-+(`QDo4BSyOiD=cOi8`+U$zG3cy4nMsEvB{u>M} zl5(HgeC9`nUH{^7DU8Ysraz2-@q_xG`}4nU3nf=zU5U$GZ2OFX1>P1vu&SrECGa~3 z2E*gHr3y&-2D=7%KeZX;lRYs0uviAj<1($@wll-pl|GVgXq+Jh`QFv$@qU zO$7;670DPdts=@FmleTCLzmvVP;L1RVR9rY{1LifW0t9GCQKXpA|q>l&gkth`Ub7;Rm@xwr#*{t<=F`!|;?w zV@>EQU6T{Lv3>X1ee0YgRCe;T*xhxBl$b0)*d>-& zU>Mz>qqti8`xTl5L>{#-6+U}}Bi~EvAuCpxtsNCd5TLnSHYKCHLko2|PM7FeUP6k2 zWb9I$sYLcUyfgN11xdjAC)C|j=TVQ&hxR1VQ!ewgAvY81*6`MH?a8Vtr_b%qfFUj2 zrw!rmp_bf?JyF3eCueT^OHxMB0*xBcvZW#YMtR3GB7Prt`k!o1kO8RFBlJjx51Xp> zvh!}^rm^4LPCu|weQ}}p<5>zR?7BgY2v4VZA1*jZwMt5yo71VW7T=*i_(Bl;Hm&2q z#P})88@Rb`SGqb+HJT?~DB*W)Uv-%MNfCZN!02>2_VMh# zAQxQzs=-o?O?g&ok*j?PRzB~>4K*( zThn@ezoN9FJnvvG8G>U}bFr4}_)ScJ_w28=(gzz$XH#~VTXu$K>*};SXI#I~dN6cm zi>1*=Us#BgV<2!8!F3P$#7NH2E^u#%H2{5e+D$#Nm0(v~0EhOwNJi(T&M>B@VR|F9>V)9gf}X_sC8rV0P2HG!kIssk(RG``zmm1W6}+!fjr&(Dj!P zE53c>P#8DZ_xlyg$RfsB41LMqK6eXWcz^X0*2wewmC(0L)26wxOmppv&$_^~>I)mC zk;{kDs=r?e2;JRYZa=BvJ*p2g`X-OzUnsN}% zQb}j1QTR4Qrjr6~=!Elz%nY(!K|-&++MIH~N8C6dW1)TiP&^872978;T&Pn?)iuzW z&x_cOZFn5lx@CIaUQKI8A z#iU1cghT^O(D_`?am@H92YyAfupgy|IXUEg+e2EiC7<+#m`@FlPY&%jBe*8eQAiXbUH50e`No zr;p4xXTtE~+!+xlW06(3!85NO)DcZCBAv@cvH46b1?3u2MuFt#j;+}QlaDnP$7Q0e zEpLvaE7>kyWruV6Be=Ik-G~4g&iv4{8tqQ<^9jK$J4|hI!a_dCDIJ^-3YX(^$yhXs zZX3wjHr>zDLf0`-Q#G4A_o*tM0cy4lctN@iwqlZ}x%t9>1AV;mNrRpaX)3ufsUvR2 z1tNXh<2_vmjE}4DOi_ub4#{(MQDft3T(U=7XxqAVGz6CyDED;}I)UH;b64$hi;%WO zaCP&V=va|Aj=RjzS|8nKa(;-oM65cOV10|`5=i61I-|FJ;G3S?Y>x`|yR*#58BN9vO~|j7EA2P_SMF@67bA(`Pu7@rO{z za9`kssl3qU$BC{f{OZj1sTC3icV-Rvs7MIDm|oWPTT1@=j#Sz&|MkT6r*Cg);F?Hi z&HF8QL9Qn;qN?cnP49NcTAfBG{wTYgNv4NVeU`vFO0fYLWr+$-(~x|`z^;|1*6_R5 z)dVXTR5Dbq;dyA+XPP}EI|@&NxWsEp>nO8eojSLa%$Y$wxJKNXtPUw%DMvF+LHQIH8mRTNkHe&2C?6QG? zGaYUqT%19Bm>P_N`3EMN)+ckgf?J#lzIcFJw(2c{tV0FUWHt78L!u>?tUHFRY=sO( zhxEXWbNj|l6O^*_?*Z)%5SHmmMZzG~xiE2}egmviXTnYEG|~AyAz{S55n@s-E9ac` zvH0VkH21&W{A9XovEjZbE)&J4#$2f1SDR;e?qCF(9Ok&hJ`20w)$4wP{Kno;57sM8 zA1-YaVMqI%JXI62L0EP{S$RR8B7=enV1}K5%)hlQaYlqH~6b5y-x86w@S|2d(VCR1vsJ8 z$hG!~jgy<5Es&OhVz>Gv3;zIBZf8|^pS9MHIz@&^;ny^i z&*N?`l27_hN2Fe>mdpI9vp&gS-Zx>jW!)y-UDK1H%|c)!oR}}WcI`ElOHMFK<5e?% zu*7ZN4Rwm7Hje6u$5z33zD2TM%(+Rp?5USYySX&A=thz+0cfZ0TO`!k_W9=wH#TE| zsW~Mx-O20P-xxfL%+l;9vIWhjZ3+uZq2bdiAos8AfB7%_0*F!f*^Tb$_P1!@Y2Uht zm#BCfGt!j561a|XZKvTDOMY&0DH-Uqw z%b$Euxq;00l(fPJh(X21Xv!cApsxMWDlEJ0I0x+$cKa}?BvS~Ch3ArEEE26^P=c|; z0HdE`meD77renDr^ITWd9_{xlc!@m9?1A|XiWU3y8UFVxD}U6NceunJviHN=E)xuI zpQRe??ln#uP+=29=6e>o5%gnhk8_1>6$KV_cpfv9b|G81EUT1S3%tMI=z&|;Z`M%e z^lghp1g3O87$dvxLe|DcYQVgO>rWWy_CIm0kxUg_UJBB01|Gf zh=6USR=)QzU9&u~r5S?*pNnl(kcKR{G~j~Io6tw3K;q>hK7}wTKk@Nnq~E#Sp5Yfq zlKTlAMLeS8jIiZX{!z~I3OqK)@R92#+<6SfD@-pF9{U)d@bPDi*R9zCGG+U-U*8kw zCX;)yXZ^^~>0sIyBu2>!Zme&&7=P!Qjm9J;*RLxd2oqZs*l#~P`RU~8v>W9SQ8ec! zrl9kug3Z=W>YAqxB-<4iuvIOoD4eh%Wh-3WTD3JQ4!n~zwb0tSO8GW>;>wjz!b7uk zqR&-jes)qbrCGipyo8NcCa2y7-qBLTrc`V-n5x_Ydq`qfGiN0mjo!yCs&<@0rlVXh zBhNe}L~FYu&EgW1zrAW7I)y@_)mOjS(435=Q7vL`dl*&*YSf`qaVF@jXWRgl-TQ>X zFB#-@=R9z5Jm_NO-85`lRY)ZJG*;+Vy+(~S^vOcly`78g1d(w~5=Dbh0=x$tzNB|P zS{FeaHrQWlkG*N_Z7>UWw`bBCpVfUW_T_&$vi|(#CqWx8!+dryp`$8o%4*D?g4{_s z<*WBzzG)&M%S_cUy|zQ>j7qFSLcXF!fq2(-|50$a6NRboGxl`Gn*v`|SD)KRAs5C5 zhZdwMg^N!hXuf`-~W()PF|krMVY?(aD0e$z*o3{FUq_{&`kA^ zt=rE@h&<7RW2@{*Wu--QNwqGhbQ{4Nu0FMtv8SoJsWPa7vPtLY7}igyvPo}`Lx}a8 zfrMz`?z&JWqBi9wyed%3vQKfSg9JLT=r+^h*csnp*FQ#RPg@B(oAX=Gy*vh7{{49Esl(NnTit}gIZ07@y^W|nlGV42RT+Vt=uWT*RZE59RpVI~?k7e=W$F?7FspaC9_nEn7Tf~e4po#8nRnkJKy2YIL_~MU_|M>OhpMM~6Uum|>nC)0zEhH>P`$Q(r$7`P72m zvXvIr(^IU-m{DG;{M%!-Y}&c9&C%_Qr}P&6;5~*r(=d0w@J4Nr>R2_Xj>|nW_IJs_ zTo9(rX~Z^Kx8i0%)R0M8bcH1!uYss&h3($72CM(bF{U{p_DD+QMY&^Vk__yE37oo} zkIwC>VKu>RL4ED1UmiphNaz?_4ZeClhe^Sb8yi}N7}liBOHFG(z@osQqs16H*p>Ja z$8V6e681~{+j03wdXO=D*R&qrrh5d*!kdRMw=>l}dLuWt-G;hyl1vOv`=1m9p3USQ zm-Ho`zjIeV))Kn~G}BzV)GEoXtXxtPa(XdR)tz*bwtM2=9m?Fu0$z~b8m;L7RJYhg zu8d9`&a9v#{@+!@n0*b*j{W%ZwHskZ>mfr(r*lqgR5zJAW6{CR2$xoC2|rf7Tf0v z;EHR1l`ELEhCCZ|+=XrAl+6TZf-W1rkKU%{;7CW&4}`?0{vn5E+oIkgjyb=_!``mZ zxV+UAQ)_DIeWoMN23aF5Dp;lqY==@TCweUC0m6p;e&)#MiRBv(Yw#y8nE34c%Wj3D zm?fMY{YIdPiNkzHiZq9`>f8ktBd;z>z}-jL1yWi5Q&d=Oy{5o%f52^GJptxHdiJmc z+*8JTTLkPKk{O;XR-D*`U%t7d3MgsY6rgg!i!~&b^zd?5)3+wu#XP85n<~eb<{RNH zUq1BwLuf*qTo~4C#+@cTGJ~vvllRxN7-NRF}3$~*2Ql^jO&+9o>3LQH{c)v;6`L>HU zcJV$wXgv5mHO7L#6IKPDs0EMKu5Go3G6fi&clbRru#`4QTyce1_gS z9DJr)hgE9@v%FxiBkb^-UYCz;=!T7o=9WS|-$rItLS|>io`GA0D#Iyl4%vJJ3$A7={=}-%0b_+IwZ0LQEW$@T4n^K;F^cr3I6# z6=$lK+j^_#>*JcsRs0AznhU$Uunpj=RK7j}NhbW;ncaPcT z%S_P<_f4tyBkIpFPyVGP{O>+-7m>sQu$fk)M?CL)+xWB6ZZOQBO#WIR_9+&gPgM(j zL@_}Nw?hWLyd@5liOuPC_f|`9U6*@R2x(*HXm_|QNA^lh0|j;Zs&6>_A?qgr91+#{ zcT0O=LYPdK26*_##CdJ>;>Qpp6(4F6pnQLh{&1qPDE7fYd)wLb z1{RVySrgY7fh!;79eRWfbVrwyQx*5aJ=2DKz4ip~X5@ecOEZEkc-0#jU)i2nhqhV9 zWOb3qB|C$Kg+QK_HfYk=H|%ylaqZoR8eQf}f@eTrC_OvLRgdjSByx5cwJ3ibtf!T! zt!=o%6LmHP%uYnd$EVmC1-5lqQyRPb!Sp;hvv#nWuQU9X>|aC`pKyA;cGFxtAik~~ zW_5S!nROyr6HgkzS>zk_Ljs&V3P0O9E@w$)`S>VLG{>TJvC9zwv*I&GpV~=|RwSh) z{mh)n=3u-Xex(}x^Ra*Z;{2EMo>*Q6B(wrEJ@LeaI?BuuD(Kmpd5G_Nw79H<06vak z-Ywks|H$0Aa%C8mmy-FsK6*P;FV;KZ$4w`Z65gw}RX3ac+ny&Ia|9Fn$Bvws3w0yH zuAlC=Tuu*)v$O1aJBBg@xIl)!uV(gZPlP9RfCX2jm|y*&p{pK-&X=wzJwm4U5^LBJ z&g>5^3P1G?H4UFgZntO;mOE~cTdQay_#%m0gVT%KbDMV%c6wS}d|&r30CHcFdYn~x z3m&8+maFl}+tCk&dj%U)J%ju5Jf`{(An$|Kh`PbDG**;7CeT zmgc_cOB?@W(ybwYs2Sm&MpdIot;(%>#G64YVj^8udnoJKPIU4H+#FEmf9kw& zS@H|rc+p`>bvb>Sm=jvq>6{ixFxhF=1kAQZ_DsP^k+UvL4_ST%;_N*6F#oJNPg z*>MTfv9+Y&19Re=0L)np$?V>%*3YG$x+Y20sNZig20t-V$UcqhIp*xc`^}Wa8Yv~C zhThC=t&lDfZqImqzBA4vV?;K*f0wPV6H55FAolUf6+yxMt4&ptcRqePHG5J`G5}2{ zp%7b9DEBHf9)Fh7yy`p5srfE%`XjZF}bmhEoAsObBX?Z3Y=MQk|-jE9f-W!la8QMV6 zSuX{4sEHo+i_1riZf#8RuRmetiiy)Fu7fr@1=7$vah4E`;6O498u%p5R^H*PNp0k0 zDcnwq>zw9|w$VIfLa7+Pij4`{Vs^j?EOc|I(Jv?Xu8Qm|q*asaqn9(_Tm2r+_Q8`= zpmU@tUHv`HJf(d3Lb%bTg_YU9W59e{&-C1{>D)=VnbeBRgD>e--BkdDm~sG$D`8{M z6b-ahI6_rp+1-9M;qg!-t*Q3h!g0JEqm@AKh-7HP7mDmfmvC+DD0>ZPS%cI($ixHx z40jg`6c({He2|@eSmG@w+D&H#PdIPvMa*R&7h7|x1l&Ihs@HgcZS_AKHsDj`u1awZ zqXh*pEH`U2J*zrgrle+}JseGMVIQ#>m*FEbWTVoSg!T`hQd zT>Gx-p*(waV%e(cQp9oi^1!%e@N{}J&u|o3^gM14k^`{2@70o~Jvl*>x}Q|8S>0Bo z@awOg+#p0&69dj$;R$3Eu1KU7aI~qenZ$P4QRnzMyaH7M@~w@`<{ty#|LWoD_M(6D z+b-l)#%!^?4Ho?41>Qi^g(*CW} zjA92fNtHMBu{HeYlLaoln;#!_s>r8v`Y0Nx_;z1*`#SK_L@{?fA!W_!G?hHm&gr3t5X^)z3k?P$Tst!ph7cRO}hBRO< zFqy5xyYk#!-HcIMAEZ-VHc>jsNmJ_w z_bID049!nSgWPT7Xf9gcB051BC@#sZa&WjhDv_y@jj`GKF&%}J&$;uYUR93LIOPHT zZPrWK0};J2NB5WEr8#gM<3+Atxr2qfPpEF1slKmVss`~3<|=%$TruE7Q|D+53l#;gVh4TTdcB3i$oe;aHW?>@C2By85*?I+vVULqXuG&wRxF4e;?cuz)f?#G}DlH?iEVg+TWF!saD z1+4%%{j94gy0kG)bp7jqTiEL(On%RV9&@ptl;Uv>Q1}|S1&n2OB|hApoj#pJMI6Bg z)Fzoyg7r^&U%mkqZux{X=zJa~y42ROY3@GgtRSe@-rd&u zy)CbC=`^x`b>~>ZTfS#cuKx0Og`@@CtWr9PQwVooSuhvvA=i}ISBd1jjrCNj@HT-@dO_zmps2%XY5e;4(?dpS*9s@AD7)360EEOC*+|N15% z$TG`|?xaSmExTB_W9qK!(`q{7kC4gOGOLY`$C`LlJ62JjGB+Dctw6b}V!vO3r?Twd zrVZ=cxjoJ5hG~hjvgQ_26nSj2vIcVm_zBJa-_fOYZNW=5`HL}S_|z6_k5kUqr&#S? z0@*`*)yPa>W%BacLy6m|>x^j-h_oBM5$yixI5Ww3-#@3}+@A^d^F3GZ8aKiWhR&vw z^@XAwNbD4UBMOiUk^4O=`>l!0crNAjTg!KglJ4Z%s~G$MmzxmM@^h6BZ_-Sky5u+ShGwQ(@QF3iRJVNXKg=U*jncS7v6Xkc74j>$#p<|yF`0V2pv`cRj9kV;s37tC+*$>=)aZm6#;YY7>h*;UM zoVAKl!AQ}I<@#~h#G2ii2aQjY8WWw#7Ef5drA>ms?Npa3TRU8+3(|3MbYAq`i#oZR zfju-W5yeZf1GT>{T$D>EpO+aLg3l(G&(--3SCxuV8MEi)ZnJb5gv%i{QFwj-aaPhz zQXs@mWF690%U#0p>mg*;Y5+Lx@}^>Yhs0^4>QXtUneh4^1KCD({Qc3N2q*TXHv0R8 zC`$_L(T+{K&)Ubal8ngk|IRM{Pn;8!^AIT-ZT5Ue^$X#%8&FYF0qq{xM37lk<&&SGA3BFh$vSVD|-(#!ow;Gw=&ITvVHhaNo9m{APl z7IfU&*~G|0HO+3mo|+g0b8B(TA^vqx{xpi`bNJ;{!kQe;^==PsUXbr-azbz5szd((-j`oTi}Hejr`>gc^uKg`ohrF{?s4x5(im zm$7J8WYjYEkGi$WCWjyNdrzKCM%>iTbVrbr(4oY!_tP$euRt4(#6o02U7f;$m*j9& z1c2AE`e*F&d22++5>X{`AXX~xE3U|GG43($=;+mfbGKQ0i8s4@l3qcTuY>C>^yY8` z837Yu1gpeGk!tBGvY0zGxlse*84gVs5@c^Y|B66(YD9zm=&ty1i|w>Ku?Ye>*;iM` zZ?Rp2fIbl#l z71DL~?l8VhERkM#e{MkK&GGhA!nu9fagl{l@-f1Vr{ncn@ZlL)!^x)Z;Szi>cW0sZ zi*0hjGLxLeNb_#MA_kGG65=;`u%%f}w~d!=00|i;sh6L>Rao=~@JBo*Yh}*Oo@H`# z8<0taHrj%;Q{Ux-9<6k#A+9t zeJ68X7gGVYqmsX=GM^^M-jEmGF=M!DfDBZ1Zn;GF?pv&3K1^KA{?7~~|1^m|Hv|Mx zdK8xU48-yUQzUVjKfX0@UYe9F8RZsY>`#U$iWiPZN+ok)?@SJQg}XUN505~-8WW`#*%P$$n228kvnVYpIE1C-tSs&qtiJ-!iu=_p8t!o}KTb%41MU;`wJTVJ}*l(n0phi!rz<&#T+W-;iwkK<6w;Hqb# zC-TB}QJ`}z_F7>K8Im!(xet~zkmJr+TOM<|M*}**!VV#?*?=5hIwT%8)RRE{Iyvau zRR37Q^WIH7uI9AoHFVAzI6>t5fILQR?)kf4|!kyS6HzYlTS zyj}Bi2TSPoZ!|qFJNF)B_FHK!U?Vufh$z6N@Gv+)#Nk%)2?g85{`*Ee2 z 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 We_P<+7WlUX{%wK(br$$(?Ee4?vzkf( literal 0 HcmV?d00001 diff --git a/react/src/components/Controls/Button/Button.js b/react/src/components/Controls/Button/Button.js new file mode 100644 index 00000000..6dc03109 --- /dev/null +++ b/react/src/components/Controls/Button/Button.js @@ -0,0 +1,10 @@ +import React from "react"; +import Button from '@material-ui/core/Button'; + +export const Btn = ({text , handleClick}) => { + return ( + + ); +}; diff --git a/react/src/components/Controls/InputField/InputField.js b/react/src/components/Controls/InputField/InputField.js new file mode 100644 index 00000000..83e814e4 --- /dev/null +++ b/react/src/components/Controls/InputField/InputField.js @@ -0,0 +1,32 @@ +import React from "react"; +import { TextField } from "@material-ui/core"; + +export const InputField = ({ + name, + label, + value, + error, + handleChange, + helperText, + isMultiline, + isRequired +}) => { + + return ( + + ); +}; diff --git a/react/src/components/Loader/Loader.js b/react/src/components/Loader/Loader.js new file mode 100644 index 00000000..c0207108 --- /dev/null +++ b/react/src/components/Loader/Loader.js @@ -0,0 +1,14 @@ +import React from "react"; +import "./Loader.scss"; + +const Loader = () => { + return ( +

+ ); +}; + +export default Loader; diff --git a/react/src/components/Loader/Loader.scss b/react/src/components/Loader/Loader.scss new file mode 100644 index 00000000..3111eca5 --- /dev/null +++ b/react/src/components/Loader/Loader.scss @@ -0,0 +1,31 @@ +.spinnerContainer { + height: 100vh; + width: 100%; +} + +.loading-indicator:before { + content: ""; + background: #000000cc; + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 1000; +} + +.loading-indicator:after { + content: "\f1ce"; + font-family: FontAwesome; + position: fixed; + width: 100%; + top: 50%; + left: 0; + z-index: 1001; + color: white; + text-align: center; + font-weight: 100; + font-size: 4rem; + -webkit-animation: fa-spin 1s infinite linear; + animation: fa-spin 1s infinite linear; +} diff --git a/react/src/components/Navbar/Navbar.js b/react/src/components/Navbar/Navbar.js new file mode 100644 index 00000000..042f6012 --- /dev/null +++ b/react/src/components/Navbar/Navbar.js @@ -0,0 +1,33 @@ +import React from "react"; +import messages from "./../../assets/Local/messages"; +import { useSelector, useDispatch } from "react-redux"; +import { setCurrentLang } from "../../store/Lang/LangAction"; +import { Link } from "react-router-dom"; +import { Btn } from "../Controls/Button/Button"; + +export default function Navbar() { + const lang = useSelector(state => state.lang); + const dispatch = useDispatch(); + const message = messages[lang]; + const switchLanguage = lang => { + dispatch(setCurrentLang(lang === "ar" ? "en" : "ar")); + }; + + return ( + <> + + + ); +} diff --git a/react/src/components/NotFound/NotFound.js b/react/src/components/NotFound/NotFound.js new file mode 100644 index 00000000..e3e2a0ad --- /dev/null +++ b/react/src/components/NotFound/NotFound.js @@ -0,0 +1,12 @@ +import React from "react"; + +const NotFound = () => { + return ( + +
+

Sorry we can’t find this page

+
+
+ ); +}; +export default NotFound; diff --git a/react/src/components/Snackbar/Snackbar.js b/react/src/components/Snackbar/Snackbar.js new file mode 100644 index 00000000..3c37dda8 --- /dev/null +++ b/react/src/components/Snackbar/Snackbar.js @@ -0,0 +1,33 @@ +import React from "react"; +import Snackbar from "@material-ui/core/Snackbar"; +import MuiAlert from "@material-ui/lab/Alert"; +import { useSelector, useDispatch } from "react-redux"; +import { hideSnackbarAction } from "../../store/Snackbar/SnackbarAction"; + +function Alert(props) { + return ; +} + +export function MaterialSnackbar(props) { + const { isOpen, message, type } = useSelector(state => state.snackbar); + const dispatch = useDispatch(); + const handleClose = (event, reason) => { + if (reason === "clickaway") { + return; + } + dispatch(hideSnackbarAction()); + }; + return ( + handleClose} + > + + {message} + + + ); +} diff --git a/react/src/containers/App.js b/react/src/containers/App.js new file mode 100644 index 00000000..8b0d5aed --- /dev/null +++ b/react/src/containers/App.js @@ -0,0 +1,40 @@ +import React from "react"; +import Navbar from "../components/Navbar/Navbar"; +import { Router } from "react-router-dom"; +import history from "../routes/History"; +import Routes from "../routes/Routes"; +import { IntlProvider } from "react-intl"; +import messages from "../assets/Local/messages"; +import { MaterialSnackbar } from "../components/Snackbar/Snackbar"; +import Loader from "../components/Loader/Loader"; +import "./App.scss"; +import { connect } from "react-redux"; + +class App extends React.Component { + // App contains routes and also wrapped with snackbar and intl for localization + render() { + const { lang , loading } = this.props; + return ( + +
+ {loading ? : null} + + + + {Routes} + +
+
+ ); + } +} + +const mapStateToProps = ({ lang, loading }) => ({ + lang, + loading +}); + +export default connect(mapStateToProps, null)(App); diff --git a/react/src/containers/App.scss b/react/src/containers/App.scss new file mode 100644 index 00000000..81a2ca0e --- /dev/null +++ b/react/src/containers/App.scss @@ -0,0 +1 @@ +@import '../scss/base.scss'; \ No newline at end of file diff --git a/react/src/containers/Home/Home.js b/react/src/containers/Home/Home.js new file mode 100644 index 00000000..0cc34097 --- /dev/null +++ b/react/src/containers/Home/Home.js @@ -0,0 +1,23 @@ +import React from 'react'; +import messages from "./../../assets/Local/messages"; +import { connect } from 'react-redux'; + +class Home extends React.Component { + render(){ + const { lang } = this.props; + const message = messages[lang] + return( +
+

{message.home.content}

+
+ ) + } +} + +const mapStateToProps = (state) => { + return { + lang : state.lang + } +} + +export default connect(mapStateToProps,null)(Home); \ No newline at end of file diff --git a/react/src/containers/Login/Login.js b/react/src/containers/Login/Login.js new file mode 100644 index 00000000..3eafda9d --- /dev/null +++ b/react/src/containers/Login/Login.js @@ -0,0 +1,23 @@ +import React from 'react'; +import {Btn} from '../../components/Controls/Button/Button'; +import History from '../../routes/History'; +class Login extends React.Component { + + // this method is only to trigger route guards , remove and use your own logic + handleLogin = () => { + localStorage.setItem('token','token'); + History.push('/') + } + + render(){ + return( +
+

Login Page

+ +
+ ) + } +} + + +export default Login; \ No newline at end of file diff --git a/react/src/index.js b/react/src/index.js new file mode 100644 index 00000000..7c346590 --- /dev/null +++ b/react/src/index.js @@ -0,0 +1,12 @@ +import React from "react"; +import ReactDOM from "react-dom"; +import { Provider } from "react-redux"; +import store from "./store"; +import ThemeApp from "./Theme"; + +ReactDOM.render( + + + , + document.querySelector('#root') +); diff --git a/react/src/network/apis/index.js b/react/src/network/apis/index.js new file mode 100644 index 00000000..2c35ad08 --- /dev/null +++ b/react/src/network/apis/index.js @@ -0,0 +1,19 @@ +import axios from "axios"; +import { requestHandler, successHandler, errorHandler } from "../interceptors"; +import { BASE_URL } from "../../utils/Constants"; + +//add your BASE_URL to Constants file +export const axiosInstance = axios.create({ + baseURL: BASE_URL, + headers: { + "Content-Type": "application/json" + } +}); + +// Handle request process +axiosInstance.interceptors.request.use(request => requestHandler(request)); +// Handle response process +axiosInstance.interceptors.response.use( + response => successHandler(response), + error => errorHandler(error) +); diff --git a/react/src/network/interceptors/index.js b/react/src/network/interceptors/index.js new file mode 100644 index 00000000..00af3e9c --- /dev/null +++ b/react/src/network/interceptors/index.js @@ -0,0 +1,35 @@ +import store from "../../store"; +import { loader } from "../../store/Loader/LoaderAction"; +import Auth from "../../utils/Auth"; + +export const isHandlerEnabled = (config = {}) => { + return config.hasOwnProperty("handlerEnabled") && !config.handlerEnabled + ? false + : true; +}; + +export const requestHandler = request => { + if (isHandlerEnabled(request)) { + // Modify request here + store.dispatch(loader(true)); + } + return request; +}; + +export const successHandler = response => { + if (isHandlerEnabled(response)) { + // Hanlde Response + store.dispatch(loader(false)); + } + return response; +}; + +export const errorHandler = error => { + if (isHandlerEnabled(error.config)) { + store.dispatch(loader(false)); + // You can decide what you need to do to handle errors. + // here's example for unautherized user to log them out . + // error.response.status === 401 && Auth.signOut(); + } + return Promise.reject({ ...error }); +}; diff --git a/react/src/routes/History.js b/react/src/routes/History.js new file mode 100644 index 00000000..2724b5bc --- /dev/null +++ b/react/src/routes/History.js @@ -0,0 +1,2 @@ +import { createBrowserHistory } from "history"; +export default createBrowserHistory(); diff --git a/react/src/routes/Routes.js b/react/src/routes/Routes.js new file mode 100644 index 00000000..8aba5bb4 --- /dev/null +++ b/react/src/routes/Routes.js @@ -0,0 +1,22 @@ +import React, { Suspense } from "react"; +import { Router, Switch } from "react-router-dom"; +import history from "./History"; +import * as LazyComponent from "../utils/LazyLoaded"; +import Loader from "../components/Loader/Loader"; +import PrivateRoute from "../utils/PrivateRoute"; + +const Routes = ( + }> + + + {/* For private routes */} + + {/* Public routes that doesn't need any auth */} + + + + + +); + +export default Routes; diff --git a/react/src/scss/_general.scss b/react/src/scss/_general.scss new file mode 100644 index 00000000..9da92c71 --- /dev/null +++ b/react/src/scss/_general.scss @@ -0,0 +1 @@ +// Add you general and shared styles here \ No newline at end of file diff --git a/react/src/scss/_rtl.scss b/react/src/scss/_rtl.scss new file mode 100644 index 00000000..d1cfebb6 --- /dev/null +++ b/react/src/scss/_rtl.scss @@ -0,0 +1,4 @@ +.rtl{ + font-family: Arial, Helvetica, sans-serif; + text-align: right; +} \ No newline at end of file diff --git a/react/src/scss/_variables.scss b/react/src/scss/_variables.scss new file mode 100644 index 00000000..0f1fee95 --- /dev/null +++ b/react/src/scss/_variables.scss @@ -0,0 +1,2 @@ +$primaryColor: rgb(50, 61, 165); +$secondaryColor : rgba(62, 62, 62, 1); diff --git a/react/src/scss/base.scss b/react/src/scss/base.scss new file mode 100644 index 00000000..ae9a87ee --- /dev/null +++ b/react/src/scss/base.scss @@ -0,0 +1,4 @@ +@import 'bootstrap/scss/bootstrap'; +@import './variables'; +@import './rtl'; +@import './general'; \ No newline at end of file diff --git a/react/src/store/Feature1/FeatureAction.js b/react/src/store/Feature1/FeatureAction.js new file mode 100644 index 00000000..dc61c9b6 --- /dev/null +++ b/react/src/store/Feature1/FeatureAction.js @@ -0,0 +1,11 @@ +import * as types from "./FeatureTypes"; + +//Replace action name and update action types +export const actionRequest = () => ({ + type: types.GET_DATA_REQUEST +}); + +export const actionReceive = payload => ({ + type: types.GET_DATA_REQUEST, + payload +}); diff --git a/react/src/store/Feature1/FeatureApis.js b/react/src/store/Feature1/FeatureApis.js new file mode 100644 index 00000000..b56f4bcd --- /dev/null +++ b/react/src/store/Feature1/FeatureApis.js @@ -0,0 +1,11 @@ +import {axiosInstance} from '../../network/apis'; +const handlerEnabled = false; + +// Replace endpoint and change api name +const apiExampleRequest = async () => { + return await axiosInstance.get(`ENDPOINT`, { handlerEnabled }); +}; + +export default { + apiExampleRequest +}; diff --git a/react/src/store/Feature1/FeatureReducer.js b/react/src/store/Feature1/FeatureReducer.js new file mode 100644 index 00000000..82a946c8 --- /dev/null +++ b/react/src/store/Feature1/FeatureReducer.js @@ -0,0 +1,16 @@ +import * as types from "./FeatureTypes"; + +const INITIAL_STATE = {}; + +// Replace with you own reducer +export default (state = INITIAL_STATE, action) => { + switch (action.type) { + case types.GET_DATA_RECEIVE: + return { + ...state, + ...action.payload + }; + default: + return state; + } +}; diff --git a/react/src/store/Feature1/FeatureSagas.js b/react/src/store/Feature1/FeatureSagas.js new file mode 100644 index 00000000..516e0436 --- /dev/null +++ b/react/src/store/Feature1/FeatureSagas.js @@ -0,0 +1,21 @@ +import { call, put } from "redux-saga/effects"; +import API from "./FeatureApis"; +import * as ACTIONS from "./FeatureAction"; +import { dispatchSnackbarError } from "../../utils/Shared"; +import { takeLatest } from "redux-saga/effects"; +import * as TYPES from "./FeatureTypes"; + +// Replace with your sagas +export function* sagasRequestExample() { + try { + const response = yield call(API.apiExampleRequest); + yield put(ACTIONS.actionReceive(response.data)); + } catch (err) { + dispatchSnackbarError(err.response.data); + } +} + + +export function* FeatureSaga1() { + yield takeLatest(TYPES.GET_DATA_REQUEST, sagasRequestExample); +} diff --git a/react/src/store/Feature1/FeatureTypes.js b/react/src/store/Feature1/FeatureTypes.js new file mode 100644 index 00000000..50eb0a2c --- /dev/null +++ b/react/src/store/Feature1/FeatureTypes.js @@ -0,0 +1,3 @@ +// Replace with your request types +export const GET_DATA_REQUEST = 'GET_DATA_REQUEST'; +export const GET_DATA_RECEIVE = 'GET_DATA_RECEIVE'; diff --git a/react/src/store/Lang/LangAction.js b/react/src/store/Lang/LangAction.js new file mode 100644 index 00000000..a455f940 --- /dev/null +++ b/react/src/store/Lang/LangAction.js @@ -0,0 +1,10 @@ +import * as types from './LangTypes'; + +export const setCurrentLang = payload => { + localStorage.setItem('lang', payload); + return { type: types.SET_LANG, payload }; +} + +export const getCurrentLang = () => { + return { type: types.GET_LANG }; +}; \ No newline at end of file diff --git a/react/src/store/Lang/LangReducer.js b/react/src/store/Lang/LangReducer.js new file mode 100644 index 00000000..7ab0d7f7 --- /dev/null +++ b/react/src/store/Lang/LangReducer.js @@ -0,0 +1,14 @@ +import * as types from "./LangTypes"; + +const INITIAL_STATE = localStorage.getItem("lang") || "en"; + +export default function locale(state = INITIAL_STATE, action) { + switch (action.type) { + case types.SET_LANG: + return action.payload; + case types.GET_LANG: + return action.payload; + default: + return state; + } +} diff --git a/react/src/store/Lang/LangTypes.js b/react/src/store/Lang/LangTypes.js new file mode 100644 index 00000000..045ed685 --- /dev/null +++ b/react/src/store/Lang/LangTypes.js @@ -0,0 +1,2 @@ +export const SET_LANG = 'SET_LANG'; +export const GET_LANG = 'GET_LANG'; \ No newline at end of file diff --git a/react/src/store/Loader/LoaderAction.js b/react/src/store/Loader/LoaderAction.js new file mode 100644 index 00000000..a39b3d60 --- /dev/null +++ b/react/src/store/Loader/LoaderAction.js @@ -0,0 +1,13 @@ +import * as types from "./LoaderTypes"; + +export const loader = isLoading => { + return isLoading + ? { + type: types.SHOW_LOADER, + data: isLoading + } + : { + type: types.HIDE_LOADER, + data: isLoading + }; +}; diff --git a/react/src/store/Loader/LoaderReducer.js b/react/src/store/Loader/LoaderReducer.js new file mode 100644 index 00000000..229bdbca --- /dev/null +++ b/react/src/store/Loader/LoaderReducer.js @@ -0,0 +1,14 @@ +import * as types from "./LoaderTypes"; + +const INITIAL_STATE = false; + +export default (state = INITIAL_STATE, action) => { + switch (action.type) { + case types.SHOW_LOADER: + return action.data; + case types.HIDE_LOADER: + return action.data; + default: + return state; + } +}; diff --git a/react/src/store/Loader/LoaderTypes.js b/react/src/store/Loader/LoaderTypes.js new file mode 100644 index 00000000..bee7d58f --- /dev/null +++ b/react/src/store/Loader/LoaderTypes.js @@ -0,0 +1,2 @@ +export const SHOW_LOADER = 'SHOW_LOADER'; +export const HIDE_LOADER = 'HIDE_LOADER'; \ No newline at end of file diff --git a/react/src/store/Snackbar/SnackbarAction.js b/react/src/store/Snackbar/SnackbarAction.js new file mode 100644 index 00000000..5be5308a --- /dev/null +++ b/react/src/store/Snackbar/SnackbarAction.js @@ -0,0 +1,15 @@ +import * as types from './SnackbarTypes'; + +export const showSnackbarAction = (message , snacknarType) => { + return { + type: types.SHOW_SNACKBAR, + message , + snacknarType + }; +}; + +export const hideSnackbarAction = () => { + return { + type: types.HIDE_SNACKBAR + }; +}; \ No newline at end of file diff --git a/react/src/store/Snackbar/SnackbarReducer.js b/react/src/store/Snackbar/SnackbarReducer.js new file mode 100644 index 00000000..e0c23d70 --- /dev/null +++ b/react/src/store/Snackbar/SnackbarReducer.js @@ -0,0 +1,21 @@ +import * as types from "./SnackbarTypes"; + +export default (state = {}, action) => { + switch (action.type) { + case types.SHOW_SNACKBAR: + return { + ...state, + isOpen: true, + message: action.message, + type: action.snacknarType + }; + case types.HIDE_SNACKBAR: + return { + ...state, + isOpen: false + }; + default: + return state; + } +}; + diff --git a/react/src/store/Snackbar/SnackbarTypes.js b/react/src/store/Snackbar/SnackbarTypes.js new file mode 100644 index 00000000..89b40103 --- /dev/null +++ b/react/src/store/Snackbar/SnackbarTypes.js @@ -0,0 +1,2 @@ +export const SHOW_SNACKBAR = 'SHOW_SNACKBAR'; +export const HIDE_SNACKBAR = 'HIDE_SNACKBAR'; \ No newline at end of file diff --git a/react/src/store/index.js b/react/src/store/index.js new file mode 100644 index 00000000..6babc4b8 --- /dev/null +++ b/react/src/store/index.js @@ -0,0 +1,17 @@ +import { createStore, applyMiddleware, compose } from "redux"; +import reducers from "./reducers"; +import createSagaMiddleware from "redux-saga"; +import { watchSagas } from "./sagas"; +const saga = createSagaMiddleware(); +//redux dev tool +const composeEnhancers = + typeof window === "object" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ + ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}) + : compose; +const enhancer = composeEnhancers(applyMiddleware(saga)); + +const store = createStore(reducers, enhancer); + +saga.run(watchSagas); + +export default store; diff --git a/react/src/store/reducers/index.js b/react/src/store/reducers/index.js new file mode 100644 index 00000000..8104e3da --- /dev/null +++ b/react/src/store/reducers/index.js @@ -0,0 +1,12 @@ +import { combineReducers } from "redux"; +import lang from "../Lang/LangReducer"; +import loader from "../Loader/LoaderReducer"; +import snackbar from "../Snackbar/SnackbarReducer"; +import Feature1 from "../Feature1/FeatureReducer"; + +export default combineReducers({ + lang, + loader, + snackbar, + Feature1 +}); diff --git a/react/src/store/sagas/index.js b/react/src/store/sagas/index.js new file mode 100644 index 00000000..d21b5bfb --- /dev/null +++ b/react/src/store/sagas/index.js @@ -0,0 +1,9 @@ +import { FeatureSaga1 } from '../Feature1/FeatureSagas'; +import { fork, all } from "redux-saga/effects"; + +export function* watchSagas() { + //Combine sagas with + yield all([FeatureSaga1()]); + // OR + // yield all([fork(FeatureSaga1)]); +} diff --git a/react/src/utils/Auth.js b/react/src/utils/Auth.js new file mode 100644 index 00000000..c9fc596b --- /dev/null +++ b/react/src/utils/Auth.js @@ -0,0 +1,10 @@ +// Service to check authentication for user and to signOut +const Auth = { + signOut() { + localStorage.removeItem("token"); + }, + isAuth() { + return localStorage.getItem("token"); + } +}; +export default Auth; diff --git a/react/src/utils/Constants.js b/react/src/utils/Constants.js new file mode 100644 index 00000000..7bd496b2 --- /dev/null +++ b/react/src/utils/Constants.js @@ -0,0 +1 @@ +export const BASE_URL = 'BASE_URL'; \ No newline at end of file diff --git a/react/src/utils/LazyLoaded.js b/react/src/utils/LazyLoaded.js new file mode 100644 index 00000000..92082661 --- /dev/null +++ b/react/src/utils/LazyLoaded.js @@ -0,0 +1,5 @@ +import React from "react"; + +export const Home = React.lazy(() => import('../containers/Home/Home')); +export const Login = React.lazy(() => import('../containers/Login/Login')); +export const NotFound = React.lazy(() => import('../components/NotFound/NotFound')); diff --git a/react/src/utils/PrivateRoute.js b/react/src/utils/PrivateRoute.js new file mode 100644 index 00000000..99b319c0 --- /dev/null +++ b/react/src/utils/PrivateRoute.js @@ -0,0 +1,18 @@ +import React from "react"; +import { Route, Redirect } from "react-router-dom"; +import Auth from "../utils/Auth"; + +const PrivateRoute = ({ component: Component, ...rest }) => { + return ( + // Show the component only when the user is logged in + // Otherwise, redirect the user to /signin page + + Auth.isAuth() ? : + } + /> + ); +}; + +export default PrivateRoute; diff --git a/react/src/utils/Shared.js b/react/src/utils/Shared.js new file mode 100644 index 00000000..6a3c5dde --- /dev/null +++ b/react/src/utils/Shared.js @@ -0,0 +1,18 @@ +import store from "../store"; +import { showSnackbarAction } from "../store/Snackbar/SnackbarAction"; +import messages from "../assets/Local/messages"; + +// To show error message that returned from backend +export function dispatchSnackbarError(data) { + if (data) { + const errorMsg = data.error.message; + store.dispatch(showSnackbarAction(errorMsg, "error")); + } +} +// To show success message after any success request if needed and rendered from locale files +export function dispatchSnackbarSuccess(message) { + const lang = store.getState().lang; + store.dispatch( + showSnackbarAction(messages[lang].snackbar[message], "success") + ); +} From f5ab703d8afd8a672eab9f8f500bcfd37315c2e1 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Wed, 25 Nov 2020 12:50:03 +0100 Subject: [PATCH 037/372] Set nginx default.key permission Solved issue: https://github.com/laradock/laradock/issues/2285#issuecomment-616225902 --- nginx/startup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/nginx/startup.sh b/nginx/startup.sh index f8e7b229..0f088ad0 100644 --- a/nginx/startup.sh +++ b/nginx/startup.sh @@ -4,6 +4,7 @@ if [ ! -f /etc/nginx/ssl/default.crt ]; then openssl genrsa -out "/etc/nginx/ssl/default.key" 2048 openssl req -new -key "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.csr" -subj "/CN=default/O=default/C=UK" openssl x509 -req -days 365 -in "/etc/nginx/ssl/default.csr" -signkey "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.crt" + chmod 644 /etc/nginx/ssl/default.key fi # Start crond in background From 7cffc65639693aa096c3fb12bc0b5faa385ba5bc Mon Sep 17 00:00:00 2001 From: h-ochiai Date: Wed, 2 Dec 2020 11:38:32 +0900 Subject: [PATCH 038/372] fixed oci8 version --- php-fpm/Dockerfile | 2 +- workspace/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 1837b452..fc3e52da 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -519,7 +519,7 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.10; \ else \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ fi \ && docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/opt/oracle/instantclient_12_1,12.1 \ && docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 0043dd80..16035fbf 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -858,7 +858,7 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.10; \ else \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ fi \ && echo "extension=oci8.so" >> /etc/php/${LARADOCK_PHP_VERSION}/cli/php.ini \ && php -m | grep -q 'oci8' \ From 2f575017e440a336e4a02d346d86ed6d16898ee0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=85=8B?= Date: Thu, 3 Dec 2020 16:11:35 +0800 Subject: [PATCH 039/372] Upgrade the Compose file format version to 3.5 --- docker-compose.sync.yml | 2 +- docker-compose.yml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docker-compose.sync.yml b/docker-compose.sync.yml index 4536f3c4..c376c35b 100644 --- a/docker-compose.sync.yml +++ b/docker-compose.sync.yml @@ -1,4 +1,4 @@ -version: '3' +version: '3.5' services: diff --git a/docker-compose.yml b/docker-compose.yml index eabce3e4..abc955fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: '3.5' networks: frontend: @@ -848,11 +848,11 @@ services: ### MeiliSearch ########################################## meilisearch: image: getmeili/meilisearch:latest - volumes: + volumes: - ${DATA_PATH_HOST}/meilisearch:/var/lib/meilisearch - ports: + ports: - "${MEILISEARCH_HOST_PORT}:7700" - networks: + networks: - frontend - backend @@ -1371,7 +1371,7 @@ services: docker-in-docker: image: docker:19.03-dind environment: - DOCKER_TLS_SAN: DNS:docker-in-docker + DOCKER_TLS_SAN: DNS:docker-in-docker privileged: true volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} From 6221aaf5f0ca671e12b4cc8229ff5dcb311add94 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Wed, 9 Dec 2020 17:28:41 +0100 Subject: [PATCH 040/372] remove duplicate section from docs --- DOCUMENTATION/content/introduction/index.md | 71 --------------------- 1 file changed, 71 deletions(-) diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index dc9f93e4..87a3fb3e 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -222,77 +222,6 @@ You can choose, which tools to install in your workspace container and other con - -

- Laradock Logo -

- -

- contributions welcome - GitHub forks - GitHub issues - GitHub stars - Build status - GitHub license -

- -

Full PHP development environment based on Docker.

- -

- forthebadge -

- -
-
- -

Use Docker First - Learn About It Later!

- -

- - Laradock Documentation - -

- - -

- Laradock Logo -

- -

- contributions welcome - GitHub forks - GitHub issues - GitHub stars - Build status - GitHub license -

- -

Full PHP development environment based on Docker.

- -

- forthebadge -

- -
-
- -

Use Docker First - Learn About It Later!

- -

- - Laradock Documentation - -

- - - - - - - - - - ## Join Us [![Gitter](https://badges.gitter.im/Laradock/laradock.svg)](https://gitter.im/Laradock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) From 049e466b930499562dfd1418c9415cc93f6240e9 Mon Sep 17 00:00:00 2001 From: KNY00 Date: Wed, 9 Dec 2020 15:07:48 +0100 Subject: [PATCH 041/372] Add retry configuration options for npm --- docker-compose.yml | 4 ++++ env-example | 4 ++++ workspace/Dockerfile | 12 ++++++++++++ 3 files changed, 20 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index eabce3e4..726338fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -91,6 +91,10 @@ services: - NVM_NODEJS_ORG_MIRROR=${WORKSPACE_NVM_NODEJS_ORG_MIRROR} - INSTALL_NODE=${WORKSPACE_INSTALL_NODE} - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY} + - NPM_FETCH_RETRIES=${WORKSPACE_NPM_FETCH_RETRIES} + - NPM_FETCH_RETRY_FACTOR=${WORKSPACE_NPM_FETCH_RETRY_FACTOR} + - NPM_FETCH_RETRY_MINTIMEOUT=${WORKSPACE_NPM_FETCH_RETRY_MINTIMEOUT} + - NPM_FETCH_RETRY_MAXTIMEOUT=${WORKSPACE_NPM_FETCH_RETRY_MAXTIMEOUT} - INSTALL_PNPM=${WORKSPACE_INSTALL_PNPM} - INSTALL_YARN=${WORKSPACE_INSTALL_YARN} - INSTALL_NPM_GULP=${WORKSPACE_INSTALL_NPM_GULP} diff --git a/env-example b/env-example index 3b52a4b9..08b2f501 100644 --- a/env-example +++ b/env-example @@ -104,6 +104,10 @@ WORKSPACE_NVM_NODEJS_ORG_MIRROR= WORKSPACE_INSTALL_NODE=true WORKSPACE_NODE_VERSION=node WORKSPACE_NPM_REGISTRY= +WORKSPACE_NPM_FETCH_RETRIES=2 +WORKSPACE_NPM_FETCH_RETRY_FACTOR=10 +WORKSPACE_NPM_FETCH_RETRY_MINTIMEOUT=10000 +WORKSPACE_NPM_FETCH_RETRY_MAXTIMEOUT=60000 WORKSPACE_INSTALL_PNPM=false WORKSPACE_INSTALL_YARN=true WORKSPACE_YARN_VERSION=latest diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 0043dd80..da6d95be 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -666,6 +666,14 @@ ARG INSTALL_NPM_VUE_CLI=false ARG INSTALL_NPM_ANGULAR_CLI=false ARG NPM_REGISTRY ENV NPM_REGISTRY ${NPM_REGISTRY} +ARG NPM_FETCH_RETRIES +ENV NPM_FETCH_RETRIES ${NPM_FETCH_RETRIES} +ARG NPM_FETCH_RETRY_FACTOR +ENV NPM_FETCH_RETRY_FACTOR ${NPM_FETCH_RETRY_FACTOR} +ARG NPM_FETCH_RETRY_MINTIMEOUT +ENV NPM_FETCH_RETRY_MINTIMEOUT ${NPM_FETCH_RETRY_MINTIMEOUT} +ARG NPM_FETCH_RETRY_MAXTIMEOUT +ENV NPM_FETCH_RETRY_MAXTIMEOUT ${NPM_FETCH_RETRY_MAXTIMEOUT} ENV NVM_DIR /home/laradock/.nvm ARG NVM_NODEJS_ORG_MIRROR ENV NVM_NODEJS_ORG_MIRROR ${NVM_NODEJS_ORG_MIRROR} @@ -678,6 +686,10 @@ RUN if [ ${INSTALL_NODE} = true ]; then \ && nvm install ${NODE_VERSION} \ && nvm use ${NODE_VERSION} \ && nvm alias ${NODE_VERSION} \ + && npm config set fetch-retries ${NPM_FETCH_RETRIES} \ + && npm config set fetch-retry-factor ${NPM_FETCH_RETRY_FACTOR} \ + && npm config set fetch-retry-mintimeout ${NPM_FETCH_RETRY_MINTIMEOUT} \ + && npm config set fetch-retry-maxtimeout ${NPM_FETCH_RETRY_MAXTIMEOUT} \ && if [ ${NPM_REGISTRY} ]; then \ npm config set registry ${NPM_REGISTRY} \ ;fi \ From f754717f44f7e70f29574c1f43496c87b5d73c1e Mon Sep 17 00:00:00 2001 From: Jonathon Page Date: Sun, 13 Dec 2020 14:42:21 +0000 Subject: [PATCH 042/372] Force XDebug to use v2 --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 1837b452..a64bf636 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -193,7 +193,7 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ pecl install xdebug-2.9.0; \ else \ - pecl install xdebug; \ + pecl install xdebug-2.9.8; \ fi \ fi && \ docker-php-ext-enable xdebug \ From 78ba356e696344f9d7afac2f16afd1881e7dee59 Mon Sep 17 00:00:00 2001 From: Jonathon Page Date: Tue, 15 Dec 2020 15:38:23 +0000 Subject: [PATCH 043/372] Force xDebug v2 for workspace --- workspace/Dockerfile | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 0043dd80..ee3e2718 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -350,9 +350,26 @@ USER root ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ - # Load the xdebug extension only with phpunit commands - apt-get install -y php${LARADOCK_PHP_VERSION}-xdebug && \ - sed -i 's/^;//g' /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xdebug.ini \ + # Install the xdebug extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install xdebug-2.5.5; \ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + pecl install xdebug-2.9.0; \ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ + pecl install xdebug-2.9.8; \ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + pecl install xdebug-2.9.8; \ + else \ + #pecl install xdebug; \ + echo "xDebug 3 required, not supported."; \ + fi \ + fi \ + fi \ + fi && \ + echo "zend_extension=xdebug.so" >> /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xdebug.ini \ ;fi # ADD for REMOTE debugging From 5258e493731220b50a22f1cecedacad425f28bb3 Mon Sep 17 00:00:00 2001 From: hsyam Date: Thu, 17 Dec 2020 14:09:06 +0200 Subject: [PATCH 044/372] add new relic configurations to env && update new relice to stabile version --- env-example | 6 ++++++ php-fpm/Dockerfile | 13 +++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/env-example b/env-example index 0d4ebe6c..bdfd69fb 100644 --- a/env-example +++ b/env-example @@ -250,6 +250,12 @@ PHP_FPM_DEFAULT_LOCALE=POSIX PHP_FPM_PUID=1000 PHP_FPM_PGID=1000 +### PHP_FPM_NEW_RELIC ##################################### + +PHP_FPM_NEW_RELIC=false +PHP_FPM_NEW_RELIC_KEY=0000 +PHP_FPM_NEW_RELIC_APP_NAME=app_name + ### PHP_WORKER ############################################ PHP_WORKER_INSTALL_BZ2=false diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 18c2bb26..9e540057 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -924,11 +924,12 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \ ########################################################################### # New Relic for PHP: ########################################################################### +ARG NEW_RELIC=${NEW_RELIC} +ARG NEW_RELIC_KEY=${NEW_RELIC_KEY} +ARG NEW_RELIC_APP_NAME=${NEW_RELIC_APP_NAME} -ARG NEW_RELIC_KEY=000000 -ARG NEW_RELIC_APP_NAME=app_name -RUN \ - curl -L http://download.newrelic.com/php_agent/release/newrelic-php5-9.13.0.270-linux.tar.gz | tar -C /tmp -zx && \ +RUN if [ ${NEW_RELIC} = true ]; then \ + curl -L http://download.newrelic.com/php_agent/archive/9.9.0.260/newrelic-php5-9.9.0.260-linux.tar.gz | tar -C /tmp -zx && \ export NR_INSTALL_USE_CP_NOT_LN=1 && \ export NR_INSTALL_SILENT=1 && \ /tmp/newrelic-php5-*/newrelic-install install && \ @@ -938,8 +939,8 @@ RUN \ -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "${NEW_RELIC_APP_NAME}"/' \ -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \ -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \ - /usr/local/etc/php/conf.d/newrelic.ini - + /usr/local/etc/php/conf.d/newrelic.ini \ +;fi ########################################################################### # Downgrade Openssl: ########################################################################### From a1517c084a4ee6645e6a8e95d24e6e15b801b2fe Mon Sep 17 00:00:00 2001 From: hsyam Date: Thu, 17 Dec 2020 14:25:12 +0200 Subject: [PATCH 045/372] add new relic configurations to docker-compose.yml --- docker-compose.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index cb056aca..0447dcfa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -252,6 +252,9 @@ services: - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} - LOCALE=${PHP_FPM_DEFAULT_LOCALE} + - PHP_FPM_NEW_RELIC=${PHP_FPM_NEW_RELIC} + - PHP_FPM_NEW_RELIC_KEY=${PHP_FPM_NEW_RELIC_KEY} + - PHP_FPM_NEW_RELIC_APP_NAME=${PHP_FPM_NEW_RELIC_APP_NAME} - http_proxy - https_proxy - no_proxy From 36761faae0c5d146f31997251fac286d2dbb11db Mon Sep 17 00:00:00 2001 From: "DESK0253\\Leo" Date: Fri, 18 Dec 2020 12:34:21 +0800 Subject: [PATCH 046/372] fix: fix ORACLE_INSTANT_CLIENT_MIRROR default value --- env-example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env-example b/env-example index f80d0f6c..a70d2eea 100644 --- a/env-example +++ b/env-example @@ -77,7 +77,7 @@ CHANGE_SOURCE=false # Set CHANGE_SOURCE and UBUNTU_SOURCE option if you want to change the Ubuntu system sources.list file. UBUNTU_SOURCE=aliyun # Set ORACLE INSTANT_CLIENT_MIRROR option if you want to use Intranet improve download, you can download files first -ORACLE_INSTANT_CLIENT_MIRROR=http://192.168.0.42/downloads/oracle_instant_client/ +ORACLE_INSTANT_CLIENT_MIRROR=https://github.com/diogomascarenha/oracle-instantclient/raw/master/ ### Docker Sync ########################################### From fbda1f542f2f357f7c7daf643cf7d499182354ac Mon Sep 17 00:00:00 2001 From: Ilya Apasov Date: Tue, 22 Dec 2020 16:27:31 +0200 Subject: [PATCH 047/372] fix incomplete SSL chain error fixes #2804 --- certbot/run-certbot.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/certbot/run-certbot.sh b/certbot/run-certbot.sh index c66ba2c5..3e9f3de7 100644 --- a/certbot/run-certbot.sh +++ b/certbot/run-certbot.sh @@ -3,5 +3,7 @@ letsencrypt certonly --webroot -w /var/www/letsencrypt -d "$CN" --agree-tos --email "$EMAIL" --non-interactive --text cp /etc/letsencrypt/archive/"$CN"/cert1.pem /var/certs/"$CN"-cert1.pem +cp /etc/letsencrypt/archive/"$CN"/chain1.pem /var/certs/chain1.pem +cp /etc/letsencrypt/archive/"$CN"/fullchain1.pem /var/certs/fullchain1.pem cp /etc/letsencrypt/archive/"$CN"/privkey1.pem /var/certs/"$CN"-privkey1.pem From 65abf7b0eab6c6c29c7ed26cfa7d0e466f0f5338 Mon Sep 17 00:00:00 2001 From: Arjan Weurding Date: Wed, 23 Dec 2020 14:47:01 +0100 Subject: [PATCH 048/372] Make sure the repository cache is up to date when installing the PHP extensions in workspace --- workspace/Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 9e22420e..43e76871 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -198,6 +198,14 @@ COPY ./crontab /etc/cron.d RUN chmod -R 644 /etc/cron.d +########################################################################### +# Update Repositories +########################################################################### + +USER root + +RUN apt-get update -yqq + ########################################################################### # Drush: ########################################################################### From 4a6c7ba397db2ddeac9ddc5af96cd0a546ec98f1 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Thu, 31 Dec 2020 12:31:03 +0800 Subject: [PATCH 049/372] update link to rebuild containers update not correct link to "Build/Re-build Containers" topic --- DOCUMENTATION/content/getting-started/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCUMENTATION/content/getting-started/index.md b/DOCUMENTATION/content/getting-started/index.md index b96cdfe5..1278d65b 100644 --- a/DOCUMENTATION/content/getting-started/index.md +++ b/DOCUMENTATION/content/getting-started/index.md @@ -151,7 +151,7 @@ We recommend using a Docker version which is newer than 1.13.
->**Warning:** If you used an older version of Laradock it's highly recommended to rebuild the containers you need to use [see how you rebuild a container](#Build-Re-build-Containers) in order to prevent as much errors as possible. +>**Warning:** If you used an older version of Laradock it's highly recommended to rebuild the containers you need to use [see how you rebuild a container](/documentation/#Build-Re-build-Containers) in order to prevent as much errors as possible.
From d094cae2fbacb74fe39ec1e02b310ad1dd62de0a Mon Sep 17 00:00:00 2001 From: J-T-McC Date: Tue, 5 Jan 2021 17:47:32 -0800 Subject: [PATCH 050/372] Added PHP 8 to libzip exclusion conditions --- laravel-horizon/Dockerfile | 2 +- php-fpm/Dockerfile | 2 +- php-worker/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 0e50f460..0066910f 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -106,7 +106,7 @@ ARG INSTALL_ZIP_ARCHIVE=false RUN set -eux; \ if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ apk --update add libzip-dev && \ - if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \ + if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ docker-php-ext-configure zip; \ else \ docker-php-ext-configure zip --with-libzip; \ diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 4d1154e4..e4db8856 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -51,7 +51,7 @@ RUN set -xe; \ # # next lines are here becase there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846 libzip-dev zip unzip && \ - if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \ + if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ docker-php-ext-configure zip; \ else \ docker-php-ext-configure zip --with-libzip; \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 084e2dd2..64f08298 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -147,7 +147,7 @@ ARG INSTALL_ZIP_ARCHIVE=false RUN set -eux; \ if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ apk --update add libzip-dev && \ - if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \ + if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ docker-php-ext-configure zip; \ else \ docker-php-ext-configure zip --with-libzip; \ From 418f9d8e3639d6c0dcd4d33bb08d52a163db9bf5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jan 2021 10:38:08 +0000 Subject: [PATCH 051/372] Bump axios from 0.19.2 to 0.21.1 in /react Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.1) Signed-off-by: dependabot[bot] --- react/package-lock.json | 15 +++++++++++---- react/package.json | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 25b51ce2..dd1402f8 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -2991,11 +2991,18 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { - "follow-redirects": "1.5.10" + "follow-redirects": "^1.10.0" + }, + "dependencies": { + "follow-redirects": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" + } } }, "axobject-query": { diff --git a/react/package.json b/react/package.json index 47efebbe..f4e153d6 100644 --- a/react/package.json +++ b/react/package.json @@ -9,7 +9,7 @@ "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.1", - "axios": "^0.19.2", + "axios": "^0.21.1", "bootstrap": "^4.5.3", "jss-rtl": "^0.3.0", "node-sass": "^4.14.1", From 1f6c2147477c70d8f4888b798e694f3acea80323 Mon Sep 17 00:00:00 2001 From: Noud de Brouwer Date: Thu, 7 Jan 2021 01:52:00 +0100 Subject: [PATCH 052/372] mercure --- DOCUMENTATION/content/introduction/index.md | 1 + docker-compose.yml | 18 ++++++++++++++++++ env-example | 9 +++++++++ mercure/Dockerfile | 5 +++++ 4 files changed, 33 insertions(+) create mode 100644 mercure/Dockerfile diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 87a3fb3e..562402a2 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -192,6 +192,7 @@ That's it! enjoy :) - PostGIS *(Database extender for PostgreSQL. It adds support for geographic objects allowing location queries to be run in SQL)* - Blackfire *(Empowers all PHP developers and IT/Ops to continuously verify and improve their app's performance)* - Laravel Echo *(Bring the power of WebSockets to your Laravel applications)* + - Mercure *(Server-sent events)* - Phalcon *(A PHP web framework based on the model–view–controller pattern)* - Minio *(Cloud storage server released under Apache License v2, compatible with Amazon S3)* - AWS EB CLI *(CLI that helps you deploy and manage your AWS Elastic Beanstalk applications and environments)* diff --git a/docker-compose.yml b/docker-compose.yml index f9025f28..45791f82 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -744,6 +744,24 @@ services: networks: - backend +### Mercure ############################################# + mercure: + build: ./mercure + ports: + - "${MERCURE_NODE_HOST_HTTP_PORT}:80" + - "${MERCURE_NODE_HOST_HTTPS_PORT}:443" + privileged: true + environment: + - MERCURE_PUBLISHER_JWT_KEY=${MERCURE_PUBLISHER_JWT_KEY} + - MERCURE_SUBSCRIBER_JWT_KEY=${MERCURE_SUBSCRIBER_JWT_KEY} + - DEBUG=${MERCURE_DEBUG} + - SERVER_NAME=${MERCURE_SERVER_NAME} + - MERCURE_EXTRA_DIRECTIVES=cors_allowed_origins *\npublish_allowed_origins http://localhost:${MERCURE_NODE_HOST_HTTP_PORT} https://localhost:${MERCURE_NODE_HOST_HTTP_PORT} + hostname: laradock-mercure + networks: + - frontend + - backend + ### Cassandra ############################################ cassandra: build: ./cassandra diff --git a/env-example b/env-example index 6520f28d..0585bfda 100644 --- a/env-example +++ b/env-example @@ -414,6 +414,15 @@ RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671 RABBITMQ_DEFAULT_USER=guest RABBITMQ_DEFAULT_PASS=guest +### MERCURE ############################################## + +MERCURE_NODE_HOST_HTTP_PORT=1337 +MERCURE_NODE_HOST_HTTPS_PORT=1338 +MERCURE_PUBLISHER_JWT_KEY=secret +MERCURE_SUBSCRIBER_JWT_KEY=another_secret +MERCURE_DEBUG=debug +MERCURE_SERVER_NAME=:80 + ### MEILISEARCH ########################################### MEILISEARCH_HOST_PORT=7700 diff --git a/mercure/Dockerfile b/mercure/Dockerfile new file mode 100644 index 00000000..0ce140a9 --- /dev/null +++ b/mercure/Dockerfile @@ -0,0 +1,5 @@ +FROM dunglas/mercure + +LABEL maintainer="Kévin Dunglas " + +EXPOSE 80 443 From 4bb1fe281d1405a5acfae65c1ba0d164751301e2 Mon Sep 17 00:00:00 2001 From: Ivan Djurdjevac Date: Sat, 16 Jan 2021 08:34:05 +0100 Subject: [PATCH 053/372] Configuration to switch between composer version 1 or 2 --- docker-compose.yml | 1 + env-example | 1 + workspace/Dockerfile | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 45791f82..9652f941 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -110,6 +110,7 @@ services: - INSTALL_OCI8=${WORKSPACE_INSTALL_OCI8} - INSTALL_V8JS=${WORKSPACE_INSTALL_V8JS} - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL} + - COMPOSER_VERSION=${WORKSPACE_COMPOSER_VERSION} - COMPOSER_AUTH=${WORKSPACE_COMPOSER_AUTH} - COMPOSER_REPO_PACKAGIST=${WORKSPACE_COMPOSER_REPO_PACKAGIST} - INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH} diff --git a/env-example b/env-example index 0585bfda..95911015 100644 --- a/env-example +++ b/env-example @@ -100,6 +100,7 @@ SHELL_OH_MY_ZSH_ALIASES=false WORKSPACE_BASE_IMAGE_TAG_PREFIX=latest WORKSPACE_COMPOSER_GLOBAL_INSTALL=true +WORKSPACE_COMPOSER_VERSION=2 WORKSPACE_COMPOSER_AUTH=false WORKSPACE_COMPOSER_REPO_PACKAGIST= WORKSPACE_NVM_NODEJS_ORG_MIRROR= diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 43e76871..e6bd977f 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -147,6 +147,11 @@ RUN chown -R laradock:laradock /home/laradock/.composer RUN echo "" >> ~/.bashrc && \ echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc +# Update composer +ARG COMPOSER_VERSION=2 +ENV COMPOSER_VERSION ${COMPOSER_VERSION} +RUN composer self-update --${COMPOSER_VERSION} + USER laradock # Check if global install need to be ran From de70beae47fe18a65827561e424b7538782919a5 Mon Sep 17 00:00:00 2001 From: Daryle Dale De Silva Date: Mon, 18 Jan 2021 12:02:27 +0800 Subject: [PATCH 054/372] support xdebug 3 --- php-fpm/Dockerfile | 31 +++++++++++++++++++++++-------- workspace/Dockerfile | 39 +++++++++++++++++++++++++++------------ 2 files changed, 50 insertions(+), 20 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index e4db8856..76dfeb80 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -187,13 +187,17 @@ ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install xdebug-2.5.5; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install xdebug-3.0.0; \ else \ - if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - pecl install xdebug-2.9.0; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install xdebug-2.5.5; \ else \ - pecl install xdebug-2.9.8; \ + if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + pecl install xdebug-2.9.0; \ + else \ + pecl install xdebug-2.9.8; \ + fi \ fi \ fi && \ docker-php-ext-enable xdebug \ @@ -202,9 +206,20 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Copy xdebug configuration for remote debugging COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini -RUN sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /usr/local/etc/php/conf.d/xdebug.ini && \ - sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /usr/local/etc/php/conf.d/xdebug.ini && \ - sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /usr/local/etc/php/conf.d/xdebug.ini +RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + sed -i "s/xdebug.remote_host=/xdebug.client_host=/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_connect_back=0/xdebug.discover_client_host=false/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_port=9000/xdebug.client_port=9003/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.profiler_enable=0/; xdebug.profiler_enable=0/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.profiler_output_dir=/xdebug.output_dir=/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_mode=req/; xdebug.remote_mode=req/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_autostart=0/xdebug.start_with_request=yes/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_enable=0/xdebug.mode=debug/" /usr/local/etc/php/conf.d/xdebug.ini \ +;else \ + sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /usr/local/etc/php/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /usr/local/etc/php/conf.d/xdebug.ini \ +;fi +RUN sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /usr/local/etc/php/conf.d/xdebug.ini ########################################################################### # pcov: diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 43e76871..ced4721b 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -359,20 +359,24 @@ ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install xdebug-2.5.5; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install xdebug-3.0.0; \ else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - pecl install xdebug-2.9.0; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install xdebug-2.5.5; \ else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ - pecl install xdebug-2.9.8; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + pecl install xdebug-2.9.0; \ else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ pecl install xdebug-2.9.8; \ else \ - #pecl install xdebug; \ - echo "xDebug 3 required, not supported."; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + pecl install xdebug-2.9.8; \ + else \ + #pecl install xdebug; \ + echo "xDebug 3 required, not supported."; \ + fi \ fi \ fi \ fi \ @@ -383,9 +387,20 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # ADD for REMOTE debugging COPY ./xdebug.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini -RUN sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ - sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ - sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini +RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + sed -i "s/xdebug.remote_host=/xdebug.client_host=/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_connect_back=0/xdebug.discover_client_host=false/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_port=9000/xdebug.client_port=9003/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.profiler_enable=0/; xdebug.profiler_enable=0/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.profiler_output_dir=/xdebug.output_dir=/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_mode=req/; xdebug.remote_mode=req/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_autostart=0/xdebug.start_with_request=yes/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_enable=0/xdebug.mode=debug/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini \ +;else \ + sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ + sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini \ +;fi +RUN sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini ########################################################################### # pcov: From ea9e9f81561e41ab5005afa3b16f40a6bd394bfd Mon Sep 17 00:00:00 2001 From: Daryle Dale De Silva Date: Tue, 19 Jan 2021 12:27:58 +0800 Subject: [PATCH 055/372] fix "Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port) :-(" --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 45791f82..d19ba6a5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -270,6 +270,8 @@ services: - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - docker-in-docker:/certs/client + ports: + - "9003:9003" expose: - "9000" extra_hosts: From 4391286a2b3b4f4741fd3b74ba399fa6ff242607 Mon Sep 17 00:00:00 2001 From: Angelo Biscola Date: Tue, 2 Feb 2021 15:20:48 -0300 Subject: [PATCH 056/372] Fix problem to install pdo_sqlsrv Dependency fix for microsoft repository configuration --- php-fpm/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 76dfeb80..d15901fb 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -39,6 +39,7 @@ RUN set -xe; \ pecl channel-update pecl.php.net && \ apt-get install -yqq \ apt-utils \ + gnupg2 \ # #-------------------------------------------------------------------------- # Mandatory Software's Installation From 1a632c82d081d7d2903a3fe014b5dd09d3ec39be Mon Sep 17 00:00:00 2001 From: JohannesM Date: Thu, 4 Feb 2021 23:23:44 +0100 Subject: [PATCH 057/372] adding --no-log-init for large UID Fixing docker build crash with high user id. see https://github.com/moby/moby/issues/5419 --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index ced4721b..6222f545 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -61,7 +61,7 @@ RUN set -xe; \ apt-get update -yqq && \ pecl channel-update pecl.php.net && \ groupadd -g ${PGID} laradock && \ - useradd -u ${PUID} -g laradock -m laradock -G docker_env && \ + useradd -l -u ${PUID} -g laradock -m laradock -G docker_env && \ usermod -p "*" laradock -s /bin/bash && \ apt-get install -yqq \ apt-utils \ From a6950d2e6fda085210cc35abfd9dd65e42cf8eef Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 9 Feb 2021 13:13:14 +0100 Subject: [PATCH 058/372] Add variable to install docker client --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index f73640b8..346c215c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -141,6 +141,7 @@ services: - INSTALL_SUPERVISOR=${WORKSPACE_INSTALL_SUPERVISOR} - INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG} - INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL} + - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} - http_proxy - https_proxy - no_proxy @@ -228,6 +229,7 @@ services: - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} - LOCALE=${PHP_FPM_DEFAULT_LOCALE} + - INSTALL_DOCKER_CLIENT=${PHP_FPM_INSTALL_DOCKER_CLIENT} - http_proxy - https_proxy - no_proxy From ffc36b7ec82960a3f4614416758489f61f70d0af Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 9 Feb 2021 13:14:27 +0100 Subject: [PATCH 059/372] Add variable to install docker client --- env-example | 2 ++ 1 file changed, 2 insertions(+) diff --git a/env-example b/env-example index e6cb581a..e5369ca8 100644 --- a/env-example +++ b/env-example @@ -160,6 +160,7 @@ WORKSPACE_INSTALL_GNU_PARALLEL=false WORKSPACE_INSTALL_AST=true WORKSPACE_AST_VERSION=1.0.3 WORKSPACE_INSTALL_GIT_PROMPT=false +WORKSPACE_INSTALL_DOCKER_CLIENT=false ### PHP_FPM ############################################### @@ -215,6 +216,7 @@ 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_INSTALL_DOCKER_CLIENT=false PHP_FPM_DEFAULT_LOCALE=POSIX PHP_FPM_PUID=1000 From 88b4050c799fd5a6ddd2f2f9c3e5d27c26b233f8 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 9 Feb 2021 13:17:08 +0100 Subject: [PATCH 060/372] Add code to install docker client into docker image --- php-fpm/Dockerfile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index b3246ed9..be4762f4 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -837,6 +837,21 @@ RUN if [ ${INSTALL_SSHPASS} = true ]; then \ apt-get -y install sshpass \ ;fi +########################################################################### +# Docker Client: +########################################################################### + +USER root + +ARG INSTALL_DOCKER_CLIENT=false + +RUN if [ ${INSTALL_DOCKER_CLIENT} = true ]; then \ + curl -sS https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz -o /tmp/docker.tar.gz && \ + tar -xzf /tmp/docker.tar.gz -C /tmp/ && \ + cp /tmp/docker/docker* /usr/local/bin && \ + chmod +x /usr/local/bin/docker* \ +;fi + ########################################################################### # FFMPEG: ########################################################################### From a00364bf01af7b1c39f4007f79afc11b76bcb7a4 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 9 Feb 2021 13:17:58 +0100 Subject: [PATCH 061/372] Add code to install docker client into docker image --- workspace/Dockerfile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 267cc16d..e67a5a69 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1208,6 +1208,21 @@ RUN if [ ${INSTALL_SSHPASS} = true ]; then \ apt-get -y install sshpass \ ;fi +########################################################################### +# Docker Client: +########################################################################### + +USER root + +ARG INSTALL_DOCKER_CLIENT=false + +RUN if [ ${INSTALL_DOCKER_CLIENT} = true ]; then \ + curl -sS https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz -o /tmp/docker.tar.gz && \ + tar -xzf /tmp/docker.tar.gz -C /tmp/ && \ + cp /tmp/docker/docker* /usr/local/bin && \ + chmod +x /usr/local/bin/docker* \ +;fi + ########################################################################### # YAML: extension for PHP-CLI ########################################################################### From 99345ceb1c9c0b22c02e10dffc7b10384cbd5b3d Mon Sep 17 00:00:00 2001 From: trilogo-lordee Date: Wed, 10 Feb 2021 14:25:32 +0200 Subject: [PATCH 062/372] moving php.ini variables for phpmyadmin to env-example --- docker-compose.yml | 3 +++ env-example | 3 +++ phpmyadmin/Dockerfile | 5 ----- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d19ba6a5..d27da7cf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -864,6 +864,9 @@ services: - MYSQL_USER=${PMA_USER} - MYSQL_PASSWORD=${PMA_PASSWORD} - MYSQL_ROOT_PASSWORD=${PMA_ROOT_PASSWORD} + - MAX_EXECUTION_TIME=${PMA_MAX_EXECUTION_TIME} + - MEMORY_LIMIT=${PMA_MEMORY_LIMIT} + - UPLOAD_LIMIT=${PMA_UPLOAD_LIMIT} ports: - "${PMA_PORT}:80" depends_on: diff --git a/env-example b/env-example index 0585bfda..963c90f8 100644 --- a/env-example +++ b/env-example @@ -483,6 +483,9 @@ PMA_USER=default PMA_PASSWORD=secret PMA_ROOT_PASSWORD=secret PMA_PORT=8081 +PMA_MAX_EXECUTION_TIME=600 +PMA_MEMORY_LIMIT=256M +PMA_UPLOAD_LIMIT=2G ### MAILDEV ############################################### diff --git a/phpmyadmin/Dockerfile b/phpmyadmin/Dockerfile index ded59baf..75812d9b 100644 --- a/phpmyadmin/Dockerfile +++ b/phpmyadmin/Dockerfile @@ -5,10 +5,5 @@ 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 From ed649993cad6e1c379868e1657557f77c7fca1a4 Mon Sep 17 00:00:00 2001 From: Patrick Kivits Date: Wed, 27 Jan 2021 08:24:44 +0100 Subject: [PATCH 063/372] Add PHP Decimal extension support --- DOCUMENTATION/content/documentation/index.md | 14 ++++++++++++++ docker-compose.yml | 2 ++ env-example | 2 ++ php-fpm/Dockerfile | 15 +++++++++++++++ workspace/Dockerfile | 18 ++++++++++++++++++ 5 files changed, 51 insertions(+) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index b31ce459..8fb29506 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -2291,6 +2291,20 @@ AST exposes the abstract syntax tree generated by PHP 7+. This extension is requ **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. +
+ +## Install PHP Decimal extension +The PHP Decimal extension adds support for correctly-rounded, arbitrary-precision decimal floating point arithmetic. Applications that rely on accurate numbers (ie. money, measurements, or mathematics) can use Decimal instead of float or string to represent numerical values. + +For more information visit the [PHP Decimal website](https://php-decimal.io). + +2 - Search for the `WORKSPACE_INSTALL_PHPDECIMAL` argument under the Workspace Container + +2 - Search for the `PHP_FPM_INSTALL_PHPDECIMAL` argument under the PHP-FPM container + +3 - Set it to `true` + +4 - Re-build the container `docker-compose build workspace php-fpm`
diff --git a/docker-compose.yml b/docker-compose.yml index 37b597d4..c9a79635 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -163,6 +163,7 @@ services: - INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL} - INSTALL_LNAV=${WORKSPACE_INSTALL_LNAV} - INSTALL_PROTOC=${WORKSPACE_INSTALL_PROTOC} + - INSTALL_PHPDECIMAL=${WORKSPACE_INSTALL_PHPDECIMAL} - PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION} - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} - http_proxy @@ -258,6 +259,7 @@ services: - INSTALL_WKHTMLTOPDF=${PHP_FPM_INSTALL_WKHTMLTOPDF} - INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF} - INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC} + - INSTALL_PHPDECIMAL=${PHP_FPM_INSTALL_PHPDECIMAL} - DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} diff --git a/env-example b/env-example index cf64e758..6888b570 100644 --- a/env-example +++ b/env-example @@ -195,6 +195,7 @@ WORKSPACE_INSTALL_GIT_PROMPT=false WORKSPACE_INSTALL_DOCKER_CLIENT=false WORKSPACE_INSTALL_LNAV=false WORKSPACE_INSTALL_PROTOC=false +WORKSPACE_INSTALL_PHPDECIMAL=false WORKSPACE_PROTOC_VERSION=latest ### PHP_FPM ############################################### @@ -252,6 +253,7 @@ PHP_FPM_INSTALL_PING=false PHP_FPM_INSTALL_SSHPASS=false PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_WKHTMLTOPDF=false +PHP_FPM_INSTALL_PHPDECIMAL=false PHP_FPM_FFMPEG=false PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index a1e7051a..86215b14 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -977,6 +977,21 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \ docker-php-ext-install xmlrpc \ ;fi +########################################################################### +# PHP DECIMAL: +########################################################################### + +USER root + +ARG INSTALL_PHPDECIMAL=false + +RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ + apt-get update -yqq \ + && apt-get install -y libmpdec-dev \ + && pecl install decimal \ + && docker-php-ext-enable decimal \ +;fi + ########################################################################### # New Relic for PHP: ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index c6c51054..ffad2d90 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1601,6 +1601,24 @@ RUN if [ ${SHELL_OH_MY_ZSH} = true ]; then \ USER root + +########################################################################### +# PHP DECIMAL: +########################################################################### + +USER root + +ARG INSTALL_PHPDECIMAL=false + +RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ + apt-get update -yqq \ + && apt-get install -y libmpdec-dev \ + && pecl install decimal \ + && echo "extension=decimal.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini \ + && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-decimal.ini \ + && php -m | grep -q 'decimal' \ +;fi + # #-------------------------------------------------------------------------- # Final Touch From fd203fba044337970bd45df68c143623a3041e49 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Thu, 25 Feb 2021 15:13:27 +0100 Subject: [PATCH 064/372] add custom sponsor --- .../custom-sponsors/casinopilotti.png | Bin 0 -> 8990 bytes DOCUMENTATION/content/introduction/index.md | 13 +++++++------ README.md | 7 ++++--- 3 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 .github/home-page-images/custom-sponsors/casinopilotti.png diff --git a/.github/home-page-images/custom-sponsors/casinopilotti.png b/.github/home-page-images/custom-sponsors/casinopilotti.png new file mode 100644 index 0000000000000000000000000000000000000000..09f3bd4e14810e28e017b89665bf68598a5cd9a0 GIT binary patch literal 8990 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 CxyO?L literal 0 HcmV?d00001 diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 562402a2..4466e3ab 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -22,12 +22,12 @@ It supports a variety of common services, all pre-configured to provide a ready - Run your own stack: Memcached, HHVM, RabbitMQ... - Each software runs on its own container: PHP-FPM, NGINX, PHP-CLI... - Easy to customize any container, with simple edits to the `Dockerfile`. -- All Images extends from an official base Image. (Trusted base Images). +- All Images extend from an official base Image. (Trusted base Images). - Pre-configured NGINX to host any code at your root directory. - Can use Laradock per project, or single Laradock for all projects. - Easy to install/remove software's in Containers using environment variables. -- Clean and well structured Dockerfiles (`Dockerfile`). -- Latest version of the Docker Compose file (`docker-compose`). +- Clean and well-structured Dockerfiles (`Dockerfile`). +- The Latest version of the Docker Compose file (`docker-compose`). - Everything is visible and editable. - Fast Images Builds. @@ -385,7 +385,10 @@ Sponsoring is an act of giving in a different fashion. 🌱

-We thank bestonlinecasino.com for their support +CasinoPilotti +We thank bestonlinecasino.com for their support +Apiato Build PHP API's faster + @@ -421,8 +424,6 @@ Sponsoring is an act of giving in a different fashion. 🌱

-Apiato Build API's faster. - diff --git a/README.md b/README.md index 37f20dc1..8380be3d 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,10 @@ Sponsoring is an act of giving in a different fashion. 🌱

-We thank bestonlinecasino.com for their support +CasinoPilotti +We thank bestonlinecasino.com for their support +Apiato Build PHP API's faster + @@ -227,8 +230,6 @@ Sponsoring is an act of giving in a different fashion. 🌱

-Apiato Build API's faster. - From f35d5a7f10b080f5c64c36c4a1e8c923608f4eb9 Mon Sep 17 00:00:00 2001 From: Patrick Kivits Date: Tue, 2 Mar 2021 10:20:06 +0100 Subject: [PATCH 065/372] Install workspace redis with pecl --- workspace/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index ffad2d90..0bed95e7 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -559,8 +559,9 @@ RUN if [ ${INSTALL_GEARMAN} = true ]; then \ ARG INSTALL_PHPREDIS=false RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ - apt-get update -yqq && \ - apt-get install -yqq php-redis \ + pecl -q install -o -f redis && \ + echo "extension=redis.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/redis.ini && \ + phpenmod redis \ ;fi ########################################################################### From c1f76443b16f99486826efd2ea8803b30d00cc69 Mon Sep 17 00:00:00 2001 From: Erfan <37825504+erfantkerfan@users.noreply.github.com> Date: Thu, 4 Mar 2021 17:26:10 +0330 Subject: [PATCH 066/372] allow larage file imports --- mariadb/my.cnf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mariadb/my.cnf b/mariadb/my.cnf index f14f2690..fd51f7ea 100644 --- a/mariadb/my.cnf +++ b/mariadb/my.cnf @@ -5,3 +5,6 @@ # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html +[mysqld] +innodb_log_file_size = 4048M +innodb_strict_mode = 0 From 47c89787e60b475037e3cf2bde4ec4bace215cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Lado=20Cruz?= Date: Wed, 10 Mar 2021 11:55:09 +0000 Subject: [PATCH 067/372] Fix Redis Problem issue #2851 --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index c6c51054..1edc0834 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -560,7 +560,7 @@ ARG INSTALL_PHPREDIS=false RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ apt-get update -yqq && \ - apt-get install -yqq php-redis \ + apt-get install -yqq php${LARADOCK_PHP_VERSION}-redis \ ;fi ########################################################################### From 247ce67097066fe9126512b9ac585729abfe1233 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Fri, 12 Mar 2021 02:00:10 +0200 Subject: [PATCH 068/372] fix(AST extension): bump version due to php 8.0 support According to the changelog of the extension version should be bumped to support PHP 8.0 Closes 2859 --- env-example | 2 +- workspace/Dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/env-example b/env-example index cf64e758..6a8d9efd 100644 --- a/env-example +++ b/env-example @@ -185,7 +185,7 @@ WORKSPACE_INSTALL_AUDIOWAVEFORM=false WORKSPACE_INSTALL_WKHTMLTOPDF=false WORKSPACE_INSTALL_GNU_PARALLEL=false WORKSPACE_INSTALL_AST=true -WORKSPACE_AST_VERSION=1.0.3 +WORKSPACE_AST_VERSION=1.0.10 WORKSPACE_BROWSERSYNC_HOST_PORT=3000 WORKSPACE_BROWSERSYNC_UI_HOST_PORT=3001 WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080 diff --git a/workspace/Dockerfile b/workspace/Dockerfile index c6c51054..23b196ee 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -635,7 +635,7 @@ RUN if [ ${INSTALL_INOTIFY} = true ]; then \ ########################################################################### ARG INSTALL_AST=false -ARG AST_VERSION=1.0.3 +ARG AST_VERSION=1.0.10 ENV AST_VERSION ${AST_VERSION} RUN if [ ${INSTALL_AST} = true ]; then \ @@ -1428,7 +1428,7 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ libx11-dev \ libjpeg62 \ libxtst6 \ - fontconfig \ + fontconfig \ libjpeg-turbo8-dev \ xfonts-base \ xfonts-75dpi \ From 67cc72da622fa340ff24971b2f7e496e5ca91bad Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Fri, 12 Mar 2021 03:20:32 +0200 Subject: [PATCH 069/372] fix(IMAGEMAGICK extension): implement building extension for PHP 8.0 from source We need to build imagemagick extension from sources due the latest version, that supports PHP 8.0 has not been released to PECL. Closes #2861 --- docker-compose.yml | 8 ++++++-- env-example | 4 ++++ laravel-horizon/Dockerfile | 20 +++++++++++++++++++- php-fpm/Dockerfile | 24 +++++++++++++++++++++--- php-worker/Dockerfile | 30 +++++++++++++++++++++++++----- workspace/Dockerfile | 25 +++++++++++++++++++++++-- 6 files changed, 98 insertions(+), 13 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 37b597d4..e3a247c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -93,7 +93,7 @@ services: - NVM_NODEJS_ORG_MIRROR=${WORKSPACE_NVM_NODEJS_ORG_MIRROR} - INSTALL_NODE=${WORKSPACE_INSTALL_NODE} - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY} - - NPM_FETCH_RETRIES=${WORKSPACE_NPM_FETCH_RETRIES} + - NPM_FETCH_RETRIES=${WORKSPACE_NPM_FETCH_RETRIES} - NPM_FETCH_RETRY_FACTOR=${WORKSPACE_NPM_FETCH_RETRY_FACTOR} - NPM_FETCH_RETRY_MINTIMEOUT=${WORKSPACE_NPM_FETCH_RETRY_MINTIMEOUT} - NPM_FETCH_RETRY_MAXTIMEOUT=${WORKSPACE_NPM_FETCH_RETRY_MAXTIMEOUT} @@ -152,6 +152,7 @@ services: - YARN_VERSION=${WORKSPACE_YARN_VERSION} - DRUSH_VERSION=${WORKSPACE_DRUSH_VERSION} - AST_VERSION=${WORKSPACE_AST_VERSION} + - IMAGEMAGICK_VERSION=${WORKSPACE_IMAGEMAGICK_VERSION} - TZ=${WORKSPACE_TIMEZONE} - BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID} - BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN} @@ -261,6 +262,7 @@ services: - DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} + - IMAGEMAGICK_VERSION=${PHP_FPM_IMAGEMAGICK_VERSION} - LOCALE=${PHP_FPM_DEFAULT_LOCALE} - PHP_FPM_NEW_RELIC=${PHP_FPM_NEW_RELIC} - PHP_FPM_NEW_RELIC_KEY=${PHP_FPM_NEW_RELIC_KEY} @@ -325,6 +327,7 @@ services: - INSTALL_XMLRPC=${PHP_WORKER_INSTALL_XMLRPC} - PUID=${PHP_WORKER_PUID} - PGID=${PHP_WORKER_PGID} + - IMAGEMAGICK_VERSION=${PHP_WORKER_IMAGEMAGICK_VERSION} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - ./php-worker/supervisord.d:/etc/supervisord.d @@ -358,6 +361,7 @@ services: - INSTALL_AUDIOWAVEFORM=${LARAVEL_HORIZON_INSTALL_AUDIOWAVEFORM} - PUID=${LARAVEL_HORIZON_PUID} - PGID=${LARAVEL_HORIZON_PGID} + - IMAGEMAGICK_VERSION=${LARAVEL_HORIZON_IMAGEMAGICK_VERSION} volumes: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} - ./laravel-horizon/supervisord.d:/etc/supervisord.d @@ -1892,7 +1896,7 @@ services: - "3000:3000" container_name: react stdin_open: true - environment: + environment: - CHOKIDAR_USEPOLLING=true networks: - frontend diff --git a/env-example b/env-example index cf64e758..54a60e96 100644 --- a/env-example +++ b/env-example @@ -157,6 +157,7 @@ WORKSPACE_INSTALL_POWERLINE=false WORKSPACE_INSTALL_SUPERVISOR=false WORKSPACE_INSTALL_IMAGE_OPTIMIZERS=false WORKSPACE_INSTALL_IMAGEMAGICK=false +WORKSPACE_IMAGEMAGICK_VERSION=latest WORKSPACE_INSTALL_TERRAFORM=false WORKSPACE_INSTALL_DUSK_DEPS=false WORKSPACE_INSTALL_PG_CLIENT=false @@ -204,6 +205,7 @@ PHP_FPM_INSTALL_BCMATH=true PHP_FPM_INSTALL_MYSQLI=true PHP_FPM_INSTALL_INTL=true PHP_FPM_INSTALL_IMAGEMAGICK=true +PHP_FPM_IMAGEMAGICK_VERSION=latest PHP_FPM_INSTALL_OPCACHE=true PHP_FPM_INSTALL_IMAGE_OPTIMIZERS=true PHP_FPM_INSTALL_PHPREDIS=true @@ -272,6 +274,7 @@ PHP_FPM_NEW_RELIC_APP_NAME=app_name PHP_WORKER_INSTALL_BZ2=false PHP_WORKER_INSTALL_GD=false PHP_WORKER_INSTALL_IMAGEMAGICK=false +PHP_WORKER_IMAGEMAGICK_VERSION=latest PHP_WORKER_INSTALL_GMP=false PHP_WORKER_INSTALL_PGSQL=false PHP_WORKER_INSTALL_BCMATH=false @@ -312,6 +315,7 @@ LARAVEL_HORIZON_INSTALL_BZ2=false LARAVEL_HORIZON_INSTALL_GD=false LARAVEL_HORIZON_INSTALL_GMP=false LARAVEL_HORIZON_INSTALL_IMAGEMAGICK=false +LARAVEL_HORIZON_IMAGEMAGICK_VERSION=latest LARAVEL_HORIZON_INSTALL_SOCKETS=false LARAVEL_HORIZON_INSTALL_YAML=false LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE=false diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 0066910f..a05137eb 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -74,10 +74,28 @@ RUN if [ ${INSTALL_GMP} = true ]; then \ #Install ImageMagick package: ARG INSTALL_IMAGEMAGICK=false +ARG IMAGEMAGICK_VERSION=latest +ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN set -eux; \ if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ apk add --update --no-cache imagemagick-dev; \ - pecl install imagick; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + apk add --update --no-cache git && \ + cd /tmp && \ + if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ + git clone https://github.com/Imagick/imagick; \ + else \ + git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ + fi && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && \ + make install && \ + rm -r /tmp/imagick; \ + else \ + pecl install imagick; \ + fi && \ docker-php-ext-enable imagick; \ php -m | grep -q 'imagick'; \ fi diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index a1e7051a..2d8d67ef 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -343,7 +343,7 @@ RUN if [ ${INSTALL_XHPROF} = true ]; then \ # 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 \ + else \ curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \ fi \ && mkdir -p xhprof \ @@ -684,10 +684,28 @@ RUN if [ ${INSTALL_IMAGE_OPTIMIZERS} = true ]; then \ USER root ARG INSTALL_IMAGEMAGICK=false +ARG IMAGEMAGICK_VERSION=latest +ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ apt-get install -y libmagickwand-dev imagemagick && \ - pecl install imagick && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + apt-get install -y git && \ + cd /tmp && \ + if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ + git clone https://github.com/Imagick/imagick; \ + else \ + git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ + fi && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && \ + make install && \ + rm -r /tmp/imagick; \ + else \ + pecl install imagick; \ + fi && \ docker-php-ext-enable imagick \ ;fi @@ -928,7 +946,7 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ libx11-dev \ libjpeg62 \ libxtst6 \ - fontconfig \ + fontconfig \ libjpeg62-turbo \ xfonts-base \ xfonts-75dpi \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 64f08298..dcc82458 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -69,11 +69,31 @@ RUN if [ ${INSTALL_GD} = true ]; then \ #Install ImageMagick: ARG INSTALL_IMAGEMAGICK=false -RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apk add --update imagemagick-dev imagemagick; \ - pecl install imagick; \ - docker-php-ext-enable imagick \ -;fi +ARG IMAGEMAGICK_VERSION=latest +ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} +RUN set -eux; \ + if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ + apk add --update --no-cache imagemagick-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + apk add --update --no-cache git && \ + cd /tmp && \ + if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ + git clone https://github.com/Imagick/imagick; \ + else \ + git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ + fi && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && \ + make install && \ + rm -r /tmp/imagick; \ + else \ + pecl install imagick; \ + fi && \ + docker-php-ext-enable imagick; \ + php -m | grep -q 'imagick'; \ + fi #Install GMP package: ARG INSTALL_GMP=false diff --git a/workspace/Dockerfile b/workspace/Dockerfile index c6c51054..91126641 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1200,9 +1200,30 @@ USER laradock USER root ARG INSTALL_IMAGEMAGICK=false +ARG IMAGEMAGICK_VERSION=latest +ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get install -y imagemagick php-imagick \ + apt-get install -y libmagickwand-dev imagemagick && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + apt-get install -y git && \ + cd /tmp && \ + if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ + git clone https://github.com/Imagick/imagick; \ + else \ + git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ + fi && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && \ + make install && \ + rm -r /tmp/imagick; \ + else \ + pecl install imagick; \ + fi && \ + echo "extension=imagick.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/imagick.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/imagick.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-imagick.ini \ ;fi ########################################################################### @@ -1428,7 +1449,7 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ libx11-dev \ libjpeg62 \ libxtst6 \ - fontconfig \ + fontconfig \ libjpeg-turbo8-dev \ xfonts-base \ xfonts-75dpi \ From f3816a99ab1fd5514a98714daebda9f1d0357d79 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Fri, 12 Mar 2021 03:38:25 +0200 Subject: [PATCH 070/372] ci(PHP 8.0): add CI processes for PHP 8.0 CI environment for the PHP 8.0 should be implemented. Closes #2863 --- .github/workflows/main-ci.yml | 2 +- .travis.yml | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index e01d283a..90a692ac 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php_version: ["7.1", "7.2", "7.3", "7.4"] + php_version: ["7.1", "7.2", "7.3", "7.4", "8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 diff --git a/.travis.yml b/.travis.yml index 4b681054..65470f0d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ env: - PHP_VERSION=7.2 BUILD_SERVICE=workspace - PHP_VERSION=7.3 BUILD_SERVICE=workspace - PHP_VERSION=7.4 BUILD_SERVICE=workspace + - PHP_VERSION=8.0 BUILD_SERVICE=workspace - PHP_VERSION=5.6 BUILD_SERVICE=php-fpm - PHP_VERSION=7.0 BUILD_SERVICE=php-fpm @@ -20,6 +21,7 @@ env: - 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=8.0 BUILD_SERVICE=php-fpm - PHP_VERSION=hhvm BUILD_SERVICE=hhvm @@ -29,12 +31,14 @@ env: - PHP_VERSION=7.2 BUILD_SERVICE=php-worker - PHP_VERSION=7.3 BUILD_SERVICE=php-worker - PHP_VERSION=7.4 BUILD_SERVICE=php-worker + - PHP_VERSION=8.0 BUILD_SERVICE=php-worker - PHP_VERSION=7.0 BUILD_SERVICE=laravel-horizon - PHP_VERSION=7.1 BUILD_SERVICE=laravel-horizon - PHP_VERSION=7.2 BUILD_SERVICE=laravel-horizon - PHP_VERSION=7.3 BUILD_SERVICE=laravel-horizon - PHP_VERSION=7.4 BUILD_SERVICE=laravel-horizon + - PHP_VERSION=8.0 BUILD_SERVICE=laravel-horizon - PHP_VERSION=NA BUILD_SERVICE=solr - PHP_VERSION=NA BUILD_SERVICE="mssql rethinkdb aerospike" From f2af78ecac4ed11ab891b7dc0b79912bd541eec6 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Fri, 12 Mar 2021 15:01:44 +0100 Subject: [PATCH 071/372] Update Dockerfile --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 2d8d67ef..62da5562 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -688,7 +688,7 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get install -y libmagickwand-dev imagemagick && \ + apt-get update -yqq && apt-get install -y libmagickwand-dev imagemagick && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ apt-get install -y git && \ cd /tmp && \ From f1fd051f1f6cc89d1487c1c46a29f91bf4dca79c Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 13 Mar 2021 00:55:03 +0200 Subject: [PATCH 072/372] fix(drush package): bump version to support PHP 8.0 Bump a version of the package to support a correct build of the workspace for PHP 8.0 Closes #2869 --- env-example | 2 +- workspace/Dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/env-example b/env-example index aebc0b6e..bf0f88a5 100644 --- a/env-example +++ b/env-example @@ -138,7 +138,7 @@ WORKSPACE_INSTALL_CASSANDRA=false WORKSPACE_INSTALL_GEARMAN=false WORKSPACE_INSTALL_MSSQL=false WORKSPACE_INSTALL_DRUSH=false -WORKSPACE_DRUSH_VERSION=8.1.17 +WORKSPACE_DRUSH_VERSION=8.4.6 WORKSPACE_INSTALL_DRUPAL_CONSOLE=false WORKSPACE_INSTALL_WP_CLI=false WORKSPACE_INSTALL_AEROSPIKE=false diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1225fc85..81873a54 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -209,7 +209,7 @@ RUN chmod -R 644 /etc/cron.d USER root -RUN apt-get update -yqq +RUN apt-get -yqq update ########################################################################### # Drush: @@ -225,7 +225,7 @@ ARG DRUSH_VERSION ENV DRUSH_VERSION ${DRUSH_VERSION} RUN if [ ${INSTALL_DRUSH} = true ]; then \ - apt-get -y install mysql-client && \ + apt-get -qq -y install mysql-client && \ # Install Drush with the phar file. curl -fsSL -o /usr/local/bin/drush https://github.com/drush-ops/drush/releases/download/${DRUSH_VERSION}/drush.phar | bash && \ chmod +x /usr/local/bin/drush && \ From 50fce4c74bd6b3535ba8035d09f26cd8a359c61f Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 13 Mar 2021 01:39:22 +0200 Subject: [PATCH 073/372] fix(amqp extension): hard-code the version for PHP 8.0 The version could be hard-coded in the Dockerfile due to no ability to build workspace image w/o problems from scratch for different PHP versions. Closes #2871 --- workspace/Dockerfile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1225fc85..cb6c7024 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -503,8 +503,12 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ - apt-get install librabbitmq-dev -y && \ - pecl -q install amqp && \ + apt-get install -yqq librabbitmq-dev && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + printf "\n" | pecl install amqp-1.11.0beta; \ + else \ + printf "\n" | pecl install amqp; \ + fi && \ echo "extension=amqp.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/amqp.ini && \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/amqp.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-amqp.ini \ ;fi From 6ff934aef26a660cac1190a52ee70209c27902a5 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 13 Mar 2021 03:34:25 +0200 Subject: [PATCH 074/372] fix(inotify extension): update installed version of the extension There is a typo which should be fixed. Closes #2867 --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1225fc85..bef655b6 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -619,7 +619,7 @@ RUN if [ ${INSTALL_LIBPNG} = true ]; then \ ARG INSTALL_INOTIFY=false RUN if [ ${INSTALL_INOTIFY} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl -q install inotify-0.1.6 && \ echo "extension=inotify.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini && \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-inotify.ini \ From 0c085f4984292323c436c18c51e45a85ad012917 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 14 Mar 2021 15:17:38 +0200 Subject: [PATCH 075/372] feat(cassandra extension): upgrade version of cassandra and avoid installation for PHP 8.0 Cassandra should not be installed for PHP 8.0 due to unsupported PHP driver. See the issue's references. Closes #2876 --- workspace/Dockerfile | 48 ++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1225fc85..e76643d7 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -516,28 +516,32 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \ ARG INSTALL_CASSANDRA=false RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ - apt-get install libgmp-dev -y && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.28.0/libuv1-dev_1.28.0-1_amd64.deb -o libuv1-dev.deb && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.28.0/libuv1_1.28.0-1_amd64.deb -o libuv1.deb && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.12.0/cassandra-cpp-driver-dev_2.12.0-1_amd64.deb -o cassandra-cpp-driver-dev.deb && \ - curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.12.0/cassandra-cpp-driver_2.12.0-1_amd64.deb -o cassandra-cpp-driver.deb && \ - dpkg -i libuv1.deb && \ - dpkg -i libuv1-dev.deb && \ - dpkg -i cassandra-cpp-driver.deb && \ - dpkg -i cassandra-cpp-driver-dev.deb && \ - rm libuv1.deb libuv1-dev.deb cassandra-cpp-driver-dev.deb cassandra-cpp-driver.deb && \ - cd /usr/src && \ - git clone https://github.com/datastax/php-driver.git && \ - cd /usr/src/php-driver/ext && \ - phpize && \ - mkdir /usr/src/php-driver/build && \ - cd /usr/src/php-driver/build && \ - ../ext/configure > /dev/null && \ - make clean >/dev/null && \ - make >/dev/null 2>&1 && \ - make install && \ - echo "extension=cassandra.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-cassandra.ini \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ + else \ + apt-get install libgmp-dev -yqq && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1-dev_1.35.0-1_amd64.deb -o libuv1-dev.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1_1.35.0-1_amd64.deb -o libuv1.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver-dev_2.16.0-1_amd64.deb -o cassandra-cpp-driver-dev.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver_2.16.0-1_amd64.deb -o cassandra-cpp-driver.deb && \ + dpkg -i libuv1.deb && \ + dpkg -i libuv1-dev.deb && \ + dpkg -i cassandra-cpp-driver.deb && \ + dpkg -i cassandra-cpp-driver-dev.deb && \ + rm libuv1.deb libuv1-dev.deb cassandra-cpp-driver-dev.deb cassandra-cpp-driver.deb && \ + cd /usr/src && \ + git clone https://github.com/datastax/php-driver.git && \ + cd /usr/src/php-driver/ext && \ + phpize && \ + mkdir /usr/src/php-driver/build && \ + cd /usr/src/php-driver/build && \ + ../ext/configure > /dev/null && \ + make clean >/dev/null && \ + make >/dev/null 2>&1 && \ + make install && \ + echo "extension=cassandra.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-cassandra.ini; \ + fi \ ;fi ########################################################################### From 925e02bc7bfb06b73d19fdac70f98c45a18e4286 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 14 Mar 2021 16:15:45 +0200 Subject: [PATCH 076/372] fix(cassandra extension): get installed cassandra for horizon and worker images Setup the installation on laravel-horizon and php-worker images. Closes #2876 --- docker-compose.yml | 2 +- env-example | 1 + laravel-horizon/Dockerfile | 33 ++++++++++++++++++--------------- php-fpm/Dockerfile | 35 +++++++++++++++++++++++++++++++++++ php-worker/Dockerfile | 33 ++++++++++++++++++--------------- 5 files changed, 73 insertions(+), 31 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e3a247c2..9d653fe7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -354,7 +354,7 @@ services: - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED} - INSTALL_SOCKETS=${LARAVEL_HORIZON_INSTALL_SOCKETS} - INSTALL_YAML=${LARAVEL_HORIZON_INSTALL_YAML} - - INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA} + - INSTALL_CASSANDRA=${LARAVEL_HORIZON_INSTALL_CASSANDRA} - INSTALL_PHPREDIS=${LARAVEL_HORIZON_INSTALL_PHPREDIS} - INSTALL_MONGO=${LARAVEL_HORIZON_INSTALL_MONGO} - INSTALL_FFMPEG=${LARAVEL_HORIZON_INSTALL_FFMPEG} diff --git a/env-example b/env-example index aebc0b6e..170cd5da 100644 --- a/env-example +++ b/env-example @@ -321,6 +321,7 @@ LARAVEL_HORIZON_INSTALL_YAML=false LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE=false LARAVEL_HORIZON_INSTALL_PHPREDIS=true LARAVEL_HORIZON_INSTALL_MONGO=false +LARAVEL_HORIZON_INSTALL_CASSANDRA=false LARAVEL_HORIZON_INSTALL_FFMPEG=false LARAVEL_HORIZON_INSTALL_AUDIOWAVEFORM=false LARAVEL_HORIZON_PGID=1000 diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index a05137eb..fe344947 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -178,21 +178,24 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ # Install Cassandra drivers: ARG INSTALL_CASSANDRA=false RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ - apk --update add cassandra-cpp-driver \ - ;fi - -WORKDIR /usr/src -RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ - git clone https://github.com/datastax/php-driver.git \ - && cd php-driver/ext \ - && phpize \ - && mkdir -p /usr/src/php-driver/build \ - && cd /usr/src/php-driver/build \ - && ../ext/configure > /dev/null \ - && make clean >/dev/null \ - && make >/dev/null 2>&1 \ - && make install \ - && docker-php-ext-enable cassandra \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ + else \ + apk add --update --no-cache cassandra-cpp-driver libuv gmp \ + && apk add --update --no-cache cassandra-cpp-driver-dev gmp-dev --virtual .build-sec \ + && cd /usr/src \ + && git clone https://github.com/datastax/php-driver.git \ + && cd php-driver/ext \ + && phpize \ + && mkdir -p /usr/src/php-driver/build \ + && cd /usr/src/php-driver/build \ + && ../ext/configure > /dev/null \ + && make clean > /dev/null \ + && make > /dev/null 2>&1 \ + && make install \ + && docker-php-ext-enable cassandra \ + && apk del .build-sec; \ + fi \ ;fi # Install MongoDB drivers: diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 2d8d67ef..d3e105fc 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -389,6 +389,41 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \ docker-php-ext-install sockets \ ;fi +########################################################################### +# CASSANDRA: +########################################################################### + +ARG INSTALL_CASSANDRA=false + +RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ + else \ + apt-get install libgmp-dev -yqq && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1-dev_1.35.0-1_amd64.deb -o libuv1-dev.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/dependencies/libuv/v1.35.0/libuv1_1.35.0-1_amd64.deb -o libuv1.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver-dev_2.16.0-1_amd64.deb -o cassandra-cpp-driver-dev.deb && \ + curl https://downloads.datastax.com/cpp-driver/ubuntu/18.04/cassandra/v2.16.0/cassandra-cpp-driver_2.16.0-1_amd64.deb -o cassandra-cpp-driver.deb && \ + dpkg -i libuv1.deb && \ + dpkg -i libuv1-dev.deb && \ + dpkg -i cassandra-cpp-driver.deb && \ + dpkg -i cassandra-cpp-driver-dev.deb && \ + rm libuv1.deb libuv1-dev.deb cassandra-cpp-driver-dev.deb cassandra-cpp-driver.deb && \ + cd /usr/src && \ + git clone https://github.com/datastax/php-driver.git && \ + cd /usr/src/php-driver/ext && \ + phpize && \ + mkdir /usr/src/php-driver/build && \ + cd /usr/src/php-driver/build && \ + ../ext/configure > /dev/null && \ + make clean > /dev/null && \ + make > /dev/null 2>&1 && \ + make install && \ + echo "extension=cassandra.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/cassandra.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-cassandra.ini; \ + fi \ +;fi + ########################################################################### # GEARMAN: ########################################################################### diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index dcc82458..d3f97431 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -239,21 +239,24 @@ RUN if [ ${INSTALL_GEARMAN} = true ]; then \ # Install Cassandra drivers: ARG INSTALL_CASSANDRA=false RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ - apk --update add cassandra-cpp-driver \ - ;fi - -WORKDIR /usr/src -RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ - git clone https://github.com/datastax/php-driver.git \ - && cd php-driver/ext \ - && phpize \ - && mkdir -p /usr/src/php-driver/build \ - && cd /usr/src/php-driver/build \ - && ../ext/configure --with-php-config=/usr/bin/php-config7.1 > /dev/null \ - && make clean >/dev/null \ - && make >/dev/null 2>&1 \ - && make install \ - && docker-php-ext-enable cassandra \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ + else \ + apk add --update --no-cache cassandra-cpp-driver libuv gmp \ + && apk add --update --no-cache cassandra-cpp-driver-dev gmp-dev --virtual .build-sec \ + && cd /usr/src \ + && git clone https://github.com/datastax/php-driver.git \ + && cd php-driver/ext \ + && phpize \ + && mkdir -p /usr/src/php-driver/build \ + && cd /usr/src/php-driver/build \ + && ../ext/configure > /dev/null \ + && make clean > /dev/null \ + && make > /dev/null 2>&1 \ + && make install \ + && docker-php-ext-enable cassandra \ + && apk del .build-sec; \ + fi \ ;fi # Install Phalcon ext From f9edf13d651b8378959393819f5245581a7dc9a4 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 14 Mar 2021 17:50:14 +0200 Subject: [PATCH 077/372] feat(swoole extension): change installation to be able to use PHP 8.0 Add support for PHP 8.0 Fix other versions of PHP with correct versions. Closes #2879 --- php-fpm/Dockerfile | 11 +++++++---- workspace/Dockerfile | 10 +++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 2d8d67ef..e3d910f3 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -285,16 +285,19 @@ RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ ########################################################################### ARG INSTALL_SWOOLE=false - RUN if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install swoole-2.0.10; \ + pecl -q install swoole-2.0.11; \ else \ if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - pecl install swoole-2.2.0; \ + echo '' | pecl install swoole-4.3.5; \ else \ - pecl install swoole; \ + if [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ + echo '' | pecl install swoole-4.6.0; \ + else \ + echo '' | pecl install swoole; \ + fi \ fi \ fi && \ docker-php-ext-enable swoole \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1225fc85..95efc938 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -572,12 +572,16 @@ ARG INSTALL_SWOOLE=false RUN if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl -q install swoole-2.0.10; \ + pecl -q install swoole-2.0.11; \ else \ if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - pecl install swoole-2.2.0; \ + echo '' | pecl install swoole-4.3.5; \ else \ - pecl install swoole; \ + if [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ + echo '' | pecl install swoole-4.6.0; \ + else \ + echo '' | pecl install swoole; \ + fi \ fi \ fi && \ echo "extension=swoole.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini && \ From 37ffbbea299be711859b984e3520d2fafc644ec9 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 14 Mar 2021 18:03:57 +0200 Subject: [PATCH 078/372] fix(aerospike extension): turn off build in Travis due to image version Base image (Ubuntu 18) is no supported by Aerospike. Closes #2881 --- travis-build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/travis-build.sh b/travis-build.sh index e773b823..461306c7 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -18,6 +18,7 @@ if [ -n "${PHP_VERSION}" ]; then if [ "${PHP_VERSION}" == "5.6" ]; then # Aerospike C Client SDK 4.0.7, Debian 9.6 is not supported # https://github.com/aerospike/aerospike-client-php5/issues/145 + sed -i -- 's/WORKSPACE_INSTALL_AEROSPIKE=true/WORKSPACE_INSTALL_AEROSPIKE=false/g' .env sed -i -- 's/PHP_FPM_INSTALL_AEROSPIKE=true/PHP_FPM_INSTALL_AEROSPIKE=false/g' .env fi if [ "${PHP_VERSION}" == "7.3" ]; then From 793c1a085f87c26c3f165efed11ef3c737267958 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 14 Mar 2021 18:40:06 +0200 Subject: [PATCH 079/372] fix(aerospike extension): turn off build in Travis due to image version PHP 8.0 is not supported by Aerospike. See the issue's references. Closes #2881 --- workspace/Dockerfile | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1225fc85..205436c4 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -872,18 +872,22 @@ RUN set -xe; \ && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ ( \ - cd /tmp/aerospike-client-php/src/aerospike \ - && phpize \ - && ./build.sh \ - && make install \ + cd /tmp/aerospike-client-php/src/aerospike \ + && phpize \ + && ./build.sh \ + && make install \ ) \ else \ - ( \ - cd /tmp/aerospike-client-php/src \ - && phpize \ - && ./build.sh \ - && make install \ - ) \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + ( \ + cd /tmp/aerospike-client-php/src \ + && phpize \ + && ./build.sh \ + && make install \ + ) \ + else \ + echo "AEROSPIKE does not support PHP 8.0" + fi \ fi \ && rm /tmp/aerospike-client-php.tar.gz \ && echo 'extension=aerospike.so' >> /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/aerospike.ini \ From 7b396b7c39b510f545b9bb20bbcb210f45856964 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 14 Mar 2021 18:46:51 +0200 Subject: [PATCH 080/372] fix(aerospike extension): update syntax Fix typos in the build script. Closes #2881 --- workspace/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 205436c4..e97e4c51 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -886,9 +886,9 @@ RUN set -xe; \ && make install \ ) \ else \ - echo "AEROSPIKE does not support PHP 8.0" - fi \ - fi \ + echo "AEROSPIKE does not support PHP 8.0" \ + ;fi \ + ;fi \ && rm /tmp/aerospike-client-php.tar.gz \ && echo 'extension=aerospike.so' >> /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/aerospike.ini \ && echo 'aerospike.udf.lua_system_path=/usr/local/aerospike/lua' >> /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/aerospike.ini \ From 33b75637e535c7e96b41480bb6e0b760ef86fc4d Mon Sep 17 00:00:00 2001 From: aiden Date: Mon, 15 Mar 2021 21:12:37 +1100 Subject: [PATCH 081/372] Renamed env-example to .env.example for conformity and IDE-compatibility; added PHP version 8.0 in the example values --- env-example => .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename env-example => .env.example (99%) diff --git a/env-example b/.env.example similarity index 99% rename from env-example rename to .env.example index 43f6a067..5be1e518 100644 --- a/env-example +++ b/.env.example @@ -38,7 +38,7 @@ 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.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 +# Accepted values: 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 PHP_VERSION=7.3 ### Phalcon Version ########################################### From 26f13f56f13716d3d242ee4ea261a3e45b6ec1a4 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 15:43:42 +0800 Subject: [PATCH 082/372] CI adjustment --- .github/workflows/main-ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 90a692ac..815b0be1 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -1,14 +1,20 @@ name: CI -on: [push, pull_request] +on: + push: + branches: '**' + tags: '**' + pull_request: + schedule: + - cron: '0 0 * * 0' jobs: build: runs-on: ubuntu-latest strategy: matrix: - php_version: ["7.1", "7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon] + php_version: ["7.2", "7.3", "7.4", "8.0"] + service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis'] steps: - uses: actions/checkout@v2 - name: Build the Docker image From 1ea4bfbd18bef39adfcf79a08af66bed36a16947 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 16:18:21 +0800 Subject: [PATCH 083/372] Update main-ci.yml php-fpm install ext --- .github/workflows/main-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 815b0be1..8cbd87e9 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: php_version: ["7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis'] + service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis mysql mariadb percona minio mongo'] steps: - uses: actions/checkout@v2 - name: Build the Docker image @@ -22,4 +22,5 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env + sed -i -- '201,272s/=false/=true/g' .env docker-compose build ${{ matrix.service }} From ed60170e6ed70a30f813b4f1ef1468334cbe55dd Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 16:28:07 +0800 Subject: [PATCH 084/372] Update main-ci.yml CI avoid CHANGE_SOURCE=true --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8cbd87e9..531c3231 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,4 +23,5 @@ jobs: run: | cp env-example .env sed -i -- '201,272s/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env docker-compose build ${{ matrix.service }} From 8dd77527f6d177628bdeed519b1cf22af827a601 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 17:29:51 +0800 Subject: [PATCH 085/372] update php-fpm ssh2 ext version --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index ad49415d..e199744e 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -108,7 +108,7 @@ RUN if [ ${INSTALL_SSH2} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install -a ssh2-0.13; \ else \ - pecl install -a ssh2-1.2; \ + pecl install -a ssh2-1.3.1; \ fi && \ docker-php-ext-enable ssh2 \ ;fi From e494f0b863df0896529bcdb9ea2b413ff261cb84 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 18:30:57 +0800 Subject: [PATCH 086/372] skip PHPDBG --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 531c3231..8b734ba8 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -24,4 +24,5 @@ jobs: cp env-example .env sed -i -- '201,272s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env docker-compose build ${{ matrix.service }} From be587e8cc647f3c1ed49e8032871701f833f97bc Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 15:43:42 +0800 Subject: [PATCH 087/372] CI adjustment --- .github/workflows/main-ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 90a692ac..815b0be1 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -1,14 +1,20 @@ name: CI -on: [push, pull_request] +on: + push: + branches: '**' + tags: '**' + pull_request: + schedule: + - cron: '0 0 * * 0' jobs: build: runs-on: ubuntu-latest strategy: matrix: - php_version: ["7.1", "7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon] + php_version: ["7.2", "7.3", "7.4", "8.0"] + service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis'] steps: - uses: actions/checkout@v2 - name: Build the Docker image From e9ffee151cf02e47a4d9ab27fcff42703d1933fb Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 16:18:21 +0800 Subject: [PATCH 088/372] Update main-ci.yml php-fpm install ext --- .github/workflows/main-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 815b0be1..8cbd87e9 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: php_version: ["7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis'] + service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis mysql mariadb percona minio mongo'] steps: - uses: actions/checkout@v2 - name: Build the Docker image @@ -22,4 +22,5 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env + sed -i -- '201,272s/=false/=true/g' .env docker-compose build ${{ matrix.service }} From 825a0660ed66bac802b389189e68aaef9b9c9f6f Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 16:28:07 +0800 Subject: [PATCH 089/372] Update main-ci.yml CI avoid CHANGE_SOURCE=true --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8cbd87e9..531c3231 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,4 +23,5 @@ jobs: run: | cp env-example .env sed -i -- '201,272s/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env docker-compose build ${{ matrix.service }} From d03e7c7f700db1d4d9aeefdf41b7bbddc59c79ab Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 18:30:57 +0800 Subject: [PATCH 090/372] skip PHPDBG --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 531c3231..8b734ba8 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -24,4 +24,5 @@ jobs: cp env-example .env sed -i -- '201,272s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env docker-compose build ${{ matrix.service }} From fb110a9d91bd2b28c7a824de5bad6e504622c6aa Mon Sep 17 00:00:00 2001 From: Marcelo Garbin Date: Tue, 16 Mar 2021 10:05:46 -0300 Subject: [PATCH 091/372] Added configuration for ssl with apache2 based on the nginx container --- apache2/Dockerfile | 25 ++++++------------ apache2/sites/default.apache.conf | 2 ++ apache2/sites/default.apache.ssl.example | 32 ++++++++++++++++++++++++ apache2/ssl/.gitignore | 4 +++ apache2/startup.sh | 21 ++++++++++++++++ docker-compose.yml | 1 + env-example | 1 + 7 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 apache2/sites/default.apache.ssl.example create mode 100644 apache2/ssl/.gitignore create mode 100644 apache2/startup.sh diff --git a/apache2/Dockerfile b/apache2/Dockerfile index ec824f4b..5bd4f95e 100644 --- a/apache2/Dockerfile +++ b/apache2/Dockerfile @@ -2,36 +2,25 @@ FROM webdevops/apache:ubuntu-18.04 LABEL maintainer="Eric Pfeiffer " +ARG DOCUMENT_ROOT=/var/www/ ARG PHP_UPSTREAM_CONTAINER=php-fpm ARG PHP_UPSTREAM_PORT=9000 ARG PHP_UPSTREAM_TIMEOUT=60 -ARG DOCUMENT_ROOT=/var/www/ +ARG APACHE_INSTALL_HTTP2=false ENV WEB_PHP_SOCKET=${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT} - ENV WEB_DOCUMENT_ROOT=${DOCUMENT_ROOT} - +ENV APACHE_HTTP2=${APACHE_INSTALL_HTTP2} ENV WEB_PHP_TIMEOUT=${PHP_UPSTREAM_TIMEOUT} -EXPOSE 80 443 - WORKDIR /var/www/ COPY vhost.conf /etc/apache2/sites-enabled/vhost.conf -ARG APACHE_INSTALL_HTTP2=false -RUN mkdir /etc/apache2/ssl 2> /dev/null -RUN if [ ${APACHE_INSTALL_HTTP2} = true ]; then \ - openssl genrsa -out "/etc/apache2/ssl/ssl_site.key" 2048 \ - && openssl rand -out /root/.rnd -hex 256 \ - && openssl req -new -key "/etc/apache2/ssl/ssl_site.key" -out "/etc/apache2/ssl/ssl_site.csr" -subj "/CN=site.com/O=LGS/C=IT" \ - && openssl x509 -req -days 365 -in "/etc/apache2/ssl/ssl_site.csr" -signkey "/etc/apache2/ssl/ssl_site.key" -out "/etc/apache2/ssl/ssl_site.crt" \ - && a2enmod rewrite \ - && a2enmod headers \ - && a2enmod proxy proxy_html proxy_http xml2enc ssl http2 \ - && service apache2 restart \ -;fi +ADD ./startup.sh /opt/startup.sh ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"] -CMD ["supervisord"] +CMD ["/bin/bash", "/opt/startup.sh"] + +EXPOSE 80 443 \ No newline at end of file diff --git a/apache2/sites/default.apache.conf b/apache2/sites/default.apache.conf index ed2311dd..964a18f2 100644 --- a/apache2/sites/default.apache.conf +++ b/apache2/sites/default.apache.conf @@ -13,4 +13,6 @@ + ErrorLog /var/log/apache2/error.log + CustomLog /var/log/apache2/access.log combined diff --git a/apache2/sites/default.apache.ssl.example b/apache2/sites/default.apache.ssl.example new file mode 100644 index 00000000..c82a6c14 --- /dev/null +++ b/apache2/sites/default.apache.ssl.example @@ -0,0 +1,32 @@ + + ServerName laradock.test + ServerAlias *.laradock.test + + RewriteEngine On + RewriteCond %{HTTPS} !on + RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] + + + + ServerName laradock.test + ServerAlias *.laradock.test + DocumentRoot /var/www/ + Options Indexes FollowSymLinks + + SSLEngine on + SSLCertificateFile /etc/apache2/ssl/ssl_site.crt + SSLCertificateKeyFile /etc/apache2/ssl/ssl_site.key + + + AllowOverride All + + Allow from all + + = 2.4> + Require all granted + + + + ErrorLog /var/log/apache2/error.log + CustomLog /var/log/apache2/access.log combined + diff --git a/apache2/ssl/.gitignore b/apache2/ssl/.gitignore new file mode 100644 index 00000000..003cd8e5 --- /dev/null +++ b/apache2/ssl/.gitignore @@ -0,0 +1,4 @@ +*.crt +*.csr +*.key +*.pem \ No newline at end of file diff --git a/apache2/startup.sh b/apache2/startup.sh new file mode 100644 index 00000000..c3b0e04d --- /dev/null +++ b/apache2/startup.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +mkdir /etc/apache2/ssl 2> /dev/null + +# Change laradock.test to the URL to be used +if [ ${APACHE_HTTP2} = true ]; then + if [ ! -f /etc/apache2/ssl/ssl_site.crt ]; then + openssl genrsa -out "/etc/apache2/ssl/ssl_site.key" 2048 + openssl rand -out /root/.rnd -hex 256 + openssl req -new -key "/etc/apache2/ssl/ssl_site.key" -out "/etc/apache2/ssl/ssl_site.csr" -subj "/CN=laradock.test/O=Laradock/C=BR" + openssl x509 -req -days 365 -extfile <(printf "subjectAltName=DNS:laradock.test,DNS:*.laradock.test") -in "/etc/apache2/ssl/ssl_site.csr" -signkey "/etc/apache2/ssl/ssl_site.key" -out "/etc/apache2/ssl/ssl_site.crt" + fi + + a2enmod rewrite + a2enmod headers + a2enmod proxy proxy_html proxy_http xml2enc ssl http2 + service apache2 restart +fi + +# Start supervisord in foreground +supervisord diff --git a/docker-compose.yml b/docker-compose.yml index 9d653fe7..91c22a5e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -423,6 +423,7 @@ services: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - ${APACHE_HOST_LOG_PATH}:/var/log/apache2 - ${APACHE_SITES_PATH}:/etc/apache2/sites-available + - ${APACHE_SSL_PATH}:/etc/apache2/ssl ports: - "${APACHE_HOST_HTTP_PORT}:80" - "${APACHE_HOST_HTTPS_PORT}:443" diff --git a/env-example b/env-example index 43f6a067..7347e051 100644 --- a/env-example +++ b/env-example @@ -337,6 +337,7 @@ APACHE_PHP_UPSTREAM_CONTAINER=php-fpm APACHE_PHP_UPSTREAM_PORT=9000 APACHE_PHP_UPSTREAM_TIMEOUT=60 APACHE_DOCUMENT_ROOT=/var/www/ +APACHE_SSL_PATH=./apache2/ssl/ APACHE_INSTALL_HTTP2=false ### MYSQL ################################################# From d3c5b93b7caade27f8c6e15bd337939dcab25381 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 21:52:36 +0800 Subject: [PATCH 092/372] PHP 8.0 php-fpm swoole --- php-fpm/Dockerfile | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index e199744e..4f1fdbac 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -285,24 +285,21 @@ RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ ########################################################################### ARG INSTALL_SWOOLE=false -RUN if [ ${INSTALL_SWOOLE} = true ]; then \ - # Install Php Swoole Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl -q install swoole-2.0.11; \ - else \ - if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - echo '' | pecl install swoole-4.3.5; \ +RUN set -eux; \ + if [ ${INSTALL_SWOOLE} = true ]; then \ + # Install Php Swoole Extension + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ + pecl install swoole-2.0.11; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install swoole-4.3.5; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + pecl install swoole-4.6.0; \ else \ - if [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ - echo '' | pecl install swoole-4.6.0; \ - else \ - echo '' | pecl install swoole; \ - fi \ - fi \ - fi && \ - docker-php-ext-enable swoole \ - && php -m | grep -q 'swoole' \ -;fi + pecl install swoole; \ + fi; \ + docker-php-ext-enable swoole; \ + php -m | grep -q 'swoole'; \ + fi ########################################################################### # Taint EXTENSION From e34e914d56e36817306e86f2e6f38bf85e3121c3 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 15:43:42 +0800 Subject: [PATCH 093/372] CI adjustment --- .github/workflows/main-ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 90a692ac..815b0be1 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -1,14 +1,20 @@ name: CI -on: [push, pull_request] +on: + push: + branches: '**' + tags: '**' + pull_request: + schedule: + - cron: '0 0 * * 0' jobs: build: runs-on: ubuntu-latest strategy: matrix: - php_version: ["7.1", "7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon] + php_version: ["7.2", "7.3", "7.4", "8.0"] + service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis'] steps: - uses: actions/checkout@v2 - name: Build the Docker image From e099d8a2727d3d64c641147c4fd0e1adde59b3cf Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 16:18:21 +0800 Subject: [PATCH 094/372] Update main-ci.yml php-fpm install ext --- .github/workflows/main-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 815b0be1..8cbd87e9 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: php_version: ["7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis'] + service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis mysql mariadb percona minio mongo'] steps: - uses: actions/checkout@v2 - name: Build the Docker image @@ -22,4 +22,5 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env + sed -i -- '201,272s/=false/=true/g' .env docker-compose build ${{ matrix.service }} From a528c95bfd9dea0fb130f8cc79f318d5e22f626c Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 16:28:07 +0800 Subject: [PATCH 095/372] Update main-ci.yml CI avoid CHANGE_SOURCE=true --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8cbd87e9..531c3231 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,4 +23,5 @@ jobs: run: | cp env-example .env sed -i -- '201,272s/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env docker-compose build ${{ matrix.service }} From 7e2e6db3b44b6a5d5796b5440b7fbe4c2a9e3cdd Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 18:30:57 +0800 Subject: [PATCH 096/372] skip PHPDBG --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 531c3231..8b734ba8 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -24,4 +24,5 @@ jobs: cp env-example .env sed -i -- '201,272s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env docker-compose build ${{ matrix.service }} From c2c86d72af249f5c8e12af8f369eb6970de987a1 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 23:35:47 +0800 Subject: [PATCH 097/372] laravel-horizon update memcached version --- laravel-horizon/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index fe344947..5d2a4bf5 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -235,7 +235,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/v3.1.3.tar.gz"; \ + curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/v3.1.4.tar.gz"; \ fi \ && mkdir -p memcached \ && tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \ From 0718a9b8232c2b1b39ffa0dbfd27d3707c0f6462 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 16 Mar 2021 23:50:07 +0800 Subject: [PATCH 098/372] disable install ext and split job --- .github/workflows/main-ci.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8b734ba8..ecd31a73 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -9,12 +9,12 @@ on: - cron: '0 0 * * 0' jobs: - build: + build-php: runs-on: ubuntu-latest strategy: matrix: php_version: ["7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon, 'nginx redis mysql mariadb percona minio mongo'] + service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 - name: Build the Docker image @@ -22,7 +22,22 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env - sed -i -- '201,272s/=false/=true/g' .env + # sed -i -- '201,272s/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env + docker-compose build ${{ matrix.service }} + + build-other: + runs-on: ubuntu-latest + strategy: + matrix: + service: ['nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo'] + steps: + - uses: actions/checkout@v2 + - name: Build the Docker image + run: | + cp env-example .env + sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env docker-compose build ${{ matrix.service }} From 46433efdbb3ade1c7fdfa5bc0be99d6d6bb91add Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 12:26:37 +0800 Subject: [PATCH 099/372] CI .env skip CHANGE_SOURCE=true --- travis-build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/travis-build.sh b/travis-build.sh index 461306c7..add94e55 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -14,6 +14,7 @@ if [ -n "${PHP_VERSION}" ]; then cp env-example .env sed -i -- "s/PHP_VERSION=.*/PHP_VERSION=${PHP_VERSION}/g" .env sed -i -- 's/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env if [ "${PHP_VERSION}" == "5.6" ]; then # Aerospike C Client SDK 4.0.7, Debian 9.6 is not supported From c59197c8fd6285dbb1a6d43ea7186f3cf31ebac9 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 13:25:12 +0800 Subject: [PATCH 100/372] fix xhprof --- php-fpm/Dockerfile | 53 ++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 4f1fdbac..33a25417 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -339,31 +339,38 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ ARG INSTALL_XHPROF=false -RUN if [ ${INSTALL_XHPROF} = true ]; then \ - # 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 \ - curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \ - fi \ - && mkdir -p xhprof \ - && tar -C xhprof -zxvf /tmp/xhprof.tar.gz --strip 1 \ - && ( \ - cd xhprof \ - && phpize \ - && ./configure \ - && make \ - && make install \ - ) \ - && rm -r xhprof \ - && rm /tmp/xhprof.tar.gz \ -;fi +RUN set -eux; \ + if [ ${INSTALL_XHPROF} = true ]; then \ + # Install the php xhprof extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") != 5 ]; then \ + pecl install xhprof; \ + else \ + curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \ + mkdir -p /tmp/xhprof; \ + tar -C /tmp/xhprof -zxvf /tmp/xhprof.tar.gz --strip 1; \ + ( \ + cd /tmp/xhprof/extension; \ + phpize; \ + ./configure; \ + make; \ + make install; \ + ); \ + rm -r /tmp/xhprof; \ + rm /tmp/xhprof.tar.gz; \ + fi; \ + docker-php-ext-enable xhprof; \ + php -m | grep -q 'xhprof'; \ + fi -COPY ./xhprof.ini /usr/local/etc/php/conf.d +# if [ ${INSTALL_XHPROF_USE_TIDYWAYS} = true ]; then \ +# https://github.com/tideways/php-xhprof-extension +# fi -RUN if [ ${INSTALL_XHPROF} = false ]; then \ - rm /usr/local/etc/php/conf.d/xhprof.ini \ -;fi +# COPY ./xhprof.ini /usr/local/etc/php/conf.d + +# RUN if [ ${INSTALL_XHPROF} = false ]; then \ +# rm /usr/local/etc/php/conf.d/xhprof.ini \ +# ;fi ########################################################################### # AMQP: From 275a9ac398b24648c4ee8a4f342f0514dd972062 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 13:33:35 +0800 Subject: [PATCH 101/372] Update travis-build.sh --- travis-build.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/travis-build.sh b/travis-build.sh index add94e55..41bc1a66 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -16,6 +16,12 @@ if [ -n "${PHP_VERSION}" ]; then sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env + sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env + sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env + sed -i -- 's/AEROSPIKE=true/AEROSPIKE=false/g' .env + sed -i -- 's/PHALCON=true/PHALCON=false/g' .env + sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env + sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env if [ "${PHP_VERSION}" == "5.6" ]; then # Aerospike C Client SDK 4.0.7, Debian 9.6 is not supported # https://github.com/aerospike/aerospike-client-php5/issues/145 From 3970d904303ec6a70118b6835d928a8723667da5 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 14:02:55 +0800 Subject: [PATCH 102/372] Add skip ext --- travis-build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/travis-build.sh b/travis-build.sh index 41bc1a66..67a55c30 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -22,6 +22,8 @@ if [ -n "${PHP_VERSION}" ]; then sed -i -- 's/PHALCON=true/PHALCON=false/g' .env sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env + sed -i -- 's/SWOOLE=true/SWOOLE=false/g' .env + sed -i -- 's/V8JS=true/V8JS=false/g' .env if [ "${PHP_VERSION}" == "5.6" ]; then # Aerospike C Client SDK 4.0.7, Debian 9.6 is not supported # https://github.com/aerospike/aerospike-client-php5/issues/145 From 2f6e89cc98d162d7b59fe2b45272218d49e61f9e Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 14:39:07 +0800 Subject: [PATCH 103/372] skip install fail extension --- .github/workflows/main-ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index ecd31a73..18fbef5b 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -25,6 +25,13 @@ jobs: # sed -i -- '201,272s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env + sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env + sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env + sed -i -- 's/AEROSPIKE=true/AEROSPIKE=false/g' .env + sed -i -- 's/PHALCON=true/PHALCON=false/g' .env + sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env + sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env + sed -i -- 's/YAML=true/YAML=false/g' .env docker-compose build ${{ matrix.service }} build-other: From b7a03673c1a9e9fee2c497e188d5e5035b9b3897 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 13:25:12 +0800 Subject: [PATCH 104/372] fix xhprof --- php-fpm/Dockerfile | 53 ++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 4f1fdbac..33a25417 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -339,31 +339,38 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ ARG INSTALL_XHPROF=false -RUN if [ ${INSTALL_XHPROF} = true ]; then \ - # 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 \ - curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \ - fi \ - && mkdir -p xhprof \ - && tar -C xhprof -zxvf /tmp/xhprof.tar.gz --strip 1 \ - && ( \ - cd xhprof \ - && phpize \ - && ./configure \ - && make \ - && make install \ - ) \ - && rm -r xhprof \ - && rm /tmp/xhprof.tar.gz \ -;fi +RUN set -eux; \ + if [ ${INSTALL_XHPROF} = true ]; then \ + # Install the php xhprof extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") != 5 ]; then \ + pecl install xhprof; \ + else \ + curl -L -o /tmp/xhprof.tar.gz "https://codeload.github.com/phacility/xhprof/tar.gz/master"; \ + mkdir -p /tmp/xhprof; \ + tar -C /tmp/xhprof -zxvf /tmp/xhprof.tar.gz --strip 1; \ + ( \ + cd /tmp/xhprof/extension; \ + phpize; \ + ./configure; \ + make; \ + make install; \ + ); \ + rm -r /tmp/xhprof; \ + rm /tmp/xhprof.tar.gz; \ + fi; \ + docker-php-ext-enable xhprof; \ + php -m | grep -q 'xhprof'; \ + fi -COPY ./xhprof.ini /usr/local/etc/php/conf.d +# if [ ${INSTALL_XHPROF_USE_TIDYWAYS} = true ]; then \ +# https://github.com/tideways/php-xhprof-extension +# fi -RUN if [ ${INSTALL_XHPROF} = false ]; then \ - rm /usr/local/etc/php/conf.d/xhprof.ini \ -;fi +# COPY ./xhprof.ini /usr/local/etc/php/conf.d + +# RUN if [ ${INSTALL_XHPROF} = false ]; then \ +# rm /usr/local/etc/php/conf.d/xhprof.ini \ +# ;fi ########################################################################### # AMQP: From 6a6915d02ce9f70dca67b449ba386e001710a6be Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 14:39:07 +0800 Subject: [PATCH 105/372] skip install fail extension --- .github/workflows/main-ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index ecd31a73..18fbef5b 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -25,6 +25,13 @@ jobs: # sed -i -- '201,272s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env + sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env + sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env + sed -i -- 's/AEROSPIKE=true/AEROSPIKE=false/g' .env + sed -i -- 's/PHALCON=true/PHALCON=false/g' .env + sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env + sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env + sed -i -- 's/YAML=true/YAML=false/g' .env docker-compose build ${{ matrix.service }} build-other: From f77b68b11c461ba0cff9de3ca3bc5f956ffc8f10 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 15:00:32 +0800 Subject: [PATCH 106/372] Add skip install fail extension --- .github/workflows/main-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 18fbef5b..d61f80dc 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -22,7 +22,7 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env - # sed -i -- '201,272s/=false/=true/g' .env + sed -i -- '201,272s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env @@ -32,6 +32,7 @@ jobs: sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env sed -i -- 's/YAML=true/YAML=false/g' .env + sed -i -- 's/MSSQL=true/MSSQL=false/g' .env docker-compose build ${{ matrix.service }} build-other: From dd29c01f9d11099c50057d829de15e56150e3795 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 15:17:11 +0800 Subject: [PATCH 107/372] Add skip install fail extension --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d61f80dc..d4ad6b8e 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -33,6 +33,7 @@ jobs: sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env sed -i -- 's/YAML=true/YAML=false/g' .env sed -i -- 's/MSSQL=true/MSSQL=false/g' .env + sed -i -- 's/AMQP=true/AMQP=false/g' .env docker-compose build ${{ matrix.service }} build-other: From 69c4fc6f9b5519e383674a892a55f6cbcb30ab24 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 15:30:32 +0800 Subject: [PATCH 108/372] Add skip install fail extension --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d4ad6b8e..ec89deba 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -34,6 +34,7 @@ jobs: sed -i -- 's/YAML=true/YAML=false/g' .env sed -i -- 's/MSSQL=true/MSSQL=false/g' .env sed -i -- 's/AMQP=true/AMQP=false/g' .env + sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env docker-compose build ${{ matrix.service }} build-other: From 0de9e6d02e83371ea183fc6d409d8d6218d8ff5d Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 15:43:57 +0800 Subject: [PATCH 109/372] change fail behavior --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index ec89deba..3e9687b5 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -12,6 +12,7 @@ jobs: build-php: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: php_version: ["7.2", "7.3", "7.4", "8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] From 914ca56957a13a63f94d12b2a06975fa1d57ee43 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 15:45:00 +0800 Subject: [PATCH 110/372] Add skip install fail extension --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 3e9687b5..eca15215 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -36,6 +36,7 @@ jobs: sed -i -- 's/MSSQL=true/MSSQL=false/g' .env sed -i -- 's/AMQP=true/AMQP=false/g' .env sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env + sed -i -- 's/OCI8=true/OCI8=false/g' .env docker-compose build ${{ matrix.service }} build-other: From 8f68c39f1728d9454b0aa785b671cac1762ce596 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 16:23:35 +0800 Subject: [PATCH 111/372] Add skip install fail extension --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index eca15215..f190bc41 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -37,6 +37,7 @@ jobs: sed -i -- 's/AMQP=true/AMQP=false/g' .env sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env sed -i -- 's/OCI8=true/OCI8=false/g' .env + sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env docker-compose build ${{ matrix.service }} build-other: From 30b9034f853cd064c64ec3d67a717f98ac68582e Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 17:29:40 +0800 Subject: [PATCH 112/372] fix xmlrpc --- php-fpm/Dockerfile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 33a25417..f32e8a7e 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1034,7 +1034,13 @@ RUN if [ ${INSTALL_CACHETOOL} = true ]; then \ ARG INSTALL_XMLRPC=false RUN if [ ${INSTALL_XMLRPC} = true ]; then \ - docker-php-ext-install xmlrpc \ + apt-get -yq install libxml2-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install xmlrpc-1.0.0RC2; \ + docker-php-ext-enable xmlrpc; \ + else \ + docker-php-ext-install xmlrpc; \ + fi \ ;fi ########################################################################### From 2edb139367428249ce04d0e2ed63727003341442 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 17:30:33 +0800 Subject: [PATCH 113/372] focuse php 8 --- .github/workflows/main-ci.yml | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index f190bc41..42734fad 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,8 @@ jobs: strategy: fail-fast: false matrix: - php_version: ["7.2", "7.3", "7.4", "8.0"] + # php_version: ["7.2", "7.3", "7.4", "8.0"] + php_version: ["8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 @@ -40,17 +41,17 @@ jobs: sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env docker-compose build ${{ matrix.service }} - build-other: - runs-on: ubuntu-latest - strategy: - matrix: - service: ['nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo'] - steps: - - uses: actions/checkout@v2 - - name: Build the Docker image - run: | - cp env-example .env - sed -i -- 's/=false/=true/g' .env - sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env - docker-compose build ${{ matrix.service }} + # build-other: + # runs-on: ubuntu-latest + # strategy: + # matrix: + # service: ['nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo'] + # steps: + # - uses: actions/checkout@v2 + # - name: Build the Docker image + # run: | + # cp env-example .env + # sed -i -- 's/=false/=true/g' .env + # sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + # sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env + # docker-compose build ${{ matrix.service }} From 2c3b7a762eaa9d5f23a333fc2a0709b252421788 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 17 Mar 2021 18:16:54 +0800 Subject: [PATCH 114/372] build all --- .github/workflows/main-ci.yml | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 42734fad..ad44a60a 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,8 +14,7 @@ jobs: strategy: fail-fast: false matrix: - # php_version: ["7.2", "7.3", "7.4", "8.0"] - php_version: ["8.0"] + php_version: ["7.2", "7.3", "7.4", "8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 @@ -41,17 +40,17 @@ jobs: sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env docker-compose build ${{ matrix.service }} - # build-other: - # runs-on: ubuntu-latest - # strategy: - # matrix: - # service: ['nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo'] - # steps: - # - uses: actions/checkout@v2 - # - name: Build the Docker image - # run: | - # cp env-example .env - # sed -i -- 's/=false/=true/g' .env - # sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - # sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env - # docker-compose build ${{ matrix.service }} + build-other: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + service: ['nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo'] + steps: + - uses: actions/checkout@v2 + - name: Build the Docker image + run: | + cp env-example .env + sed -i -- 's/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + docker-compose build ${{ matrix.service }} From 43df135ca463c11bb54a23bc5a6a012e72b8389d Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Thu, 18 Mar 2021 10:11:30 +0200 Subject: [PATCH 115/372] feat(AMQP extension): normalize installation of AMQP for php-fpm 8.0 Update installation process of AMQP for PHP 8.0 (fpm service) Closes #2891 --- php-fpm/Dockerfile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index f32e8a7e..e1b121f9 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -381,7 +381,8 @@ ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ # download and install manually, to make sure it's compatible with ampq installed by pecl later # install cmake first - apt-get -y install cmake && \ + apt-get -yqq update && \ + apt-get -yqq install cmake && \ curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz && \ mkdir -p rabbitmq-c && \ tar -C rabbitmq-c -zxvf /tmp/rabbitmq-c.tar.gz --strip 1 && \ @@ -390,7 +391,11 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \ cmake .. && \ cmake --build . --target install && \ # Install the amqp extension - pecl install amqp && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + printf "\n" | pecl install amqp-1.11.0beta; \ + else \ + printf "\n" | pecl install amqp; \ + fi && \ docker-php-ext-enable amqp && \ # Install the sockets extension docker-php-ext-install sockets \ From 615c80f25b7ac472296c5cc7c3a38f67edf009e2 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 18 Mar 2021 12:51:20 +0100 Subject: [PATCH 116/372] Update to solve the xdebug port. Issue: https://github.com/laradock/laradock/issues/2892 --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index e3a247c2..61d015ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -276,7 +276,7 @@ services: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - docker-in-docker:/certs/client ports: - - "9003:9003" + - "${PHP_FPM_XDEBUG_PORT}:9003" expose: - "9000" extra_hosts: From 18e5ade8956f63ed40384e590bdd3ca814ef3e53 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 18 Mar 2021 12:52:15 +0100 Subject: [PATCH 117/372] Update to solve the xdebug port. Issue: https://github.com/laradock/laradock/issues/2892 --- env-example | 1 + 1 file changed, 1 insertion(+) diff --git a/env-example b/env-example index aebc0b6e..f2d69808 100644 --- a/env-example +++ b/env-example @@ -259,6 +259,7 @@ PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" PHP_FPM_INSTALL_DOCKER_CLIENT=false PHP_FPM_DEFAULT_LOCALE=POSIX +PHP_FPM_XDEBUG_PORT=9003 PHP_FPM_PUID=1000 PHP_FPM_PGID=1000 From 6c96f29194d211e1904634007fca0dbcadb4786d Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 18 Mar 2021 13:51:41 +0100 Subject: [PATCH 118/372] Revert "Update Dockerfile" This reverts commit f2af78ecac4ed11ab891b7dc0b79912bd541eec6. --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 62da5562..2d8d67ef 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -688,7 +688,7 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get update -yqq && apt-get install -y libmagickwand-dev imagemagick && \ + apt-get install -y libmagickwand-dev imagemagick && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ apt-get install -y git && \ cd /tmp && \ From cad60947c0198dc68f9e9650342054641f512578 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 18 Mar 2021 13:56:10 +0100 Subject: [PATCH 119/372] Updatee --- env-example | 1 - php-fpm/Dockerfile | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/env-example b/env-example index f2d69808..aebc0b6e 100644 --- a/env-example +++ b/env-example @@ -259,7 +259,6 @@ PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" PHP_FPM_INSTALL_DOCKER_CLIENT=false PHP_FPM_DEFAULT_LOCALE=POSIX -PHP_FPM_XDEBUG_PORT=9003 PHP_FPM_PUID=1000 PHP_FPM_PGID=1000 diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 2d8d67ef..62da5562 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -688,7 +688,7 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get install -y libmagickwand-dev imagemagick && \ + apt-get update -yqq && apt-get install -y libmagickwand-dev imagemagick && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ apt-get install -y git && \ cd /tmp && \ From f1f416023a74125e24bcee57a0ec1665faefc8fd Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 18 Mar 2021 13:58:04 +0100 Subject: [PATCH 120/372] Revert "Update to solve the xdebug port. Issue: https://github.com/laradock/laradock/issues/2892" This reverts commit 615c80f25b7ac472296c5cc7c3a38f67edf009e2. --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 61d015ce..e3a247c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -276,7 +276,7 @@ services: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - docker-in-docker:/certs/client ports: - - "${PHP_FPM_XDEBUG_PORT}:9003" + - "9003:9003" expose: - "9000" extra_hosts: From cca7cef1ceb03e00c16fc63b046e59918374a3df Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 18 Mar 2021 14:10:54 +0100 Subject: [PATCH 121/372] Revert "Update Dockerfile" This reverts commit f2af78ecac4ed11ab891b7dc0b79912bd541eec6. --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 62da5562..2d8d67ef 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -688,7 +688,7 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get update -yqq && apt-get install -y libmagickwand-dev imagemagick && \ + apt-get install -y libmagickwand-dev imagemagick && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ apt-get install -y git && \ cd /tmp && \ From 8d42d86270c49a9b84ddb495fa9eb9822cdd03d0 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 18 Mar 2021 14:14:12 +0100 Subject: [PATCH 122/372] Update to solve the xdebug port problem. Issue: #2892 --- docker-compose.yml | 2 +- env-example | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index e3a247c2..61d015ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -276,7 +276,7 @@ services: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - docker-in-docker:/certs/client ports: - - "9003:9003" + - "${PHP_FPM_XDEBUG_PORT}:9003" expose: - "9000" extra_hosts: diff --git a/env-example b/env-example index aebc0b6e..f2d69808 100644 --- a/env-example +++ b/env-example @@ -259,6 +259,7 @@ PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" PHP_FPM_INSTALL_DOCKER_CLIENT=false PHP_FPM_DEFAULT_LOCALE=POSIX +PHP_FPM_XDEBUG_PORT=9003 PHP_FPM_PUID=1000 PHP_FPM_PGID=1000 From 2a953c1a9af7b90b20f0bbcd92e3008b110b4114 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Fri, 19 Mar 2021 23:03:51 +0200 Subject: [PATCH 123/372] fix(AMQP extension): get it worked for php-worker image We need to be able to build AMQP for php-worker on PHP 7.0: there are some version conflicts. Closes #2891 --- php-worker/Dockerfile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index d3f97431..4c21bdab 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -214,14 +214,20 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ && make install \ ;fi - # Install AMQP: ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ - apk --update add rabbitmq-c rabbitmq-c-dev && \ - pecl install amqp && \ + apk del -q openssl openssl-dev && \ + apk --update add -q rabbitmq-c rabbitmq-c-dev && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + printf "\n" | pecl install amqp-1.11.0beta; \ + else \ + printf "\n" | pecl install amqp; \ + fi && \ docker-php-ext-enable amqp && \ + apk del -q rabbitmq-c-dev && \ + apk add --update -q openssl openssl-dev && \ docker-php-ext-install sockets \ ;fi From 267b972d17225fae0e9c781a38be4dd7b4ec1dd3 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 20 Mar 2021 00:37:43 +0200 Subject: [PATCH 124/372] fix(AMQP extension): remove unnecessary apt update Avoid extra update. Closes #2891 --- php-fpm/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index e1b121f9..472dc850 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -381,7 +381,6 @@ ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ # download and install manually, to make sure it's compatible with ampq installed by pecl later # install cmake first - apt-get -yqq update && \ apt-get -yqq install cmake && \ curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz && \ mkdir -p rabbitmq-c && \ From 10386aa7a3016d2d6c3c6a2b8cdf30191af95e37 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 20 Mar 2021 01:32:39 +0200 Subject: [PATCH 125/372] fix(inotify extension): avoid typo Get inotify installed correctly. --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index af8da12b..23740a8f 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -634,7 +634,7 @@ RUN if [ ${INSTALL_INOTIFY} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl -q install inotify-0.1.6 && \ echo "extension=inotify.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-inotify.ini \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-inotify.ini; \ else \ pecl -q install inotify && \ echo "extension=inotify.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/inotify.ini && \ From 15bf900fe68cdeb42a6e03518476141559c8d9c6 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 20 Mar 2021 01:45:51 +0200 Subject: [PATCH 126/372] fix(envoy package): avoid specified version to support older PHP versions We need to be able to install envoy for all versions of PHP. (cherry picked from commit 7458e04d2c8287ed418a3f6cd7b82d9e6238db85) --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index af8da12b..6adb1491 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -981,7 +981,7 @@ ARG INSTALL_LARAVEL_ENVOY=false RUN if [ ${INSTALL_LARAVEL_ENVOY} = true ]; then \ # Install the Laravel Envoy - composer global require "laravel/envoy=~2.0" \ + composer global require laravel/envoy \ ;fi ########################################################################### From 21dcc046c9ad69d62c56f121978fb3035f83c7ec Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 20 Mar 2021 02:10:09 +0200 Subject: [PATCH 127/372] fix(hirak/prestissimo package): normalize installation of the package Avoid installation of hirak/prestissimo for the second version of the composer. Change user to root, due to usage of this user as a common one. --- workspace/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index af8da12b..188284e3 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1026,13 +1026,13 @@ RUN if [ ${INSTALL_DEPLOYER} = true ]; then \ ########################################################################### # Prestissimo: ########################################################################### -USER laradock - ARG INSTALL_PRESTISSIMO=false RUN if [ ${INSTALL_PRESTISSIMO} = true ]; then \ - # Install Prestissimo - composer global require "hirak/prestissimo" \ + if [ $(php -r "echo COMPOSER_VERSION;") = "1" ]; then \ + # Install Prestissimo + composer global require "hirak/prestissimo" \ + ;fi ;fi ########################################################################### From 2b778af03ff50c0080af9e5b67ba4778313e4ab3 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 20 Mar 2021 02:44:04 +0200 Subject: [PATCH 128/372] fix(ioncube extension): remove installation for PHP 8 PHP 8.0 currently is not supported, so it should be remove from the building for this version. --- php-fpm/Dockerfile | 14 ++++++++------ workspace/Dockerfile | 15 +++++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index f32e8a7e..7eb23dd0 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -595,12 +595,14 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ ARG INSTALL_IONCUBE=false RUN if [ ${INSTALL_IONCUBE} = true ]; then \ - # Install the php ioncube loader - curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ - && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ - && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ - && printf "zend_extension=ioncube_loader.so\n" > $PHP_INI_DIR/conf.d/0ioncube.ini \ - && rm -rf /tmp/ioncube* \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + # Install the php ioncube loader + curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ + && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ + && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ + && printf "zend_extension=ioncube_loader.so\n" > $PHP_INI_DIR/conf.d/0ioncube.ini \ + && rm -rf /tmp/ioncube* \ + ;fi \ ;fi ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index af8da12b..449ff90d 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -691,12 +691,15 @@ RUN if [ ${INSTALL_GRAPHVIZ} = true ]; then \ ARG INSTALL_IONCUBE=false RUN if [ ${INSTALL_IONCUBE} = true ]; then \ - # Install the php ioncube loader - curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ - && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ - && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ - && echo "zend_extension=ioncube_loader.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/0ioncube.ini \ - && rm -rf /tmp/ioncube* \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + # Install the php ioncube loader + curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ + && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ + && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ + && echo "zend_extension=ioncube_loader.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/ioncube.ini \ + && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/ioncube.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/0ioncube.ini \ + && rm -rf /tmp/ioncube* \ + ;fi \ ;fi ########################################################################### From e059740296f894054290f1cb22cdfc5148338fff Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 20 Mar 2021 02:47:27 +0200 Subject: [PATCH 129/372] fix(hirak/prestissimo package): add end of the line --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 188284e3..3563988a 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1032,7 +1032,7 @@ RUN if [ ${INSTALL_PRESTISSIMO} = true ]; then \ if [ $(php -r "echo COMPOSER_VERSION;") = "1" ]; then \ # Install Prestissimo composer global require "hirak/prestissimo" \ - ;fi + ;fi \ ;fi ########################################################################### From 2dccc3ca807fbb92a2b664738d69eef66a26058d Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sat, 20 Mar 2021 02:56:58 +0200 Subject: [PATCH 130/372] feat(PHP 8.0): add ini file Add development ini file for the PHP 8.0 Closes #2781 --- php-fpm/php8.0.ini | 1944 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1944 insertions(+) create mode 100644 php-fpm/php8.0.ini diff --git a/php-fpm/php8.0.ini b/php-fpm/php8.0.ini new file mode 100644 index 00000000..06e4a5af --- /dev/null +++ b/php-fpm/php8.0.ini @@ -0,0 +1,1944 @@ +[PHP] + +;;;;;;;;;;;;;;;;;;; +; About php.ini ; +;;;;;;;;;;;;;;;;;;; +; PHP's initialization file, generally called php.ini, is responsible for +; configuring many of the aspects of PHP's behavior. + +; PHP attempts to find and load this configuration from a number of locations. +; The following is a summary of its search order: +; 1. SAPI module specific location. +; 2. The PHPRC environment variable. (As of PHP 5.2.0) +; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) +; 4. Current working directory (except CLI) +; 5. The web server's directory (for SAPI modules), or directory of PHP +; (otherwise in Windows) +; 6. The directory from the --with-config-file-path compile time option, or the +; Windows directory (usually C:\windows) +; See the PHP docs for more specific information. +; http://php.net/configuration.file + +; The syntax of the file is extremely simple. Whitespace and lines +; beginning with a semicolon are silently ignored (as you probably guessed). +; Section headers (e.g. [Foo]) are also silently ignored, even though +; they might mean something in the future. + +; Directives following the section heading [PATH=/www/mysite] only +; apply to PHP files in the /www/mysite directory. Directives +; following the section heading [HOST=www.example.com] only apply to +; PHP files served from www.example.com. Directives set in these +; special sections cannot be overridden by user-defined INI files or +; at runtime. Currently, [PATH=] and [HOST=] sections only work under +; CGI/FastCGI. +; http://php.net/ini.sections + +; Directives are specified using the following syntax: +; directive = value +; Directive names are *case sensitive* - foo=bar is different from FOO=bar. +; Directives are variables used to configure PHP or PHP extensions. +; There is no name validation. If PHP can't find an expected +; directive because it is not set or is mistyped, a default value will be used. + +; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one +; of the INI constants (On, Off, True, False, Yes, No and None) or an expression +; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a +; previously set variable or directive (e.g. ${foo}) + +; Expressions in the INI file are limited to bitwise operators and parentheses: +; | bitwise OR +; ^ bitwise XOR +; & bitwise AND +; ~ bitwise NOT +; ! boolean NOT + +; Boolean flags can be turned on using the values 1, On, True or Yes. +; They can be turned off using the values 0, Off, False or No. + +; An empty string can be denoted by simply not writing anything after the equal +; sign, or by using the None keyword: + +; foo = ; sets foo to an empty string +; foo = None ; sets foo to an empty string +; foo = "None" ; sets foo to the string 'None' + +; If you use constants in your value, and these constants belong to a +; dynamically loaded extension (either a PHP extension or a Zend extension), +; you may only use these constants *after* the line that loads the extension. + +;;;;;;;;;;;;;;;;;;; +; About this file ; +;;;;;;;;;;;;;;;;;;; +; PHP comes packaged with two INI files. One that is recommended to be used +; in production environments and one that is recommended to be used in +; development environments. + +; php.ini-production contains settings which hold security, performance and +; best practices at its core. But please be aware, these settings may break +; compatibility with older or less security conscience applications. We +; recommending using the production ini in production and testing environments. + +; php.ini-development is very similar to its production variant, except it is +; much more verbose when it comes to errors. We recommend using the +; development version only in development environments, as errors shown to +; application users can inadvertently leak otherwise secure information. + +; This is the php.ini-development INI file. + +;;;;;;;;;;;;;;;;;;; +; Quick Reference ; +;;;;;;;;;;;;;;;;;;; + +; The following are all the settings which are different in either the production +; or development versions of the INIs with respect to PHP's default behavior. +; Please see the actual settings later in the document for more details as to why +; we recommend these changes in PHP's behavior. + +; display_errors +; Default Value: On +; Development Value: On +; Production Value: Off + +; display_startup_errors +; Default Value: On +; Development Value: On +; Production Value: Off + +; error_reporting +; Default Value: E_ALL +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT + +; log_errors +; Default Value: Off +; Development Value: On +; Production Value: On + +; max_input_time +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) + +; output_buffering +; Default Value: Off +; Development Value: 4096 +; Production Value: 4096 + +; register_argc_argv +; Default Value: On +; Development Value: Off +; Production Value: Off + +; request_order +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" + +; session.gc_divisor +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 + +; session.sid_bits_per_character +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 + +; short_open_tag +; Default Value: On +; Development Value: Off +; Production Value: Off + +; variables_order +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS" + +; zend.exception_ignore_args +; Default Value: Off +; Development Value: Off +; Production Value: On + +; zend.exception_string_param_max_len +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 + +;;;;;;;;;;;;;;;;;;;; +; php.ini Options ; +;;;;;;;;;;;;;;;;;;;; +; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" +;user_ini.filename = ".user.ini" + +; To disable this feature set this option to an empty value +;user_ini.filename = + +; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) +;user_ini.cache_ttl = 300 + +;;;;;;;;;;;;;;;;;;;; +; Language Options ; +;;;;;;;;;;;;;;;;;;;; + +; Enable the PHP scripting language engine under Apache. +; http://php.net/engine +engine = On + +; This directive determines whether or not PHP will recognize code between +; tags as PHP source which should be processed as such. It is +; generally recommended that should be used and that this feature +; should be disabled, as enabling it may result in issues when generating XML +; documents, however this remains supported for backward compatibility reasons. +; Note that this directive does not control the would work. +; http://php.net/syntax-highlighting +;highlight.string = #DD0000 +;highlight.comment = #FF9900 +;highlight.keyword = #007700 +;highlight.default = #0000BB +;highlight.html = #000000 + +; If enabled, the request will be allowed to complete even if the user aborts +; the request. Consider enabling it if executing long requests, which may end up +; being interrupted by the user or a browser timing out. PHP's default behavior +; is to disable this feature. +; http://php.net/ignore-user-abort +;ignore_user_abort = On + +; Determines the size of the realpath cache to be used by PHP. This value should +; be increased on systems where PHP opens many files to reflect the quantity of +; the file operations performed. +; Note: if open_basedir is set, the cache is disabled +; http://php.net/realpath-cache-size +;realpath_cache_size = 4096k + +; Duration of time, in seconds for which to cache realpath information for a given +; file or directory. For systems with rarely changing files, consider increasing this +; value. +; http://php.net/realpath-cache-ttl +;realpath_cache_ttl = 120 + +; Enables or disables the circular reference collector. +; http://php.net/zend.enable-gc +zend.enable_gc = On + +; If enabled, scripts may be written in encodings that are incompatible with +; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such +; encodings. To use this feature, mbstring extension must be enabled. +;zend.multibyte = Off + +; Allows to set the default encoding for the scripts. This value will be used +; unless "declare(encoding=...)" directive appears at the top of the script. +; Only affects if zend.multibyte is set. +;zend.script_encoding = + +; Allows to include or exclude arguments from stack traces generated for exceptions. +; In production, it is recommended to turn this setting on to prohibit the output +; of sensitive information in stack traces +; Default Value: Off +; Development Value: Off +; Production Value: On +zend.exception_ignore_args = Off + +; Allows setting the maximum string length in an argument of a stringified stack trace +; to a value between 0 and 1000000. +; This has no effect when zend.exception_ignore_args is enabled. +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 +zend.exception_string_param_max_len = 15 + +;;;;;;;;;;;;;;;;; +; Miscellaneous ; +;;;;;;;;;;;;;;;;; + +; Decides whether PHP may expose the fact that it is installed on the server +; (e.g. by adding its signature to the Web server header). It is no security +; threat in any way, but it makes it possible to determine whether you use PHP +; on your server or not. +; http://php.net/expose-php +expose_php = On + +;;;;;;;;;;;;;;;;;;; +; Resource Limits ; +;;;;;;;;;;;;;;;;;;; + +; Maximum execution time of each script, in seconds +; http://php.net/max-execution-time +; Note: This directive is hardcoded to 0 for the CLI SAPI +max_execution_time = 30 + +; Maximum amount of time each script may spend parsing request data. It's a good +; idea to limit this time on productions servers in order to eliminate unexpectedly +; long running scripts. +; Note: This directive is hardcoded to -1 for the CLI SAPI +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) +; http://php.net/max-input-time +max_input_time = 60 + +; Maximum input variable nesting level +; http://php.net/max-input-nesting-level +;max_input_nesting_level = 64 + +; How many GET/POST/COOKIE input variables may be accepted +;max_input_vars = 1000 + +; Maximum amount of memory a script may consume +; http://php.net/memory-limit +memory_limit = 128M + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Error handling and logging ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; This directive informs PHP of which errors, warnings and notices you would like +; it to take action for. The recommended way of setting values for this +; directive is through the use of the error level constants and bitwise +; operators. The error level constants are below here for convenience as well as +; some common settings and their meanings. +; By default, PHP is set to take action on all errors, notices and warnings EXCEPT +; those related to E_NOTICE and E_STRICT, which together cover best practices and +; recommended coding standards in PHP. For performance reasons, this is the +; recommend error reporting setting. Your production server shouldn't be wasting +; resources complaining about best practices and coding standards. That's what +; development servers and development settings are for. +; Note: The php.ini-development file has this setting as E_ALL. This +; means it pretty much reports everything which is exactly what you want during +; development and early testing. +; +; Error Level Constants: +; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) +; E_ERROR - fatal run-time errors +; E_RECOVERABLE_ERROR - almost fatal run-time errors +; E_WARNING - run-time warnings (non-fatal errors) +; E_PARSE - compile-time parse errors +; E_NOTICE - run-time notices (these are warnings which often result +; from a bug in your code, but it's possible that it was +; intentional (e.g., using an uninitialized variable and +; relying on the fact it is automatically initialized to an +; empty string) +; E_STRICT - run-time notices, enable to have PHP suggest changes +; to your code which will ensure the best interoperability +; and forward compatibility of your code +; E_CORE_ERROR - fatal errors that occur during PHP's initial startup +; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's +; initial startup +; E_COMPILE_ERROR - fatal compile-time errors +; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) +; E_USER_ERROR - user-generated error message +; E_USER_WARNING - user-generated warning message +; E_USER_NOTICE - user-generated notice message +; E_DEPRECATED - warn about code that will not work in future versions +; of PHP +; E_USER_DEPRECATED - user-generated deprecation warnings +; +; Common Values: +; E_ALL (Show all errors, warnings and notices including coding standards.) +; E_ALL & ~E_NOTICE (Show all errors, except for notices) +; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) +; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) +; Default Value: E_ALL +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT +; http://php.net/error-reporting +error_reporting = E_ALL + +; This directive controls whether or not and where PHP will output errors, +; notices and warnings too. Error output is very useful during development, but +; it could be very dangerous in production environments. Depending on the code +; which is triggering the error, sensitive information could potentially leak +; out of your application such as database usernames and passwords or worse. +; For production environments, we recommend logging errors rather than +; sending them to STDOUT. +; Possible Values: +; Off = Do not display any errors +; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) +; On or stdout = Display errors to STDOUT +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/display-errors +display_errors = On + +; The display of errors which occur during PHP's startup sequence are handled +; separately from display_errors. We strongly recommend you set this to 'off' +; for production servers to avoid leaking configuration details. +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/display-startup-errors +display_startup_errors = On + +; Besides displaying errors, PHP can also log errors to locations such as a +; server-specific log, STDERR, or a location specified by the error_log +; directive found below. While errors should not be displayed on productions +; servers they should still be monitored and logging is a great way to do that. +; Default Value: Off +; Development Value: On +; Production Value: On +; http://php.net/log-errors +log_errors = On + +; Set maximum length of log_errors. In error_log information about the source is +; added. The default is 1024 and 0 allows to not apply any maximum length at all. +; http://php.net/log-errors-max-len +log_errors_max_len = 1024 + +; Do not log repeated messages. Repeated errors must occur in same file on same +; line unless ignore_repeated_source is set true. +; http://php.net/ignore-repeated-errors +ignore_repeated_errors = Off + +; Ignore source of message when ignoring repeated messages. When this setting +; is On you will not log errors with repeated messages from different files or +; source lines. +; http://php.net/ignore-repeated-source +ignore_repeated_source = Off + +; If this parameter is set to Off, then memory leaks will not be shown (on +; stdout or in the log). This is only effective in a debug compile, and if +; error reporting includes E_WARNING in the allowed list +; http://php.net/report-memleaks +report_memleaks = On + +; This setting is off by default. +;report_zend_debug = 0 + +; Turn off normal error reporting and emit XML-RPC error XML +; http://php.net/xmlrpc-errors +;xmlrpc_errors = 0 + +; An XML-RPC faultCode +;xmlrpc_error_number = 0 + +; When PHP displays or logs an error, it has the capability of formatting the +; error message as HTML for easier reading. This directive controls whether +; the error message is formatted as HTML or not. +; Note: This directive is hardcoded to Off for the CLI SAPI +; http://php.net/html-errors +;html_errors = On + +; If html_errors is set to On *and* docref_root is not empty, then PHP +; produces clickable error messages that direct to a page describing the error +; or function causing the error in detail. +; You can download a copy of the PHP manual from http://php.net/docs +; and change docref_root to the base URL of your local copy including the +; leading '/'. You must also specify the file extension being used including +; the dot. PHP's default behavior is to leave these settings empty, in which +; case no links to documentation are generated. +; Note: Never use this feature for production boxes. +; http://php.net/docref-root +; Examples +;docref_root = "/phpmanual/" + +; http://php.net/docref-ext +;docref_ext = .html + +; String to output before an error message. PHP's default behavior is to leave +; this setting blank. +; http://php.net/error-prepend-string +; Example: +;error_prepend_string = "" + +; String to output after an error message. PHP's default behavior is to leave +; this setting blank. +; http://php.net/error-append-string +; Example: +;error_append_string = "" + +; Log errors to specified file. PHP's default behavior is to leave this value +; empty. +; http://php.net/error-log +; Example: +;error_log = php_errors.log +; Log errors to syslog (Event Log on Windows). +;error_log = syslog + +; The syslog ident is a string which is prepended to every message logged +; to syslog. Only used when error_log is set to syslog. +;syslog.ident = php + +; The syslog facility is used to specify what type of program is logging +; the message. Only used when error_log is set to syslog. +;syslog.facility = user + +; Set this to disable filtering control characters (the default). +; Some loggers only accept NVT-ASCII, others accept anything that's not +; control characters. If your logger accepts everything, then no filtering +; is needed at all. +; Allowed values are: +; ascii (all printable ASCII characters and NL) +; no-ctrl (all characters except control characters) +; all (all characters) +; raw (like "all", but messages are not split at newlines) +; http://php.net/syslog.filter +;syslog.filter = ascii + +;windows.show_crt_warning +; Default value: 0 +; Development value: 0 +; Production value: 0 + +;;;;;;;;;;;;;;;;; +; Data Handling ; +;;;;;;;;;;;;;;;;; + +; The separator used in PHP generated URLs to separate arguments. +; PHP's default setting is "&". +; http://php.net/arg-separator.output +; Example: +;arg_separator.output = "&" + +; List of separator(s) used by PHP to parse input URLs into variables. +; PHP's default setting is "&". +; NOTE: Every character in this directive is considered as separator! +; http://php.net/arg-separator.input +; Example: +;arg_separator.input = ";&" + +; This directive determines which super global arrays are registered when PHP +; starts up. G,P,C,E & S are abbreviations for the following respective super +; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty +; paid for the registration of these arrays and because ENV is not as commonly +; used as the others, ENV is not recommended on productions servers. You +; can still get access to the environment variables through getenv() should you +; need to. +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS"; +; http://php.net/variables-order +variables_order = "GPCS" + +; This directive determines which super global data (G,P & C) should be +; registered into the super global array REQUEST. If so, it also determines +; the order in which that data is registered. The values for this directive +; are specified in the same manner as the variables_order directive, +; EXCEPT one. Leaving this value empty will cause PHP to use the value set +; in the variables_order directive. It does not mean it will leave the super +; globals array REQUEST empty. +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" +; http://php.net/request-order +request_order = "GP" + +; This directive determines whether PHP registers $argv & $argc each time it +; runs. $argv contains an array of all the arguments passed to PHP when a script +; is invoked. $argc contains an integer representing the number of arguments +; that were passed when the script was invoked. These arrays are extremely +; useful when running scripts from the command line. When this directive is +; enabled, registering these variables consumes CPU cycles and memory each time +; a script is executed. For performance reasons, this feature should be disabled +; on production servers. +; Note: This directive is hardcoded to On for the CLI SAPI +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/register-argc-argv +register_argc_argv = Off + +; When enabled, the ENV, REQUEST and SERVER variables are created when they're +; first used (Just In Time) instead of when the script starts. If these +; variables are not used within a script, having this directive on will result +; in a performance gain. The PHP directive register_argc_argv must be disabled +; for this directive to have any effect. +; http://php.net/auto-globals-jit +auto_globals_jit = On + +; Whether PHP will read the POST data. +; This option is enabled by default. +; Most likely, you won't want to disable this option globally. It causes $_POST +; and $_FILES to always be empty; the only way you will be able to read the +; POST data will be through the php://input stream wrapper. This can be useful +; to proxy requests or to process the POST data in a memory efficient fashion. +; http://php.net/enable-post-data-reading +;enable_post_data_reading = Off + +; Maximum size of POST data that PHP will accept. +; Its value may be 0 to disable the limit. It is ignored if POST data reading +; is disabled through enable_post_data_reading. +; http://php.net/post-max-size +post_max_size = 8M + +; Automatically add files before PHP document. +; http://php.net/auto-prepend-file +auto_prepend_file = + +; Automatically add files after PHP document. +; http://php.net/auto-append-file +auto_append_file = + +; By default, PHP will output a media type using the Content-Type header. To +; disable this, simply set it to be empty. +; +; PHP's built-in default media type is set to text/html. +; http://php.net/default-mimetype +default_mimetype = "text/html" + +; PHP's default character set is set to UTF-8. +; http://php.net/default-charset +default_charset = "UTF-8" + +; PHP internal character encoding is set to empty. +; If empty, default_charset is used. +; http://php.net/internal-encoding +;internal_encoding = + +; PHP input character encoding is set to empty. +; If empty, default_charset is used. +; http://php.net/input-encoding +;input_encoding = + +; PHP output character encoding is set to empty. +; If empty, default_charset is used. +; See also output_buffer. +; http://php.net/output-encoding +;output_encoding = + +;;;;;;;;;;;;;;;;;;;;;;;;; +; Paths and Directories ; +;;;;;;;;;;;;;;;;;;;;;;;;; + +; UNIX: "/path1:/path2" +;include_path = ".:/php/includes" +; +; Windows: "\path1;\path2" +;include_path = ".;c:\php\includes" +; +; PHP's default setting for include_path is ".;/path/to/php/pear" +; http://php.net/include-path + +; The root of the PHP pages, used only if nonempty. +; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root +; if you are running php as a CGI under any web server (other than IIS) +; see documentation for security issues. The alternate is to use the +; cgi.force_redirect configuration below +; http://php.net/doc-root +doc_root = + +; The directory under which PHP opens the script using /~username used only +; if nonempty. +; http://php.net/user-dir +user_dir = + +; Directory in which the loadable extensions (modules) reside. +; http://php.net/extension-dir +;extension_dir = "./" +; On windows: +;extension_dir = "ext" + +; Directory where the temporary files should be placed. +; Defaults to the system default (see sys_get_temp_dir) +;sys_temp_dir = "/tmp" + +; Whether or not to enable the dl() function. The dl() function does NOT work +; properly in multithreaded servers, such as IIS or Zeus, and is automatically +; disabled on them. +; http://php.net/enable-dl +enable_dl = Off + +; cgi.force_redirect is necessary to provide security running PHP as a CGI under +; most web servers. Left undefined, PHP turns this on by default. You can +; turn it off here AT YOUR OWN RISK +; **You CAN safely turn this off for IIS, in fact, you MUST.** +; http://php.net/cgi.force-redirect +;cgi.force_redirect = 1 + +; if cgi.nph is enabled it will force cgi to always sent Status: 200 with +; every request. PHP's default behavior is to disable this feature. +;cgi.nph = 1 + +; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape +; (iPlanet) web servers, you MAY need to set an environment variable name that PHP +; will look for to know it is OK to continue execution. Setting this variable MAY +; cause security issues, KNOW WHAT YOU ARE DOING FIRST. +; http://php.net/cgi.redirect-status-env +;cgi.redirect_status_env = + +; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's +; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok +; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting +; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting +; of zero causes PHP to behave as before. Default is 1. You should fix your scripts +; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. +; http://php.net/cgi.fix-pathinfo +;cgi.fix_pathinfo=1 + +; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside +; of the web tree and people will not be able to circumvent .htaccess security. +;cgi.discard_path=1 + +; FastCGI under IIS supports the ability to impersonate +; security tokens of the calling client. This allows IIS to define the +; security context that the request runs under. mod_fastcgi under Apache +; does not currently support this feature (03/17/2002) +; Set to 1 if running under IIS. Default is zero. +; http://php.net/fastcgi.impersonate +;fastcgi.impersonate = 1 + +; Disable logging through FastCGI connection. PHP's default behavior is to enable +; this feature. +;fastcgi.logging = 0 + +; cgi.rfc2616_headers configuration option tells PHP what type of headers to +; use when sending HTTP response code. If set to 0, PHP sends Status: header that +; is supported by Apache. When this option is set to 1, PHP will send +; RFC2616 compliant header. +; Default is zero. +; http://php.net/cgi.rfc2616-headers +;cgi.rfc2616_headers = 0 + +; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #! +; (shebang) at the top of the running script. This line might be needed if the +; script support running both as stand-alone script and via PHP CGI<. PHP in CGI +; mode skips this line and ignores its content if this directive is turned on. +; http://php.net/cgi.check-shebang-line +;cgi.check_shebang_line=1 + +;;;;;;;;;;;;;;;; +; File Uploads ; +;;;;;;;;;;;;;;;; + +; Whether to allow HTTP file uploads. +; http://php.net/file-uploads +file_uploads = On + +; Temporary directory for HTTP uploaded files (will use system default if not +; specified). +; http://php.net/upload-tmp-dir +;upload_tmp_dir = + +; Maximum allowed size for uploaded files. +; http://php.net/upload-max-filesize +upload_max_filesize = 2M + +; Maximum number of files that can be uploaded via a single request +max_file_uploads = 20 + +;;;;;;;;;;;;;;;;;; +; Fopen wrappers ; +;;;;;;;;;;;;;;;;;; + +; Whether to allow the treatment of URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-fopen +allow_url_fopen = On + +; Whether to allow include/require to open URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-include +allow_url_include = Off + +; Define the anonymous ftp password (your email address). PHP's default setting +; for this is empty. +; http://php.net/from +;from="john@doe.com" + +; Define the User-Agent string. PHP's default setting for this is empty. +; http://php.net/user-agent +;user_agent="PHP" + +; Default timeout for socket based streams (seconds) +; http://php.net/default-socket-timeout +default_socket_timeout = 60 + +; If your scripts have to deal with files from Macintosh systems, +; or you are running on a Mac and need to deal with files from +; unix or win32 systems, setting this flag will cause PHP to +; automatically detect the EOL character in those files so that +; fgets() and file() will work regardless of the source of the file. +; http://php.net/auto-detect-line-endings +;auto_detect_line_endings = Off + +;;;;;;;;;;;;;;;;;;;;;; +; Dynamic Extensions ; +;;;;;;;;;;;;;;;;;;;;;; + +; If you wish to have an extension loaded automatically, use the following +; syntax: +; +; extension=modulename +; +; For example: +; +; extension=mysqli +; +; When the extension library to load is not located in the default extension +; directory, You may specify an absolute path to the library file: +; +; extension=/path/to/extension/mysqli.so +; +; Note : The syntax used in previous PHP versions ('extension=.so' and +; 'extension='php_.dll') is supported for legacy reasons and may be +; deprecated in a future PHP major version. So, when it is possible, please +; move to the new ('extension=) syntax. +; +; Notes for Windows environments : +; +; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) +; extension folders as well as the separate PECL DLL download (PHP 5+). +; Be sure to appropriately set the extension_dir directive. +; +;extension=bz2 +;extension=curl +;extension=ffi +;extension=ftp +;extension=fileinfo +;extension=gd +;extension=gettext +;extension=gmp +;extension=intl +;extension=imap +;extension=ldap +;extension=mbstring +;extension=exif ; Must be after mbstring as it depends on it +;extension=mysqli +;extension=oci8_12c ; Use with Oracle Database 12c Instant Client +;extension=oci8_19 ; Use with Oracle Database 19 Instant Client +;extension=odbc +;extension=openssl +;extension=pdo_firebird +;extension=pdo_mysql +;extension=pdo_oci +;extension=pdo_odbc +;extension=pdo_pgsql +;extension=pdo_sqlite +;extension=pgsql +;extension=shmop + +; The MIBS data available in the PHP distribution must be installed. +; See http://www.php.net/manual/en/snmp.installation.php +;extension=snmp + +;extension=soap +;extension=sockets +;extension=sodium +;extension=sqlite3 +;extension=tidy +;extension=xsl + +;zend_extension=opcache + +;;;;;;;;;;;;;;;;;;; +; Module Settings ; +;;;;;;;;;;;;;;;;;;; + +[CLI Server] +; Whether the CLI web server uses ANSI color coding in its terminal output. +cli_server.color = On + +[Date] +; Defines the default timezone used by the date functions +; http://php.net/date.timezone +;date.timezone = + +; http://php.net/date.default-latitude +;date.default_latitude = 31.7667 + +; http://php.net/date.default-longitude +;date.default_longitude = 35.2333 + +; http://php.net/date.sunrise-zenith +;date.sunrise_zenith = 90.833333 + +; http://php.net/date.sunset-zenith +;date.sunset_zenith = 90.833333 + +[filter] +; http://php.net/filter.default +;filter.default = unsafe_raw + +; http://php.net/filter.default-flags +;filter.default_flags = + +[iconv] +; Use of this INI entry is deprecated, use global input_encoding instead. +; If empty, default_charset or input_encoding or iconv.input_encoding is used. +; The precedence is: default_charset < input_encoding < iconv.input_encoding +;iconv.input_encoding = + +; Use of this INI entry is deprecated, use global internal_encoding instead. +; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. +; The precedence is: default_charset < internal_encoding < iconv.internal_encoding +;iconv.internal_encoding = + +; Use of this INI entry is deprecated, use global output_encoding instead. +; If empty, default_charset or output_encoding or iconv.output_encoding is used. +; The precedence is: default_charset < output_encoding < iconv.output_encoding +; To use an output encoding conversion, iconv's output handler must be set +; otherwise output encoding conversion cannot be performed. +;iconv.output_encoding = + +[imap] +; rsh/ssh logins are disabled by default. Use this INI entry if you want to +; enable them. Note that the IMAP library does not filter mailbox names before +; passing them to rsh/ssh command, thus passing untrusted data to this function +; with rsh/ssh enabled is insecure. +;imap.enable_insecure_rsh=0 + +[intl] +;intl.default_locale = +; This directive allows you to produce PHP errors when some error +; happens within intl functions. The value is the level of the error produced. +; Default is 0, which does not produce any errors. +;intl.error_level = E_WARNING +;intl.use_exceptions = 0 + +[sqlite3] +; Directory pointing to SQLite3 extensions +; http://php.net/sqlite3.extension-dir +;sqlite3.extension_dir = + +; SQLite defensive mode flag (only available from SQLite 3.26+) +; When the defensive flag is enabled, language features that allow ordinary +; SQL to deliberately corrupt the database file are disabled. This forbids +; writing directly to the schema, shadow tables (eg. FTS data tables), or +; the sqlite_dbpage virtual table. +; https://www.sqlite.org/c3ref/c_dbconfig_defensive.html +; (for older SQLite versions, this flag has no use) +;sqlite3.defensive = 1 + +[Pcre] +; PCRE library backtracking limit. +; http://php.net/pcre.backtrack-limit +;pcre.backtrack_limit=100000 + +; PCRE library recursion limit. +; Please note that if you set this value to a high number you may consume all +; the available process stack and eventually crash PHP (due to reaching the +; stack size limit imposed by the Operating System). +; http://php.net/pcre.recursion-limit +;pcre.recursion_limit=100000 + +; Enables or disables JIT compilation of patterns. This requires the PCRE +; library to be compiled with JIT support. +;pcre.jit=1 + +[Pdo] +; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" +; http://php.net/pdo-odbc.connection-pooling +;pdo_odbc.connection_pooling=strict + +[Pdo_mysql] +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +pdo_mysql.default_socket= + +[Phar] +; http://php.net/phar.readonly +;phar.readonly = On + +; http://php.net/phar.require-hash +;phar.require_hash = On + +;phar.cache_list = + +[mail function] +; For Win32 only. +; http://php.net/smtp +SMTP = localhost +; http://php.net/smtp-port +smtp_port = 25 + +; For Win32 only. +; http://php.net/sendmail-from +;sendmail_from = me@example.com + +; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). +; http://php.net/sendmail-path +;sendmail_path = + +; Force the addition of the specified parameters to be passed as extra parameters +; to the sendmail binary. These parameters will always replace the value of +; the 5th parameter to mail(). +;mail.force_extra_parameters = + +; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename +mail.add_x_header = Off + +; The path to a log file that will log all mail() calls. Log entries include +; the full path of the script, line number, To address and headers. +;mail.log = +; Log mail to syslog (Event Log on Windows). +;mail.log = syslog + +[ODBC] +; http://php.net/odbc.default-db +;odbc.default_db = Not yet implemented + +; http://php.net/odbc.default-user +;odbc.default_user = Not yet implemented + +; http://php.net/odbc.default-pw +;odbc.default_pw = Not yet implemented + +; Controls the ODBC cursor model. +; Default: SQL_CURSOR_STATIC (default). +;odbc.default_cursortype + +; Allow or prevent persistent links. +; http://php.net/odbc.allow-persistent +odbc.allow_persistent = On + +; Check that a connection is still valid before reuse. +; http://php.net/odbc.check-persistent +odbc.check_persistent = On + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/odbc.max-persistent +odbc.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/odbc.max-links +odbc.max_links = -1 + +; Handling of LONG fields. Returns number of bytes to variables. 0 means +; passthru. +; http://php.net/odbc.defaultlrl +odbc.defaultlrl = 4096 + +; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. +; See the documentation on odbc_binmode and odbc_longreadlen for an explanation +; of odbc.defaultlrl and odbc.defaultbinmode +; http://php.net/odbc.defaultbinmode +odbc.defaultbinmode = 1 + +[MySQLi] + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/mysqli.max-persistent +mysqli.max_persistent = -1 + +; Allow accessing, from PHP's perspective, local files with LOAD DATA statements +; http://php.net/mysqli.allow_local_infile +;mysqli.allow_local_infile = On + +; Allow or prevent persistent links. +; http://php.net/mysqli.allow-persistent +mysqli.allow_persistent = On + +; Maximum number of links. -1 means no limit. +; http://php.net/mysqli.max-links +mysqli.max_links = -1 + +; Default port number for mysqli_connect(). If unset, mysqli_connect() will use +; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the +; compile-time value defined MYSQL_PORT (in that order). Win32 will only look +; at MYSQL_PORT. +; http://php.net/mysqli.default-port +mysqli.default_port = 3306 + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/mysqli.default-socket +mysqli.default_socket = + +; Default host for mysqli_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-host +mysqli.default_host = + +; Default user for mysqli_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-user +mysqli.default_user = + +; Default password for mysqli_connect() (doesn't apply in safe mode). +; Note that this is generally a *bad* idea to store passwords in this file. +; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") +; and reveal this password! And of course, any users with read access to this +; file will be able to reveal the password as well. +; http://php.net/mysqli.default-pw +mysqli.default_pw = + +; Allow or prevent reconnect +mysqli.reconnect = Off + +[mysqlnd] +; Enable / Disable collection of general statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +mysqlnd.collect_statistics = On + +; Enable / Disable collection of memory usage statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +mysqlnd.collect_memory_statistics = On + +; Records communication from all extensions using mysqlnd to the specified log +; file. +; http://php.net/mysqlnd.debug +;mysqlnd.debug = + +; Defines which queries will be logged. +;mysqlnd.log_mask = 0 + +; Default size of the mysqlnd memory pool, which is used by result sets. +;mysqlnd.mempool_default_size = 16000 + +; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. +;mysqlnd.net_cmd_buffer_size = 2048 + +; Size of a pre-allocated buffer used for reading data sent by the server in +; bytes. +;mysqlnd.net_read_buffer_size = 32768 + +; Timeout for network requests in seconds. +;mysqlnd.net_read_timeout = 31536000 + +; SHA-256 Authentication Plugin related. File with the MySQL server public RSA +; key. +;mysqlnd.sha256_server_public_key = + +[OCI8] + +; Connection: Enables privileged connections using external +; credentials (OCI_SYSOPER, OCI_SYSDBA) +; http://php.net/oci8.privileged-connect +;oci8.privileged_connect = Off + +; Connection: The maximum number of persistent OCI8 connections per +; process. Using -1 means no limit. +; http://php.net/oci8.max-persistent +;oci8.max_persistent = -1 + +; Connection: The maximum number of seconds a process is allowed to +; maintain an idle persistent connection. Using -1 means idle +; persistent connections will be maintained forever. +; http://php.net/oci8.persistent-timeout +;oci8.persistent_timeout = -1 + +; Connection: The number of seconds that must pass before issuing a +; ping during oci_pconnect() to check the connection validity. When +; set to 0, each oci_pconnect() will cause a ping. Using -1 disables +; pings completely. +; http://php.net/oci8.ping-interval +;oci8.ping_interval = 60 + +; Connection: Set this to a user chosen connection class to be used +; for all pooled server requests with Oracle 11g Database Resident +; Connection Pooling (DRCP). To use DRCP, this value should be set to +; the same string for all web servers running the same application, +; the database pool must be configured, and the connection string must +; specify to use a pooled server. +;oci8.connection_class = + +; High Availability: Using On lets PHP receive Fast Application +; Notification (FAN) events generated when a database node fails. The +; database must also be configured to post FAN events. +;oci8.events = Off + +; Tuning: This option enables statement caching, and specifies how +; many statements to cache. Using 0 disables statement caching. +; http://php.net/oci8.statement-cache-size +;oci8.statement_cache_size = 20 + +; Tuning: Enables statement prefetching and sets the default number of +; rows that will be fetched automatically after statement execution. +; http://php.net/oci8.default-prefetch +;oci8.default_prefetch = 100 + +; Compatibility. Using On means oci_close() will not close +; oci_connect() and oci_new_connect() connections. +; http://php.net/oci8.old-oci-close-semantics +;oci8.old_oci_close_semantics = Off + +[PostgreSQL] +; Allow or prevent persistent links. +; http://php.net/pgsql.allow-persistent +pgsql.allow_persistent = On + +; Detect broken persistent links always with pg_pconnect(). +; Auto reset feature requires a little overheads. +; http://php.net/pgsql.auto-reset-persistent +pgsql.auto_reset_persistent = Off + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/pgsql.max-persistent +pgsql.max_persistent = -1 + +; Maximum number of links (persistent+non persistent). -1 means no limit. +; http://php.net/pgsql.max-links +pgsql.max_links = -1 + +; Ignore PostgreSQL backends Notice message or not. +; Notice message logging require a little overheads. +; http://php.net/pgsql.ignore-notice +pgsql.ignore_notice = 0 + +; Log PostgreSQL backends Notice message or not. +; Unless pgsql.ignore_notice=0, module cannot log notice message. +; http://php.net/pgsql.log-notice +pgsql.log_notice = 0 + +[bcmath] +; Number of decimal digits for all bcmath functions. +; http://php.net/bcmath.scale +bcmath.scale = 0 + +[browscap] +; http://php.net/browscap +;browscap = extra/browscap.ini + +[Session] +; Handler used to store/retrieve data. +; http://php.net/session.save-handler +session.save_handler = files + +; Argument passed to save_handler. In the case of files, this is the path +; where data files are stored. Note: Windows users have to change this +; variable in order to use PHP's session functions. +; +; The path can be defined as: +; +; session.save_path = "N;/path" +; +; where N is an integer. Instead of storing all the session files in +; /path, what this will do is use subdirectories N-levels deep, and +; store the session data in those directories. This is useful if +; your OS has problems with many files in one directory, and is +; a more efficient layout for servers that handle many sessions. +; +; NOTE 1: PHP will not create this directory structure automatically. +; You can use the script in the ext/session dir for that purpose. +; NOTE 2: See the section on garbage collection below if you choose to +; use subdirectories for session storage +; +; The file storage module creates files using mode 600 by default. +; You can change that by using +; +; session.save_path = "N;MODE;/path" +; +; where MODE is the octal representation of the mode. Note that this +; does not overwrite the process's umask. +; http://php.net/session.save-path +;session.save_path = "/tmp" + +; Whether to use strict session mode. +; Strict session mode does not accept an uninitialized session ID, and +; regenerates the session ID if the browser sends an uninitialized session ID. +; Strict mode protects applications from session fixation via a session adoption +; vulnerability. It is disabled by default for maximum compatibility, but +; enabling it is encouraged. +; https://wiki.php.net/rfc/strict_sessions +session.use_strict_mode = 0 + +; Whether to use cookies. +; http://php.net/session.use-cookies +session.use_cookies = 1 + +; http://php.net/session.cookie-secure +;session.cookie_secure = + +; This option forces PHP to fetch and use a cookie for storing and maintaining +; the session id. We encourage this operation as it's very helpful in combating +; session hijacking when not specifying and managing your own session id. It is +; not the be-all and end-all of session hijacking defense, but it's a good start. +; http://php.net/session.use-only-cookies +session.use_only_cookies = 1 + +; Name of the session (used as cookie name). +; http://php.net/session.name +session.name = PHPSESSID + +; Initialize session on request startup. +; http://php.net/session.auto-start +session.auto_start = 0 + +; Lifetime in seconds of cookie or, if 0, until browser is restarted. +; http://php.net/session.cookie-lifetime +session.cookie_lifetime = 0 + +; The path for which the cookie is valid. +; http://php.net/session.cookie-path +session.cookie_path = / + +; The domain for which the cookie is valid. +; http://php.net/session.cookie-domain +session.cookie_domain = + +; Whether or not to add the httpOnly flag to the cookie, which makes it +; inaccessible to browser scripting languages such as JavaScript. +; http://php.net/session.cookie-httponly +session.cookie_httponly = + +; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) +; Current valid values are "Strict", "Lax" or "None". When using "None", +; make sure to include the quotes, as `none` is interpreted like `false` in ini files. +; https://tools.ietf.org/html/draft-west-first-party-cookies-07 +session.cookie_samesite = + +; Handler used to serialize data. php is the standard serializer of PHP. +; http://php.net/session.serialize-handler +session.serialize_handler = php + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using gc_probability/gc_divisor, +; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; http://php.net/session.gc-probability +session.gc_probability = 1 + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using gc_probability/gc_divisor, +; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. +; For high volume production servers, using a value of 1000 is a more efficient approach. +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 +; http://php.net/session.gc-divisor +session.gc_divisor = 1000 + +; After this number of seconds, stored data will be seen as 'garbage' and +; cleaned up by the garbage collection process. +; http://php.net/session.gc-maxlifetime +session.gc_maxlifetime = 1440 + +; NOTE: If you are using the subdirectory option for storing session files +; (see session.save_path above), then garbage collection does *not* +; happen automatically. You will need to do your own garbage +; collection through a shell script, cron entry, or some other method. +; For example, the following script is the equivalent of setting +; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): +; find /path/to/sessions -cmin +24 -type f | xargs rm + +; Check HTTP Referer to invalidate externally stored URLs containing ids. +; HTTP_REFERER has to contain this substring for the session to be +; considered as valid. +; http://php.net/session.referer-check +session.referer_check = + +; Set to {nocache,private,public,} to determine HTTP caching aspects +; or leave this empty to avoid sending anti-caching headers. +; http://php.net/session.cache-limiter +session.cache_limiter = nocache + +; Document expires after n minutes. +; http://php.net/session.cache-expire +session.cache_expire = 180 + +; trans sid support is disabled by default. +; Use of trans sid may risk your users' security. +; Use this option with caution. +; - User may send URL contains active session ID +; to other person via. email/irc/etc. +; - URL that contains active session ID may be stored +; in publicly accessible computer. +; - User may access your site with the same session ID +; always using URL stored in browser's history or bookmarks. +; http://php.net/session.use-trans-sid +session.use_trans_sid = 0 + +; Set session ID character length. This value could be between 22 to 256. +; Shorter length than default is supported only for compatibility reason. +; Users should use 32 or more chars. +; http://php.net/session.sid-length +; Default Value: 32 +; Development Value: 26 +; Production Value: 26 +session.sid_length = 26 + +; The URL rewriter will look for URLs in a defined set of HTML tags. +;

is special; if you include them here, the rewriter will +; add a hidden field with the info which is otherwise appended +; to URLs. tag's action attribute URL will not be modified +; unless it is specified. +; Note that all valid entries require a "=", even if no value follows. +; Default Value: "a=href,area=href,frame=src,form=" +; Development Value: "a=href,area=href,frame=src,form=" +; Production Value: "a=href,area=href,frame=src,form=" +; http://php.net/url-rewriter.tags +session.trans_sid_tags = "a=href,area=href,frame=src,form=" + +; URL rewriter does not rewrite absolute URLs by default. +; To enable rewrites for absolute paths, target hosts must be specified +; at RUNTIME. i.e. use ini_set() +; tags is special. PHP will check action attribute's URL regardless +; of session.trans_sid_tags setting. +; If no host is defined, HTTP_HOST will be used for allowed host. +; Example value: php.net,www.php.net,wiki.php.net +; Use "," for multiple hosts. No spaces are allowed. +; Default Value: "" +; Development Value: "" +; Production Value: "" +;session.trans_sid_hosts="" + +; Define how many bits are stored in each character when converting +; the binary hash data to something readable. +; Possible values: +; 4 (4 bits: 0-9, a-f) +; 5 (5 bits: 0-9, a-v) +; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 +; http://php.net/session.hash-bits-per-character +session.sid_bits_per_character = 5 + +; Enable upload progress tracking in $_SESSION +; Default Value: On +; Development Value: On +; Production Value: On +; http://php.net/session.upload-progress.enabled +;session.upload_progress.enabled = On + +; Cleanup the progress information as soon as all POST data has been read +; (i.e. upload completed). +; Default Value: On +; Development Value: On +; Production Value: On +; http://php.net/session.upload-progress.cleanup +;session.upload_progress.cleanup = On + +; A prefix used for the upload progress key in $_SESSION +; Default Value: "upload_progress_" +; Development Value: "upload_progress_" +; Production Value: "upload_progress_" +; http://php.net/session.upload-progress.prefix +;session.upload_progress.prefix = "upload_progress_" + +; The index name (concatenated with the prefix) in $_SESSION +; containing the upload progress information +; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" +; http://php.net/session.upload-progress.name +;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" + +; How frequently the upload progress should be updated. +; Given either in percentages (per-file), or in bytes +; Default Value: "1%" +; Development Value: "1%" +; Production Value: "1%" +; http://php.net/session.upload-progress.freq +;session.upload_progress.freq = "1%" + +; The minimum delay between updates, in seconds +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; http://php.net/session.upload-progress.min-freq +;session.upload_progress.min_freq = "1" + +; Only write session data when session data is changed. Enabled by default. +; http://php.net/session.lazy-write +;session.lazy_write = On + +[Assertion] +; Switch whether to compile assertions at all (to have no overhead at run-time) +; -1: Do not compile at all +; 0: Jump over assertion at run-time +; 1: Execute assertions +; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1) +; Default Value: 1 +; Development Value: 1 +; Production Value: -1 +; http://php.net/zend.assertions +zend.assertions = 1 + +; Assert(expr); active by default. +; http://php.net/assert.active +;assert.active = On + +; Throw an AssertionError on failed assertions +; http://php.net/assert.exception +;assert.exception = On + +; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active) +; http://php.net/assert.warning +;assert.warning = On + +; Don't bail out by default. +; http://php.net/assert.bail +;assert.bail = Off + +; User-function to be called if an assertion fails. +; http://php.net/assert.callback +;assert.callback = 0 + +[COM] +; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs +; http://php.net/com.typelib-file +;com.typelib_file = + +; allow Distributed-COM calls +; http://php.net/com.allow-dcom +;com.allow_dcom = true + +; autoregister constants of a component's typlib on com_load() +; http://php.net/com.autoregister-typelib +;com.autoregister_typelib = true + +; register constants casesensitive +; http://php.net/com.autoregister-casesensitive +;com.autoregister_casesensitive = false + +; show warnings on duplicate constant registrations +; http://php.net/com.autoregister-verbose +;com.autoregister_verbose = true + +; The default character set code-page to use when passing strings to and from COM objects. +; Default: system ANSI code page +;com.code_page= + +; The version of the .NET framework to use. The value of the setting are the first three parts +; of the framework's version number, separated by dots, and prefixed with "v", e.g. "v4.0.30319". +;com.dotnet_version= + +[mbstring] +; language for internal character representation. +; This affects mb_send_mail() and mbstring.detect_order. +; http://php.net/mbstring.language +;mbstring.language = Japanese + +; Use of this INI entry is deprecated, use global internal_encoding instead. +; internal/script encoding. +; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*) +; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. +; The precedence is: default_charset < internal_encoding < iconv.internal_encoding +;mbstring.internal_encoding = + +; Use of this INI entry is deprecated, use global input_encoding instead. +; http input encoding. +; mbstring.encoding_translation = On is needed to use this setting. +; If empty, default_charset or input_encoding or mbstring.input is used. +; The precedence is: default_charset < input_encoding < mbstring.http_input +; http://php.net/mbstring.http-input +;mbstring.http_input = + +; Use of this INI entry is deprecated, use global output_encoding instead. +; http output encoding. +; mb_output_handler must be registered as output buffer to function. +; If empty, default_charset or output_encoding or mbstring.http_output is used. +; The precedence is: default_charset < output_encoding < mbstring.http_output +; To use an output encoding conversion, mbstring's output handler must be set +; otherwise output encoding conversion cannot be performed. +; http://php.net/mbstring.http-output +;mbstring.http_output = + +; enable automatic encoding translation according to +; mbstring.internal_encoding setting. Input chars are +; converted to internal encoding by setting this to On. +; Note: Do _not_ use automatic encoding translation for +; portable libs/applications. +; http://php.net/mbstring.encoding-translation +;mbstring.encoding_translation = Off + +; automatic encoding detection order. +; "auto" detect order is changed according to mbstring.language +; http://php.net/mbstring.detect-order +;mbstring.detect_order = auto + +; substitute_character used when character cannot be converted +; one from another +; http://php.net/mbstring.substitute-character +;mbstring.substitute_character = none + +; Enable strict encoding detection. +;mbstring.strict_detection = Off + +; This directive specifies the regex pattern of content types for which mb_output_handler() +; is activated. +; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) +;mbstring.http_output_conv_mimetype= + +; This directive specifies maximum stack depth for mbstring regular expressions. It is similar +; to the pcre.recursion_limit for PCRE. +;mbstring.regex_stack_limit=100000 + +; This directive specifies maximum retry count for mbstring regular expressions. It is similar +; to the pcre.backtrack_limit for PCRE. +;mbstring.regex_retry_limit=1000000 + +[gd] +; Tell the jpeg decode to ignore warnings and try to create +; a gd image. The warning will then be displayed as notices +; disabled by default +; http://php.net/gd.jpeg-ignore-warning +;gd.jpeg_ignore_warning = 1 + +[exif] +; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. +; With mbstring support this will automatically be converted into the encoding +; given by corresponding encode setting. When empty mbstring.internal_encoding +; is used. For the decode settings you can distinguish between motorola and +; intel byte order. A decode setting cannot be empty. +; http://php.net/exif.encode-unicode +;exif.encode_unicode = ISO-8859-15 + +; http://php.net/exif.decode-unicode-motorola +;exif.decode_unicode_motorola = UCS-2BE + +; http://php.net/exif.decode-unicode-intel +;exif.decode_unicode_intel = UCS-2LE + +; http://php.net/exif.encode-jis +;exif.encode_jis = + +; http://php.net/exif.decode-jis-motorola +;exif.decode_jis_motorola = JIS + +; http://php.net/exif.decode-jis-intel +;exif.decode_jis_intel = JIS + +[Tidy] +; The path to a default tidy configuration file to use when using tidy +; http://php.net/tidy.default-config +;tidy.default_config = /usr/local/lib/php/default.tcfg + +; Should tidy clean and repair output automatically? +; WARNING: Do not use this option if you are generating non-html content +; such as dynamic images +; http://php.net/tidy.clean-output +tidy.clean_output = Off + +[soap] +; Enables or disables WSDL caching feature. +; http://php.net/soap.wsdl-cache-enabled +soap.wsdl_cache_enabled=1 + +; Sets the directory name where SOAP extension will put cache files. +; http://php.net/soap.wsdl-cache-dir +soap.wsdl_cache_dir="/tmp" + +; (time to live) Sets the number of second while cached file will be used +; instead of original one. +; http://php.net/soap.wsdl-cache-ttl +soap.wsdl_cache_ttl=86400 + +; Sets the size of the cache limit. (Max. number of WSDL files to cache) +soap.wsdl_cache_limit = 5 + +[sysvshm] +; A default size of the shared memory segment +;sysvshm.init_mem = 10000 + +[ldap] +; Sets the maximum number of open links or -1 for unlimited. +ldap.max_links = -1 + +[dba] +;dba.default_handler= + +[opcache] +; Determines if Zend OPCache is enabled +;opcache.enable=1 + +; Determines if Zend OPCache is enabled for the CLI version of PHP +;opcache.enable_cli=0 + +; The OPcache shared memory storage size. +;opcache.memory_consumption=128 + +; The amount of memory for interned strings in Mbytes. +;opcache.interned_strings_buffer=8 + +; The maximum number of keys (scripts) in the OPcache hash table. +; Only numbers between 200 and 1000000 are allowed. +;opcache.max_accelerated_files=10000 + +; The maximum percentage of "wasted" memory until a restart is scheduled. +;opcache.max_wasted_percentage=5 + +; When this directive is enabled, the OPcache appends the current working +; directory to the script key, thus eliminating possible collisions between +; files with the same name (basename). Disabling the directive improves +; performance, but may break existing applications. +;opcache.use_cwd=1 + +; When disabled, you must reset the OPcache manually or restart the +; webserver for changes to the filesystem to take effect. +;opcache.validate_timestamps=1 + +; How often (in seconds) to check file timestamps for changes to the shared +; memory storage allocation. ("1" means validate once per second, but only +; once per request. "0" means always validate) +;opcache.revalidate_freq=2 + +; Enables or disables file search in include_path optimization +;opcache.revalidate_path=0 + +; If disabled, all PHPDoc comments are dropped from the code to reduce the +; size of the optimized code. +;opcache.save_comments=1 + +; If enabled, compilation warnings (including notices and deprecations) will +; be recorded and replayed each time a file is included. Otherwise, compilation +; warnings will only be emitted when the file is first cached. +;opcache.record_warnings=0 + +; Allow file existence override (file_exists, etc.) performance feature. +;opcache.enable_file_override=0 + +; A bitmask, where each bit enables or disables the appropriate OPcache +; passes +;opcache.optimization_level=0x7FFFBFFF + +;opcache.dups_fix=0 + +; The location of the OPcache blacklist file (wildcards allowed). +; Each OPcache blacklist file is a text file that holds the names of files +; that should not be accelerated. The file format is to add each filename +; to a new line. The filename may be a full path or just a file prefix +; (i.e., /var/www/x blacklists all the files and directories in /var/www +; that start with 'x'). Line starting with a ; are ignored (comments). +;opcache.blacklist_filename= + +; Allows exclusion of large files from being cached. By default all files +; are cached. +;opcache.max_file_size=0 + +; Check the cache checksum each N requests. +; The default value of "0" means that the checks are disabled. +;opcache.consistency_checks=0 + +; How long to wait (in seconds) for a scheduled restart to begin if the cache +; is not being accessed. +;opcache.force_restart_timeout=180 + +; OPcache error_log file name. Empty string assumes "stderr". +;opcache.error_log= + +; All OPcache errors go to the Web server log. +; By default, only fatal errors (level 0) or errors (level 1) are logged. +; You can also enable warnings (level 2), info messages (level 3) or +; debug messages (level 4). +;opcache.log_verbosity_level=1 + +; Preferred Shared Memory back-end. Leave empty and let the system decide. +;opcache.preferred_memory_model= + +; Protect the shared memory from unexpected writing during script execution. +; Useful for internal debugging only. +;opcache.protect_memory=0 + +; Allows calling OPcache API functions only from PHP scripts which path is +; started from specified string. The default "" means no restriction +;opcache.restrict_api= + +; Mapping base of shared memory segments (for Windows only). All the PHP +; processes have to map shared memory into the same address space. This +; directive allows to manually fix the "Unable to reattach to base address" +; errors. +;opcache.mmap_base= + +; Facilitates multiple OPcache instances per user (for Windows only). All PHP +; processes with the same cache ID and user share an OPcache instance. +;opcache.cache_id= + +; Enables and sets the second level cache directory. +; It should improve performance when SHM memory is full, at server restart or +; SHM reset. The default "" disables file based caching. +;opcache.file_cache= + +; Enables or disables opcode caching in shared memory. +;opcache.file_cache_only=0 + +; Enables or disables checksum validation when script loaded from file cache. +;opcache.file_cache_consistency_checks=1 + +; Implies opcache.file_cache_only=1 for a certain process that failed to +; reattach to the shared memory (for Windows only). Explicitly enabled file +; cache is required. +;opcache.file_cache_fallback=1 + +; Enables or disables copying of PHP code (text segment) into HUGE PAGES. +; This should improve performance, but requires appropriate OS configuration. +;opcache.huge_code_pages=0 + +; Validate cached file permissions. +;opcache.validate_permission=0 + +; Prevent name collisions in chroot'ed environment. +;opcache.validate_root=0 + +; If specified, it produces opcode dumps for debugging different stages of +; optimizations. +;opcache.opt_debug_level=0 + +; Specifies a PHP script that is going to be compiled and executed at server +; start-up. +; http://php.net/opcache.preload +;opcache.preload= + +; Preloading code as root is not allowed for security reasons. This directive +; facilitates to let the preloading to be run as another user. +; http://php.net/opcache.preload_user +;opcache.preload_user= + +; Prevents caching files that are less than this number of seconds old. It +; protects from caching of incompletely updated files. In case all file updates +; on your site are atomic, you may increase performance by setting it to "0". +;opcache.file_update_protection=2 + +; Absolute path used to store shared lockfiles (for *nix only). +;opcache.lockfile_path=/tmp + +[curl] +; A default value for the CURLOPT_CAINFO option. This is required to be an +; absolute path. +;curl.cainfo = + +[openssl] +; The location of a Certificate Authority (CA) file on the local filesystem +; to use when verifying the identity of SSL/TLS peers. Most users should +; not specify a value for this directive as PHP will attempt to use the +; OS-managed cert stores in its absence. If specified, this value may still +; be overridden on a per-stream basis via the "cafile" SSL stream context +; option. +;openssl.cafile= + +; If openssl.cafile is not specified or if the CA file is not found, the +; directory pointed to by openssl.capath is searched for a suitable +; certificate. This value must be a correctly hashed certificate directory. +; Most users should not specify a value for this directive as PHP will +; attempt to use the OS-managed cert stores in its absence. If specified, +; this value may still be overridden on a per-stream basis via the "capath" +; SSL stream context option. +;openssl.capath= + +[ffi] +; FFI API restriction. Possible values: +; "preload" - enabled in CLI scripts and preloaded files (default) +; "false" - always disabled +; "true" - always enabled +;ffi.enable=preload + +; List of headers files to preload, wildcard patterns allowed. +;ffi.preload= From 611fa6219ca7cf9ca69037a455862ee5a9ca13c0 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 16:59:01 +0800 Subject: [PATCH 131/372] add vscode extension recommend --- .vscode/extensions.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..549ed861 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "editorconfig.editorconfig", + "mikestead.dotenv" + ] +} From 6556a9125a0f201e11267023ae73450d014d4e35 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 17:04:58 +0800 Subject: [PATCH 132/372] ci build php 7.1 --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index ad44a60a..bf0ca015 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - php_version: ["7.2", "7.3", "7.4", "8.0"] + php_version: ["7.1", "7.2", "7.3", "7.4", "8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 From 27dfbbfab1f1ffeb44e185b19293da60203984d1 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 20 Mar 2021 17:49:21 +0800 Subject: [PATCH 133/372] Update Dockerfile sepecified pecl swoole version for php 7.1 --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index f32e8a7e..06fbcdf6 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -293,7 +293,7 @@ RUN set -eux; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ pecl install swoole-4.3.5; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ - pecl install swoole-4.6.0; \ + pecl install swoole-4.5.11; \ else \ pecl install swoole; \ fi; \ From 781d97b3ac96595d064cdab7e6833fa5d9b8d352 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 18:18:43 +0800 Subject: [PATCH 134/372] github ci build php 7.0 --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index bf0ca015..d4088c06 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - php_version: ["7.1", "7.2", "7.3", "7.4", "8.0"] + php_version: ["7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 From 717c1e0c443ba0b6aac84458f50d3ff93c129532 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 18:42:32 +0800 Subject: [PATCH 135/372] Github CI build php 5.6 --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d4088c06..d1ea0b71 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - php_version: ["7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] + php_version: ["5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 From 4503360576eac99803a618e1e1e74f03fbbc16fe Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 19:13:32 +0800 Subject: [PATCH 136/372] remove default install mongodb --- laravel-horizon/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 5d2a4bf5..194f615b 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -35,7 +35,7 @@ RUN apk --update add wget \ procps RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl -RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb +RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached # Add a non-root user to help install ffmpeg: ARG PUID=1000 From 6008b3c1ea7a7c800ca2e8cd6861d1cf89670114 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 19:15:59 +0800 Subject: [PATCH 137/372] php-worker mongodb install by .env config --- docker-compose.yml | 1 + env-example | 1 + php-worker/Dockerfile | 11 +++++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7b51c332..3d9ed770 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -308,6 +308,7 @@ services: - INSTALL_IMAGEMAGICK=${PHP_WORKER_INSTALL_IMAGEMAGICK} - INSTALL_GMP=${PHP_WORKER_INSTALL_GMP} - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} + - INSTALL_MONGO=${PHP_WORKER_INSTALL_MONGO} - INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH} - INSTALL_OCI8=${PHP_WORKER_INSTALL_OCI8} - INSTALL_PHALCON=${PHP_WORKER_INSTALL_PHALCON} diff --git a/env-example b/env-example index fa9a4a80..d024d11d 100644 --- a/env-example +++ b/env-example @@ -278,6 +278,7 @@ PHP_WORKER_INSTALL_IMAGEMAGICK=false PHP_WORKER_IMAGEMAGICK_VERSION=latest PHP_WORKER_INSTALL_GMP=false PHP_WORKER_INSTALL_PGSQL=false +PHP_WORKER_INSTALL_MONGO=false PHP_WORKER_INSTALL_BCMATH=false # PHP_WORKER_INSTALL_OCI8 Does not work in php5.6 version PHP_WORKER_INSTALL_OCI8=false diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index d3f97431..db1f693b 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -38,9 +38,9 @@ RUN apk --update add wget \ RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl channel-update pecl.php.net && pecl install memcached-2.2.0 mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb \ + pecl channel-update pecl.php.net && pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ ;else \ - pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb \ + pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ ;fi # Add a non-root user: @@ -108,6 +108,13 @@ RUN if [ ${INSTALL_SOAP} = true ]; then \ docker-php-ext-install soap \ ;fi +# Install MongoDB drivers: +ARG INSTALL_MONGO=false +RUN if [ ${INSTALL_MONGO} = true ]; then \ + pecl install mongodb; \ + docker-php-ext-enable mongodb; \ + fi + #Install BCMath package: ARG INSTALL_BCMATH=false RUN if [ ${INSTALL_BCMATH} = true ]; then \ From 4d93c69d5d78a725d166145b575b1f6b0d987fd9 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 19:39:09 +0800 Subject: [PATCH 138/372] php-worker mongo | PHP 5.6 --- php-worker/Dockerfile | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index db1f693b..7a964035 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -111,8 +111,13 @@ RUN if [ ${INSTALL_SOAP} = true ]; then \ # Install MongoDB drivers: ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ - pecl install mongodb; \ - docker-php-ext-enable mongodb; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install mongo; \ + docker-php-ext-enable mongo; \ + else \ + pecl install mongodb; \ + docker-php-ext-enable mongodb; \ + fi; \ fi #Install BCMath package: @@ -357,6 +362,16 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \ docker-php-ext-install xmlrpc \ ;fi +RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install mongo; \ + docker-php-ext-enable mongo; \ + php -m | grep -q 'mongo'; \ + else \ + pecl install mongodb; \ + docker-php-ext-enable mongodb; \ + php -m | grep -q 'mongodb'; \ + fi + # #-------------------------------------------------------------------------- # Optional Supervisord Configuration From 66abe78874b77f6cc1f3ebc46b0a3476dee3657a Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 20 Mar 2021 21:22:45 +0800 Subject: [PATCH 139/372] fix typo --- php-worker/Dockerfile | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 7a964035..0787b7ea 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -362,16 +362,6 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \ docker-php-ext-install xmlrpc \ ;fi -RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install mongo; \ - docker-php-ext-enable mongo; \ - php -m | grep -q 'mongo'; \ - else \ - pecl install mongodb; \ - docker-php-ext-enable mongodb; \ - php -m | grep -q 'mongodb'; \ - fi - # #-------------------------------------------------------------------------- # Optional Supervisord Configuration From 901ced22acead4475f2fa37dcdeb937741e30338 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 18:42:32 +0800 Subject: [PATCH 140/372] Github CI build php 5.6 --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d4088c06..d1ea0b71 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - php_version: ["7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] + php_version: ["5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] service: [php-fpm, php-worker, workspace, laravel-horizon] steps: - uses: actions/checkout@v2 From d09d752cdb9ddb1da8391ad68cd75cc38203ed80 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 22:18:38 +0800 Subject: [PATCH 141/372] horizon redis update default config --- env-example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env-example b/env-example index d024d11d..2600dc9c 100644 --- a/env-example +++ b/env-example @@ -321,7 +321,7 @@ LARAVEL_HORIZON_IMAGEMAGICK_VERSION=latest LARAVEL_HORIZON_INSTALL_SOCKETS=false LARAVEL_HORIZON_INSTALL_YAML=false LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE=false -LARAVEL_HORIZON_INSTALL_PHPREDIS=true +LARAVEL_HORIZON_INSTALL_PHPREDIS=false LARAVEL_HORIZON_INSTALL_MONGO=false LARAVEL_HORIZON_INSTALL_CASSANDRA=false LARAVEL_HORIZON_INSTALL_FFMPEG=false From 07b31384e9ed0843d116ad4ebff3fae5598d4b37 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sat, 20 Mar 2021 22:19:05 +0800 Subject: [PATCH 142/372] horizon support PHP 5.6 --- laravel-horizon/Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 194f615b..10cf90eb 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -35,7 +35,11 @@ RUN apk --update add wget \ procps RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl -RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached +RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl channel-update pecl.php.net && pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ +;else \ + pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ +;fi # Add a non-root user to help install ffmpeg: ARG PUID=1000 From 91e329a84d09e4450c653dca0d8ff6bc97800a54 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sun, 21 Mar 2021 19:23:53 +0800 Subject: [PATCH 143/372] support gnupg --- .github/workflows/main-ci.yml | 2 +- docker-compose.yml | 4 ++++ env-example | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d1ea0b71..197a5fa9 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,7 +23,7 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env - sed -i -- '201,272s/=false/=true/g' .env + sed -i -- '202,274s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env diff --git a/docker-compose.yml b/docker-compose.yml index 3d9ed770..56cd7b28 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,6 +74,7 @@ services: - INSTALL_SUBVERSION=${WORKSPACE_INSTALL_SUBVERSION} - INSTALL_BZ2=${WORKSPACE_INSTALL_BZ2} - INSTALL_GMP=${WORKSPACE_INSTALL_GMP} + - INSTALL_GNUPG=${WORKSPACE_INSTALL_GNUPG} - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG} - INSTALL_PCOV=${WORKSPACE_INSTALL_PCOV} - INSTALL_PHPDBG=${WORKSPACE_INSTALL_PHPDBG} @@ -206,6 +207,7 @@ services: - LARADOCK_PHALCON_VERSION=${PHALCON_VERSION} - INSTALL_BZ2=${PHP_FPM_INSTALL_BZ2} - INSTALL_GMP=${PHP_FPM_INSTALL_GMP} + - INSTALL_GNUPG=${PHP_FPM_INSTALL_GNUPG} - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG} - INSTALL_PCOV=${PHP_FPM_INSTALL_PCOV} - INSTALL_PHPDBG=${PHP_FPM_INSTALL_PHPDBG} @@ -307,6 +309,7 @@ services: - INSTALL_GD=${PHP_WORKER_INSTALL_GD} - INSTALL_IMAGEMAGICK=${PHP_WORKER_INSTALL_IMAGEMAGICK} - INSTALL_GMP=${PHP_WORKER_INSTALL_GMP} + - INSTALL_GNUPG=${PHP_WORKER_INSTALL_GNUPG} - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} - INSTALL_MONGO=${PHP_WORKER_INSTALL_MONGO} - INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH} @@ -348,6 +351,7 @@ services: - INSTALL_BZ2=${LARAVEL_HORIZON_INSTALL_BZ2} - INSTALL_GD=${LARAVEL_HORIZON_INSTALL_GD} - INSTALL_GMP=${LARAVEL_HORIZON_INSTALL_GMP} + - INSTALL_GNUPG=${LARAVEL_HORIZON_INSTALL_GNUPG} - INSTALL_IMAGEMAGICK=${LARAVEL_HORIZON_INSTALL_IMAGEMAGICK} - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL} - INSTALL_ZIP_ARCHIVE=${LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE} diff --git a/env-example b/env-example index 2600dc9c..aaca6e7a 100644 --- a/env-example +++ b/env-example @@ -123,6 +123,7 @@ WORKSPACE_INSTALL_WORKSPACE_SSH=false WORKSPACE_INSTALL_SUBVERSION=false WORKSPACE_INSTALL_BZ2=false WORKSPACE_INSTALL_GMP=false +WORKSPACE_INSTALL_GNUPG=false WORKSPACE_INSTALL_XDEBUG=false WORKSPACE_INSTALL_PCOV=false WORKSPACE_INSTALL_PHPDBG=false @@ -212,6 +213,7 @@ PHP_FPM_INSTALL_PHPREDIS=true PHP_FPM_INSTALL_MEMCACHED=false PHP_FPM_INSTALL_BZ2=false PHP_FPM_INSTALL_GMP=false +PHP_FPM_INSTALL_GNUPG=false PHP_FPM_INSTALL_XDEBUG=false PHP_FPM_INSTALL_PCOV=false PHP_FPM_INSTALL_XHPROF=false @@ -277,6 +279,7 @@ PHP_WORKER_INSTALL_GD=false PHP_WORKER_INSTALL_IMAGEMAGICK=false PHP_WORKER_IMAGEMAGICK_VERSION=latest PHP_WORKER_INSTALL_GMP=false +PHP_WORKER_INSTALL_GNUPG=false PHP_WORKER_INSTALL_PGSQL=false PHP_WORKER_INSTALL_MONGO=false PHP_WORKER_INSTALL_BCMATH=false @@ -316,6 +319,7 @@ NGINX_SSL_PATH=./nginx/ssl/ LARAVEL_HORIZON_INSTALL_BZ2=false LARAVEL_HORIZON_INSTALL_GD=false LARAVEL_HORIZON_INSTALL_GMP=false +LARAVEL_HORIZON_INSTALL_GNUPG=false LARAVEL_HORIZON_INSTALL_IMAGEMAGICK=false LARAVEL_HORIZON_IMAGEMAGICK_VERSION=latest LARAVEL_HORIZON_INSTALL_SOCKETS=false From 3d17a13789cb758bc705a1a08405e7ef73567205 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sun, 21 Mar 2021 19:24:30 +0800 Subject: [PATCH 144/372] horizon, php-worker | GnuPG --- laravel-horizon/Dockerfile | 17 +++++++++++++++++ php-worker/Dockerfile | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 10cf90eb..e35e81e2 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -57,6 +57,23 @@ RUN if [ ${INSTALL_BZ2} = true ]; then \ docker-php-ext-install bz2 \ ;fi +########################################################################### +# PHP GnuPG: +########################################################################### + +ARG INSTALL_GNUPG=false + +RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ + apk add --no-cache --no-progress --virtual BUILD_DEPS_PHP_GNUPG gpgme-dev; \ + apk add --no-cache --no-progress gpgme; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install gnupg-1.5.0RC2; \ + else \ + pecl install gnupg; \ + fi; \ + docker-php-ext-enable gnupg; \ + fi + #Install GD package: ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 0787b7ea..97a5125b 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -59,6 +59,23 @@ RUN if [ ${INSTALL_BZ2} = true ]; then \ docker-php-ext-install bz2; \ fi +########################################################################### +# PHP GnuPG: +########################################################################### + +ARG INSTALL_GNUPG=false + +RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ + apk add --no-cache --no-progress --virtual BUILD_DEPS_PHP_GNUPG gpgme-dev; \ + apk add --no-cache --no-progress gpgme; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install gnupg-1.5.0RC2; \ + else \ + pecl install gnupg; \ + fi; \ + docker-php-ext-enable gnupg; \ + fi + #Install GD package: ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ From 56afa3efa1e1a739b5ef937058e2e54745f25b87 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sun, 21 Mar 2021 19:25:00 +0800 Subject: [PATCH 145/372] php-fpm, workspace | GnuPG --- php-fpm/Dockerfile | 15 +++++++++++++++ workspace/Dockerfile | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 06fbcdf6..4de5e4b5 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -96,6 +96,21 @@ RUN if [ ${INSTALL_GMP} = true ]; then \ docker-php-ext-install gmp \ ;fi +########################################################################### +# GnuPG: +########################################################################### + +ARG INSTALL_GNUPG=false + +RUN if [ ${INSTALL_GNUPG} = true ]; then \ + apt-get -yq install libgpgme-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install gnupg-1.5.0RC2; \ + else \ + pecl install gnupg; \ + fi; \ + fi + ########################################################################### # SSH2: ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 534e4c7a..cac7bd41 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -270,6 +270,16 @@ RUN if [ ${INSTALL_GMP} = true ]; then \ apt-get -y install php${LARADOCK_PHP_VERSION}-gmp \ ;fi +########################################################################### +# GnuPG: +########################################################################### + +ARG INSTALL_GNUPG=false + +RUN if [ ${INSTALL_GNUPG} = true ]; then \ + apt-get install -yqq php${LARADOCK_PHP_VERSION}-gnupg; \ + fi + ########################################################################### # SSH2: ########################################################################### From 89b73eeeee19f18133f1f81fe7c9968acd66dbbc Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 13:37:16 +0200 Subject: [PATCH 146/372] feat(ioncube extension): add reference to .env file Provide a restriction to env file. --- env-example | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/env-example b/env-example index 7347e051..0bf08ac3 100644 --- a/env-example +++ b/env-example @@ -166,7 +166,7 @@ WORKSPACE_INSTALL_SWOOLE=false WORKSPACE_INSTALL_TAINT=false WORKSPACE_INSTALL_LIBPNG=false WORKSPACE_INSTALL_GRAPHVIZ=false -WORKSPACE_INSTALL_IONCUBE=false +WORKSPACE_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592 WORKSPACE_INSTALL_MYSQL_CLIENT=false WORKSPACE_INSTALL_PING=false WORKSPACE_INSTALL_SSHPASS=false @@ -240,7 +240,7 @@ PHP_FPM_INSTALL_POSTGIS=false PHP_FPM_INSTALL_PCNTL=false PHP_FPM_INSTALL_CALENDAR=false PHP_FPM_INSTALL_FAKETIME=false -PHP_FPM_INSTALL_IONCUBE=false +PHP_FPM_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592 PHP_FPM_INSTALL_RDKAFKA=false PHP_FPM_INSTALL_GETTEXT=false PHP_FPM_INSTALL_XMLRPC=false From 3c6cfc8dfd99fd356638fda36256844b9b32e67f Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 13:41:25 +0200 Subject: [PATCH 147/372] feat(amqp extension): add github actions installation We need to be able to test installation of AMQP with GitHub Actions. --- .github/workflows/main-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index ad44a60a..331b4a20 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -1,6 +1,6 @@ name: CI -on: +on: push: branches: '**' tags: '**' @@ -34,7 +34,6 @@ jobs: sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env sed -i -- 's/YAML=true/YAML=false/g' .env sed -i -- 's/MSSQL=true/MSSQL=false/g' .env - sed -i -- 's/AMQP=true/AMQP=false/g' .env sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env From 30c93210ebaa1ce0eeb24523d121f040bf478aab Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 15:05:36 +0200 Subject: [PATCH 148/372] fix(PGSql Client): get installed PGSql Client with the same versions We need to have an ability to install PGSql Client on `workspace` and `php-fpm` images with the same version (12). --- php-fpm/Dockerfile | 107 ++++++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 50 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 06fbcdf6..75d9054c 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -39,6 +39,7 @@ RUN set -xe; \ pecl channel-update pecl.php.net && \ apt-get install -yqq \ apt-utils \ + git \ # #-------------------------------------------------------------------------- # Mandatory Software's Installation @@ -77,7 +78,7 @@ RUN set -xe; \ ARG INSTALL_BZ2=false RUN if [ ${INSTALL_BZ2} = true ]; then \ - apt-get -y install libbz2-dev; \ + apt-get -yqq install libbz2-dev; \ docker-php-ext-install bz2 \ ;fi @@ -89,7 +90,7 @@ ARG INSTALL_GMP=false RUN if [ ${INSTALL_GMP} = true ]; then \ # Install the GMP extension - apt-get install -y libgmp-dev && \ + apt-get install -yqq libgmp-dev && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \ ;fi && \ @@ -122,7 +123,7 @@ USER root ARG INSTALL_FAKETIME=false RUN if [ ${INSTALL_FAKETIME} = true ]; then \ - apt-get install -y libfaketime \ + apt-get install -yqq libfaketime \ ;fi ########################################################################### @@ -169,14 +170,16 @@ ARG INSTALL_PG_CLIENT=false ARG INSTALL_POSTGIS=false RUN if [ ${INSTALL_PG_CLIENT} = true ]; then \ - # Create folders if not exists (https://github.com/tianon/docker-brew-debian/issues/65) - mkdir -p /usr/share/man/man1 && \ - mkdir -p /usr/share/man/man7 && \ - # Install the pgsql client - apt-get install -y postgresql-client && \ + apt-get install -yqq gnupg \ + && . /etc/os-release \ + && echo "deb http://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main" > /etc/apt/sources.list.d/pgdg.list \ + && curl -sL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ + && apt-get update -yqq \ + && apt-get install -yqq postgresql-client-12 postgis; \ if [ ${INSTALL_POSTGIS} = true ]; then \ - apt-get install -y postgis; \ + apt-get install -yqq postgis; \ fi \ + && apt-get purge -yqq gnupg \ ;fi ########################################################################### @@ -246,7 +249,7 @@ ARG INSTALL_PHPDBG=false RUN if [ ${INSTALL_PHPDBG} = true ]; then \ # Load the xdebug extension only with phpunit commands - apt-get install -y --force-yes php${LARADOCK_PHP_VERSION}-phpdbg \ + apt-get install -yqq --force-yes php${LARADOCK_PHP_VERSION}-phpdbg \ ;fi ########################################################################### @@ -381,7 +384,7 @@ ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ # download and install manually, to make sure it's compatible with ampq installed by pecl later # install cmake first - apt-get -y install cmake && \ + apt-get -yqq install cmake && \ curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz && \ mkdir -p rabbitmq-c && \ tar -C rabbitmq-c -zxvf /tmp/rabbitmq-c.tar.gz --strip 1 && \ @@ -390,7 +393,11 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \ cmake .. && \ cmake --build . --target install && \ # Install the amqp extension - pecl install amqp && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + printf "\n" | pecl install amqp-1.11.0beta; \ + else \ + printf "\n" | pecl install amqp; \ + fi && \ docker-php-ext-enable amqp && \ # Install the sockets extension docker-php-ext-install sockets \ @@ -557,7 +564,7 @@ ENV OCI_VERSION=12 RUN if [ ${INSTALL_OCI8} = true ]; then \ # Install wget - apt-get update && apt-get install --no-install-recommends -y wget \ + apt-get install --no-install-recommends -yqq wget \ # Install Oracle Instantclient && mkdir /opt/oracle \ && cd /opt/oracle \ @@ -570,10 +577,9 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ && ln -s /opt/oracle/instantclient_12_1/libocci.so.12.1 /opt/oracle/instantclient_12_1/libocci.so \ && rm -rf /opt/oracle/*.zip \ # Install PHP extensions deps - && apt-get update \ - && apt-get install --no-install-recommends -y \ - libaio-dev \ - freetds-dev && \ + && apt-get install --no-install-recommends -yqq \ + libaio-dev \ + freetds-dev && \ # Install PHP extensions if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.10; \ @@ -595,12 +601,14 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ ARG INSTALL_IONCUBE=false RUN if [ ${INSTALL_IONCUBE} = true ]; then \ - # Install the php ioncube loader - curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ - && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ - && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ - && printf "zend_extension=ioncube_loader.so\n" > $PHP_INI_DIR/conf.d/0ioncube.ini \ - && rm -rf /tmp/ioncube* \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + # Install the php ioncube loader + curl -L -o /tmp/ioncube_loaders_lin_x86-64.tar.gz https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz \ + && tar zxpf /tmp/ioncube_loaders_lin_x86-64.tar.gz -C /tmp \ + && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ + && printf "zend_extension=ioncube_loader.so\n" > $PHP_INI_DIR/conf.d/0ioncube.ini \ + && rm -rf /tmp/ioncube* \ + ;fi \ ;fi ########################################################################### @@ -635,7 +643,7 @@ ARG INSTALL_INTL=false RUN if [ ${INSTALL_INTL} = true ]; then \ # Install intl and requirements - apt-get install -y zlib1g-dev libicu-dev g++ && \ + apt-get install -yqq zlib1g-dev libicu-dev g++ && \ docker-php-ext-configure intl && \ docker-php-ext-install intl \ ;fi @@ -649,7 +657,7 @@ ARG INSTALL_GHOSTSCRIPT=false RUN if [ ${INSTALL_GHOSTSCRIPT} = true ]; then \ # Install the ghostscript extension # for PDF editing - apt-get install -y \ + apt-get install -yqq \ poppler-utils \ ghostscript \ ;fi @@ -661,7 +669,7 @@ RUN if [ ${INSTALL_GHOSTSCRIPT} = true ]; then \ ARG INSTALL_LDAP=false RUN if [ ${INSTALL_LDAP} = true ]; then \ - apt-get install -y libldap2-dev && \ + apt-get install -yqq libldap2-dev && \ docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ && \ docker-php-ext-install ldap \ ;fi @@ -685,12 +693,12 @@ RUN set -eux; \ # Ref from https://github.com/Microsoft/msphpsql/wiki/Dockerfile-for-adding-pdo_sqlsrv-and-sqlsrv-to-official-php-image ########################################################################### # Add Microsoft repo for Microsoft ODBC Driver 13 for Linux - apt-get install -y apt-transport-https gnupg \ + apt-get install -yqq apt-transport-https gnupg \ && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ && curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list \ && apt-get update -yqq \ # Install Dependencies - && ACCEPT_EULA=Y apt-get install -y unixodbc unixodbc-dev libgss3 odbcinst msodbcsql17 locales \ + && ACCEPT_EULA=Y apt-get install -yqq unixodbc unixodbc-dev libgss3 odbcinst msodbcsql17 locales \ && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ # link local aliases && ln -sfn /etc/locale.alias /usr/share/locale/locale.alias \ @@ -716,7 +724,7 @@ USER root ARG INSTALL_IMAGE_OPTIMIZERS=false RUN if [ ${INSTALL_IMAGE_OPTIMIZERS} = true ]; then \ - apt-get install -y jpegoptim optipng pngquant gifsicle \ + apt-get install -yqq jpegoptim optipng pngquant gifsicle \ ;fi ########################################################################### @@ -730,9 +738,8 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apt-get install -y libmagickwand-dev imagemagick && \ + apt-get install -yqq libmagickwand-dev imagemagick && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - apt-get install -y git && \ cd /tmp && \ if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ git clone https://github.com/Imagick/imagick; \ @@ -758,7 +765,7 @@ RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ ARG INSTALL_SMB=false RUN if [ ${INSTALL_SMB} = true ]; then \ - apt-get install -y smbclient php-smbclient coreutils \ + apt-get install -yqq smbclient php-smbclient coreutils \ ;fi ########################################################################### @@ -768,7 +775,7 @@ RUN if [ ${INSTALL_SMB} = true ]; then \ ARG INSTALL_IMAP=false RUN if [ ${INSTALL_IMAP} = true ]; then \ - apt-get install -y libc-client-dev libkrb5-dev && \ + apt-get install -yqq libc-client-dev libkrb5-dev && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ docker-php-ext-install imap \ ;fi @@ -798,7 +805,7 @@ ENV LARADOCK_PHALCON_VERSION ${LARADOCK_PHALCON_VERSION} COPY ./phalcon.ini /usr/local/etc/php/conf.d/phalcon.ini.disable RUN if [ $INSTALL_PHALCON = true ]; then \ - apt-get update && apt-get install -y unzip libpcre3-dev gcc make re2c git automake autoconf\ + apt-get install -yqq unzip libpcre3-dev gcc make re2c git automake autoconf\ && git clone https://github.com/jbboehr/php-psr.git \ && cd php-psr \ && phpize \ @@ -838,7 +845,7 @@ USER root ARG INSTALL_YAML=false RUN if [ ${INSTALL_YAML} = true ]; then \ - apt-get install libyaml-dev -y ; \ + apt-get install libyaml-dev -yqq; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install -a yaml-1.3.2; \ else \ @@ -854,7 +861,7 @@ RUN if [ ${INSTALL_YAML} = true ]; then \ ARG INSTALL_RDKAFKA=false RUN if [ ${INSTALL_RDKAFKA} = true ]; then \ - apt-get install -y librdkafka-dev && \ + apt-get install -yqq librdkafka-dev && \ pecl install rdkafka && \ docker-php-ext-enable rdkafka \ ;fi @@ -866,7 +873,7 @@ RUN if [ ${INSTALL_RDKAFKA} = true ]; then \ ARG INSTALL_GETTEXT=false RUN if [ ${INSTALL_GETTEXT} = true ]; then \ - apt-get install -y zlib1g-dev libicu-dev g++ libpq-dev libssl-dev gettext && \ + apt-get install -yqq zlib1g-dev libicu-dev g++ libpq-dev libssl-dev gettext && \ docker-php-ext-install gettext \ ;fi @@ -878,7 +885,7 @@ ARG INSTALL_ADDITIONAL_LOCALES=false ARG ADDITIONAL_LOCALES RUN if [ ${INSTALL_ADDITIONAL_LOCALES} = true ]; then \ - apt-get install -y locales \ + apt-get install -yqq locales \ && echo '' >> /usr/share/locale/locale.alias \ && temp="${ADDITIONAL_LOCALES%\"}" \ && temp="${temp#\"}" \ @@ -958,7 +965,7 @@ USER root ARG INSTALL_AUDIOWAVEFORM=false RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ - apt-get -y install git wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ + apt-get -y install wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ && git clone https://github.com/bbc/audiowaveform.git \ && cd audiowaveform \ && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ @@ -982,17 +989,17 @@ USER root ARG INSTALL_WKHTMLTOPDF=false RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ - apt-get install -y \ - libxrender1 \ - libfontconfig1 \ - libx11-dev \ - libjpeg62 \ - libxtst6 \ - fontconfig \ - libjpeg62-turbo \ - xfonts-base \ - xfonts-75dpi \ - wget \ + apt-get install -yqq \ + libxrender1 \ + libfontconfig1 \ + libx11-dev \ + libjpeg62 \ + libxtst6 \ + fontconfig \ + libjpeg62-turbo \ + xfonts-base \ + xfonts-75dpi \ + wget \ && wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.stretch_amd64.deb \ && dpkg -i wkhtmltox_0.12.6-1.stretch_amd64.deb \ && apt -f install \ From e8d4e1be77d3549c7ccf0098f1dd74ae32701537 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sun, 21 Mar 2021 21:48:07 +0800 Subject: [PATCH 149/372] Update main-ci.yml CI build install GnuPG --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 197a5fa9..3367b277 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -24,6 +24,7 @@ jobs: run: | cp env-example .env sed -i -- '202,274s/=false/=true/g' .env + sed -i -- 's/GNUPG=false/GNUPG=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env From b4cbaaaa994afcf6ea70d3fab23c3340bc24c642 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Sun, 21 Mar 2021 23:00:30 +0800 Subject: [PATCH 150/372] github ci corver workspace extension --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 59641b8a..0a5ea227 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,7 +23,7 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env - sed -i -- '202,274s/=false/=true/g' .env + sed -i -- '99,274s/=false/=true/g' .env sed -i -- 's/GNUPG=false/GNUPG=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env From e8e4790db2a9d2385791b5f2fe4ee4753e769241 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Mon, 22 Mar 2021 00:00:38 +0800 Subject: [PATCH 151/372] feat(ioncube extension): add github actions installation --- .github/workflows/main-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index ad44a60a..8f79f598 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -37,7 +37,6 @@ jobs: sed -i -- 's/AMQP=true/AMQP=false/g' .env sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env sed -i -- 's/OCI8=true/OCI8=false/g' .env - sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env docker-compose build ${{ matrix.service }} build-other: From 4270f1db71379b7775575dbb3b1fb0e3699b2274 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 18:10:08 +0200 Subject: [PATCH 152/372] fix(YAML extension): get built YAML extension for all versions in all services We need to build yaml extension for `workspace`, `php-fpm` and `laravel-horizon` images. Turn on YAML for GitHub Actions. --- .github/workflows/main-ci.yml | 3 +-- php-fpm/Dockerfile | 12 +++++++----- workspace/Dockerfile | 16 ++++++++-------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d1ea0b71..3ab1f21c 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -1,6 +1,6 @@ name: CI -on: +on: push: branches: '**' tags: '**' @@ -32,7 +32,6 @@ jobs: sed -i -- 's/PHALCON=true/PHALCON=false/g' .env sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env - sed -i -- 's/YAML=true/YAML=false/g' .env sed -i -- 's/MSSQL=true/MSSQL=false/g' .env sed -i -- 's/AMQP=true/AMQP=false/g' .env sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 06fbcdf6..88784a92 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -840,11 +840,13 @@ 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 && \ - docker-php-ext-enable yaml \ + echo '' | pecl install -a yaml-1.3.2; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + echo '' | pecl install yaml-2.0.4; \ + else + echo '' | pecl install yaml; \ + fi \ + && docker-php-ext-enable yaml; \ ;fi ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 534e4c7a..4cbcf78f 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1388,12 +1388,14 @@ 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 \ + echo '' | pecl install -a yaml-1.3.2; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + echo '' | pecl install yaml-2.0.4; \ + else + echo '' | 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 ########################################################################### @@ -1632,8 +1634,6 @@ RUN if [ ${SHELL_OH_MY_ZSH} = true ]; then \ echo "" >> ~/.zshrc \ ;fi -USER root - # #-------------------------------------------------------------------------- # Final Touch From b6666363eb15de0087e16e26e310f353a8048147 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Mon, 22 Mar 2021 00:40:59 +0800 Subject: [PATCH 153/372] feat(fix swoole extension) | workspace --- workspace/Dockerfile | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 14461ddf..d675f109 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -588,20 +588,17 @@ RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ ARG INSTALL_SWOOLE=false RUN if [ ${INSTALL_SWOOLE} = true ]; then \ - # Install Php Swoole Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl -q install swoole-2.0.11; \ - else \ - if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - echo '' | pecl install swoole-4.3.5; \ + # Install Php Swoole Extension + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ + pecl install swoole-2.0.11; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install swoole-4.3.5; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + pecl install swoole-4.5.11; \ else \ - if [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ - echo '' | pecl install swoole-4.6.0; \ - else \ - echo '' | pecl install swoole; \ - fi \ - fi \ - fi && \ + pecl install swoole; \ + fi; \ + fi; \ echo "extension=swoole.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini && \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-swoole.ini \ && php -m | grep -q 'swoole' \ From 95fe1b179f4f60ce2a1d050621c3fe7d8e689974 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 18:41:48 +0200 Subject: [PATCH 154/372] fix(YAML extension): avoid typo --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 4cbcf78f..47bd4adb 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1395,7 +1395,7 @@ RUN if [ ${INSTALL_YAML} = true ]; then \ echo '' | 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; \ + && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/yaml.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/35-yaml.ini \ ;fi ########################################################################### From 9317b71ebcb07b034dc6c8e9f775e800c2297344 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 18:46:47 +0200 Subject: [PATCH 155/372] fix(YAML extension): avoid typo --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 88784a92..27a839e0 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -843,7 +843,7 @@ RUN if [ ${INSTALL_YAML} = true ]; then \ echo '' | pecl install -a yaml-1.3.2; \ elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ echo '' | pecl install yaml-2.0.4; \ - else + else \ echo '' | pecl install yaml; \ fi \ && docker-php-ext-enable yaml; \ From ad2b94fa60bff9271592f33152610d84d5b3db95 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 18:51:06 +0200 Subject: [PATCH 156/372] fix(YAML extension): avoid typo --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 47bd4adb..578a795b 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1391,7 +1391,7 @@ RUN if [ ${INSTALL_YAML} = true ]; then \ echo '' | pecl install -a yaml-1.3.2; \ elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ echo '' | pecl install yaml-2.0.4; \ - else + else \ echo '' | pecl install yaml; \ fi \ && echo "extension=yaml.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/yaml.ini \ From 5686c698e7afae651d1e0efddbdc3779ed3374eb Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Sun, 21 Mar 2021 19:21:34 +0200 Subject: [PATCH 157/372] fix(YAML extension): avoid typo --- php-fpm/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 27a839e0..980ad426 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -838,15 +838,15 @@ 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 \ + apt-get install -yqq libyaml-dev \ + && if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ echo '' | pecl install -a yaml-1.3.2; \ elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ echo '' | pecl install yaml-2.0.4; \ else \ echo '' | pecl install yaml; \ fi \ - && docker-php-ext-enable yaml; \ + && docker-php-ext-enable yaml \ ;fi ########################################################################### From e1d2d810995ab7bce53c855c0fb616d7f405df89 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Mon, 22 Mar 2021 16:27:46 +0800 Subject: [PATCH 158/372] feat(fix swoole extension) | PHP 5.6 https://github.com/swoole/swoole-src/issues/2379#issuecomment-466613684 --- php-fpm/Dockerfile | 2 +- workspace/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d44ab4f3..7f822691 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -304,7 +304,7 @@ RUN set -eux; \ if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ - pecl install swoole-2.0.11; \ + pecl install swoole-2.0.10; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ pecl install swoole-4.3.5; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index d675f109..ec089297 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -590,7 +590,7 @@ ARG INSTALL_SWOOLE=false RUN if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ - pecl install swoole-2.0.11; \ + pecl install swoole-2.0.10; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ pecl install swoole-4.3.5; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ From bd9c1e52c069b4a413e6e4ddc9f67c83e2918611 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Mon, 22 Mar 2021 16:43:30 +0800 Subject: [PATCH 159/372] feat(CI build skip V8JS) | workspace --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 0a5ea227..03be7ae3 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -38,6 +38,7 @@ jobs: sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env + sed -i -- 's/V8JS=true/V8JS=false/g' .env docker-compose build ${{ matrix.service }} build-other: From 2e9ad09861c05b6251cfed5470eae6a5b244b5a0 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Mon, 22 Mar 2021 18:34:44 +0800 Subject: [PATCH 160/372] feat(fix xmlrpc) | workspace --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index ec089297..25f8647e 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1521,7 +1521,7 @@ RUN if [ ${INSTALL_GIT_PROMPT} = true ]; then \ ARG INSTALL_XMLRPC=false RUN if [ ${INSTALL_XMLRPC} = true ]; then \ - docker-php-ext-install xmlrpc \ + apt-get install -yqq php${LARADOCK_PHP_VERSION}-xmlrpc \ ;fi ########################################################################### From 425c9c33b37abbadc430713240e61266e18e2002 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Mon, 22 Mar 2021 20:07:39 +0800 Subject: [PATCH 161/372] remove duplidate apt-get update --- workspace/Dockerfile | 8 -------- 1 file changed, 8 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index f930189d..17238f09 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -203,14 +203,6 @@ COPY ./crontab /etc/cron.d RUN chmod -R 644 /etc/cron.d -########################################################################### -# Update Repositories -########################################################################### - -USER root - -RUN apt-get -yqq update - ########################################################################### # Drush: ########################################################################### From 02070105f61330371b4ba0fd5dd14f4f40bb6777 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Mon, 22 Mar 2021 21:24:18 +0800 Subject: [PATCH 162/372] feat(join some run step) | workspace --- workspace/Dockerfile | 329 ++++++++++++++++++------------------------- 1 file changed, 135 insertions(+), 194 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 17238f09..1da47888 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -240,121 +240,90 @@ RUN if [ ${INSTALL_WP_CLI} = true ]; then \ ;fi ########################################################################### -# BZ2: -########################################################################### - -ARG INSTALL_BZ2=false -RUN if [ ${INSTALL_BZ2} = true ]; then \ - apt-get -y install php${LARADOCK_PHP_VERSION}-bz2 \ -;fi - -########################################################################### -# GMP (GNU Multiple Precision): -########################################################################### - USER root +ARG INSTALL_BZ2=false ARG INSTALL_GMP=false +ARG INSTALL_GNUPG=false +ARG INSTALL_SSH2=false +ARG INSTALL_SOAP=false +ARG INSTALL_XSL=false ARG PHP_VERSION=${LARADOCK_PHP_VERSION} -RUN if [ ${INSTALL_GMP} = true ]; then \ - # Install the PHP GMP extension - apt-get -y install php${LARADOCK_PHP_VERSION}-gmp \ -;fi - -########################################################################### -# GnuPG: -########################################################################### - -ARG INSTALL_GNUPG=false - -RUN if [ ${INSTALL_GNUPG} = true ]; then \ - apt-get install -yqq php${LARADOCK_PHP_VERSION}-gnupg; \ +RUN set -eux; \ + ########################################################################### + # BZ2: + ########################################################################### + if [ ${INSTALL_BZ2} = true ]; then \ + apt-get -yqq install php${LARADOCK_PHP_VERSION}-bz2; \ + fi; \ + ########################################################################### + # GMP (GNU Multiple Precision): + ########################################################################### + if [ ${INSTALL_GMP} = true ]; then \ + # Install the PHP GMP extension + apt-get -yqq install php${LARADOCK_PHP_VERSION}-gmp; \ + fi; \ + ########################################################################### + # GnuPG: + ########################################################################### + if [ ${INSTALL_GNUPG} = true ]; then \ + apt-get -yqq install php${LARADOCK_PHP_VERSION}-gnupg; \ + fi; \ + ########################################################################### + # SSH2: + ########################################################################### + if [ ${INSTALL_SSH2} = true ]; then \ + # Install the PHP SSH2 extension + apt-get -yqq install libssh2-1-dev php${LARADOCK_PHP_VERSION}-ssh2; \ + fi; \ + ########################################################################### + # SOAP: + ########################################################################### + if [ ${INSTALL_SOAP} = true ]; then \ + # Install the PHP SOAP extension + apt-get -yqq install libxml2-dev php${LARADOCK_PHP_VERSION}-soap; \ + fi; \ + ########################################################################### + # XSL: + ########################################################################### + if [ ${INSTALL_XSL} = true ]; then \ + # Install the PHP XSL extension + apt-get -yqq install libxslt-dev php${LARADOCK_PHP_VERSION}-xsl; \ fi ########################################################################### -# SSH2: -########################################################################### - -USER root - -ARG INSTALL_SSH2=false - -RUN if [ ${INSTALL_SSH2} = true ]; then \ - # Install the PHP SSH2 extension - apt-get -y install libssh2-1-dev php${LARADOCK_PHP_VERSION}-ssh2 \ -;fi - -########################################################################### -# SOAP: -########################################################################### - -USER root - -ARG INSTALL_SOAP=false - -RUN if [ ${INSTALL_SOAP} = true ]; then \ - # Install the PHP SOAP extension - apt-get -y install libxml2-dev php${LARADOCK_PHP_VERSION}-soap \ -;fi - -########################################################################### -# XSL: -########################################################################### - -USER root - -ARG INSTALL_XSL=false - -RUN if [ ${INSTALL_XSL} = true ]; then \ - # Install the PHP XSL extension - apt-get -y install libxslt-dev php${LARADOCK_PHP_VERSION}-xsl \ -;fi - - -########################################################################### -# LDAP: -########################################################################### ARG INSTALL_LDAP=false - -RUN if [ ${INSTALL_LDAP} = true ]; then \ - apt-get install -y libldap2-dev && \ - apt-get install -y php${LARADOCK_PHP_VERSION}-ldap \ -;fi - -########################################################################### -# SMB: -########################################################################### - ARG INSTALL_SMB=false - -RUN if [ ${INSTALL_SMB} = true ]; then \ - apt-get install -y smbclient php-smbclient coreutils \ -;fi - -########################################################################### -# IMAP: -########################################################################### - ARG INSTALL_IMAP=false - -RUN if [ ${INSTALL_IMAP} = true ]; then \ - apt-get install -y php${LARADOCK_PHP_VERSION}-imap \ -;fi - -########################################################################### -# Subversion: -########################################################################### - -USER root - ARG INSTALL_SUBVERSION=false -RUN if [ ${INSTALL_SUBVERSION} = true ]; then \ - apt-get install -y subversion \ -;fi - +RUN set -eux; \ + ########################################################################### + # LDAP: + ########################################################################### + if [ ${INSTALL_LDAP} = true ]; then \ + apt-get install -yqq libldap2-dev php${LARADOCK_PHP_VERSION}-ldap; \ + fi; \ + ########################################################################### + # SMB: + ########################################################################### + if [ ${INSTALL_SMB} = true ]; then \ + apt-get install -yqq smbclient php-smbclient coreutils; \ + fi; \ + ########################################################################### + # IMAP: + ########################################################################### + if [ ${INSTALL_IMAP} = true ]; then \ + apt-get install -yqq php${LARADOCK_PHP_VERSION}-imap; \ + fi; \ + ########################################################################### + # Subversion: + ########################################################################### + if [ ${INSTALL_SUBVERSION} = true ]; then \ + apt-get install -yqq subversion; \ + fi ########################################################################### # xDebug: @@ -559,7 +528,7 @@ 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 \ + apt-get -yqq install php-gearman \ ;fi ########################################################################### @@ -569,7 +538,6 @@ RUN if [ ${INSTALL_GEARMAN} = true ]; then \ ARG INSTALL_PHPREDIS=false RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ - apt-get update -yqq && \ apt-get install -yqq php${LARADOCK_PHP_VERSION}-redis \ ;fi @@ -619,8 +587,7 @@ RUN if [ "${INSTALL_TAINT}" = true ]; then \ ARG INSTALL_LIBPNG=false RUN if [ ${INSTALL_LIBPNG} = true ]; then \ - apt-get update && \ - apt-get install libpng16-16 \ + apt-get -yqq install libpng16-16 \ ;fi ########################################################################### @@ -680,8 +647,7 @@ RUN if [ ${INSTALL_FSWATCH} = true ]; then \ ARG INSTALL_GRAPHVIZ=false RUN if [ ${INSTALL_GRAPHVIZ} = true ]; then \ - apt-get update && \ - apt-get install -y graphviz \ + apt-get install -yqq graphviz \ ;fi # IonCube Loader @@ -1249,7 +1215,7 @@ USER root ARG INSTALL_TERRAFORM=false RUN if [ ${INSTALL_TERRAFORM} = true ]; then \ - apt-get -y install sudo wget unzip \ + apt-get -yqq install sudo wget unzip \ && wget https://releases.hashicorp.com/terraform/0.10.6/terraform_0.10.6_linux_amd64.zip \ && unzip terraform_0.10.6_linux_amd64.zip \ && mv terraform /usr/local/bin \ @@ -1265,7 +1231,7 @@ ARG INSTALL_PG_CLIENT=false RUN if [ ${INSTALL_PG_CLIENT} = true ]; then \ # Install the pgsql client - apt-get install wget \ + apt-get -yqq install wget \ && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ && echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list \ && apt-get update \ @@ -1307,7 +1273,7 @@ ARG LARADOCK_PHALCON_VERSION ENV LARADOCK_PHALCON_VERSION ${LARADOCK_PHALCON_VERSION} RUN if [ $INSTALL_PHALCON = true ]; then \ - apt-get update && apt-get install -y unzip libpcre3-dev gcc make re2c git automake autoconf\ + apt-get update && apt-get install -yqq unzip libpcre3-dev gcc make re2c git automake autoconf\ && git clone https://github.com/jbboehr/php-psr.git \ && cd php-psr \ && phpize \ @@ -1326,106 +1292,81 @@ RUN if [ $INSTALL_PHALCON = true ]; then \ ;fi ########################################################################### -# MySQL Client: -########################################################################### - USER root ARG INSTALL_MYSQL_CLIENT=false - -RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \ - apt-get update -yqq && \ - apt-get -y install mysql-client \ -;fi - -########################################################################### -# ping: -########################################################################### - -USER root - ARG INSTALL_PING=false - -RUN if [ ${INSTALL_PING} = true ]; then \ - apt-get update -yqq && \ - apt-get -y install inetutils-ping \ -;fi - -########################################################################### -# sshpass: -########################################################################### - -USER root - ARG INSTALL_SSHPASS=false - -RUN if [ ${INSTALL_SSHPASS} = true ]; then \ - apt-get update -yqq && \ - apt-get -y install sshpass \ -;fi - -########################################################################### -# Docker Client: -########################################################################### - -USER root - ARG INSTALL_DOCKER_CLIENT=false -RUN if [ ${INSTALL_DOCKER_CLIENT} = true ]; then \ - curl -sS https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz -o /tmp/docker.tar.gz && \ - tar -xzf /tmp/docker.tar.gz -C /tmp/ && \ - cp /tmp/docker/docker* /usr/local/bin && \ - chmod +x /usr/local/bin/docker* \ -;fi +RUN set -eux; \ + ########################################################################### + # MySQL Client: + ########################################################################### + if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \ + apt-get -yqq install mysql-client; \ + fi; \ + ########################################################################### + # ping: + ########################################################################### + if [ ${INSTALL_PING} = true ]; then \ + apt-get -yqq install inetutils-ping; \ + fi; \ + ########################################################################### + # sshpass: + ########################################################################### + if [ ${INSTALL_SSHPASS} = true ]; then \ + apt-get -yqq install sshpass; \ + fi; \ + ########################################################################### + # Docker Client: + ########################################################################### + if [ ${INSTALL_DOCKER_CLIENT} = true ]; then \ + curl -sS https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz -o /tmp/docker.tar.gz; \ + tar -xzf /tmp/docker.tar.gz -C /tmp/; \ + cp /tmp/docker/docker* /usr/local/bin; \ + chmod +x /usr/local/bin/docker*; \ + fi ########################################################################### -# YAML: extension for PHP-CLI -########################################################################### - USER root ARG INSTALL_YAML=false +ARG INSTALL_RDKAFKA=false +ARG INSTALL_FFMPEG=false -RUN if [ ${INSTALL_YAML} = true ]; then \ - apt-get install libyaml-dev -y ; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ +RUN set -eux; \ + ########################################################################### + # YAML: extension for PHP-CLI + ########################################################################### + if [ ${INSTALL_YAML} = true ]; then \ + apt-get install -yqq libyaml-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ echo '' | pecl install -a yaml-1.3.2; \ elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ echo '' | pecl install yaml-2.0.4; \ else \ echo '' | 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 - -########################################################################### -# RDKAFKA: -########################################################################### - -ARG INSTALL_RDKAFKA=false - -RUN if [ ${INSTALL_RDKAFKA} = true ]; then \ - apt-get install -y librdkafka-dev && \ - pecl install rdkafka && \ - echo "extension=rdkafka.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/rdkafka.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/rdkafka.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-rdkafka.ini \ - && php -m | grep -q 'rdkafka' \ -;fi - -########################################################################### -# FFMpeg: -########################################################################### - -USER root - -ARG INSTALL_FFMPEG=false - -RUN if [ ${INSTALL_FFMPEG} = true ]; then \ - apt-get -y install ffmpeg \ -;fi - + 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; \ + ########################################################################### + # RDKAFKA: + ########################################################################### + if [ ${INSTALL_RDKAFKA} = true ]; then \ + apt-get install -yqq librdkafka-dev; \ + pecl install rdkafka; \ + echo "extension=rdkafka.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/rdkafka.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/rdkafka.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-rdkafka.ini; \ + php -m | grep -q 'rdkafka'; \ + fi; \ + ########################################################################### + # FFMpeg: + ########################################################################### + if [ ${INSTALL_FFMPEG} = true ]; then \ + apt-get -yqq install ffmpeg; \ + fi ########################################################################### # BBC Audio Waveform Image Generator: @@ -1494,7 +1435,7 @@ USER root ARG INSTALL_GNU_PARALLEL=false RUN if [ ${INSTALL_GNU_PARALLEL} = true ]; then \ - apt-get -y install parallel \ + apt-get -yqq install parallel \ ;fi ########################################################################### @@ -1528,7 +1469,7 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \ ARG INSTALL_LNAV=false RUN if [ ${INSTALL_LNAV} = true ]; then \ - apt-get install -y lnav \ + apt-get install -yqq lnav \ ;fi ########################################################################### From 08e7450f46fb50b20dfdb3de6fadb79856d106ac Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 23 Mar 2021 00:11:08 +0800 Subject: [PATCH 163/372] fix typo --- workspace/Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1da47888..3d534f52 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -547,7 +547,8 @@ RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ ARG INSTALL_SWOOLE=false -RUN if [ ${INSTALL_SWOOLE} = true ]; then \ +RUN set -eux; \ + if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ pecl install swoole-2.0.10; \ @@ -558,11 +559,10 @@ RUN if [ ${INSTALL_SWOOLE} = true ]; then \ else \ pecl install swoole; \ fi; \ - fi; \ - echo "extension=swoole.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-swoole.ini \ - && php -m | grep -q 'swoole' \ -;fi + echo "extension=swoole.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-swoole.ini; \ + php -m | grep -q 'swoole'; \ + fi ########################################################################### # Taint EXTENSION From cffdc7588ed72ed8834f04955163a73a61916d27 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Mon, 22 Mar 2021 21:34:34 +0200 Subject: [PATCH 164/372] feat(MSSQL extension): add MSSQL extension support MSSQL extension should be supported on the all available versions. --- .github/workflows/main-ci.yml | 1 - php-fpm/Dockerfile | 11 ++++++----- workspace/Dockerfile | 22 ++++++++++++---------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8fae1b4f..0bb078da 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -33,7 +33,6 @@ jobs: sed -i -- 's/PHALCON=true/PHALCON=false/g' .env sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env - sed -i -- 's/MSSQL=true/MSSQL=false/g' .env sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 65d69651..6b9eaded 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -698,7 +698,7 @@ ARG INSTALL_MSSQL=false RUN set -eux; \ if [ ${INSTALL_MSSQL} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - apt-get -y install freetds-dev libsybdb5 \ + apt-get -yqq install freetds-dev libsybdb5 \ && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/libsybdb.so \ && docker-php-ext-install mssql pdo_dblib \ && php -m | grep -q 'mssql' \ @@ -712,14 +712,15 @@ RUN set -eux; \ && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ && curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list \ && apt-get update -yqq \ - # Install Dependencies && ACCEPT_EULA=Y apt-get install -yqq unixodbc unixodbc-dev libgss3 odbcinst msodbcsql17 locales \ && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ - # link local aliases && ln -sfn /etc/locale.alias /usr/share/locale/locale.alias \ && locale-gen \ - # Install pdo_sqlsrv and sqlsrv from PECL. Replace pdo_sqlsrv-4.1.8preview with preferred version. - && if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + && if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "2" ]; then \ + pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ + ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ + pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ + ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ pecl install pdo_sqlsrv-5.3.0 sqlsrv-5.3.0 \ ;else \ pecl install pdo_sqlsrv sqlsrv \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1da47888..4fe26f1e 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1040,7 +1040,7 @@ ARG INSTALL_MSSQL=false RUN set -eux; \ if [ ${INSTALL_MSSQL} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - apt-get -y install php5.6-sybase freetds-bin freetds-common libsybdb5 \ + apt-get install -yqq php5.6-sybase freetds-bin freetds-common libsybdb5 \ && php -m | grep -q 'mssql' \ && php -m | grep -q 'pdo_dblib' \ ;else \ @@ -1051,22 +1051,24 @@ RUN set -eux; \ curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ apt-get update -yqq && \ - ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools unixodbc unixodbc-dev libgss3 odbcinst locales && \ + ACCEPT_EULA=Y apt-get install -yqq msodbcsql17 mssql-tools unixodbc unixodbc-dev libgss3 odbcinst locales && \ ln -sfn /opt/mssql-tools/bin/sqlcmd /usr/bin/sqlcmd && \ ln -sfn /opt/mssql-tools/bin/bcp /usr/bin/bcp && \ echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ locale-gen && \ - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ - pecl install sqlsrv-5.3.0 pdo_sqlsrv-5.3.0 \ - ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ - pecl install sqlsrv-5.6.1 pdo_sqlsrv-5.6.1 \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "2" ]; then \ + pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ + ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ + pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ + ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + pecl install pdo_sqlsrv-5.3.0 sqlsrv-5.3.0 \ ;else \ - pecl install sqlsrv pdo_sqlsrv \ + pecl install pdo_sqlsrv sqlsrv \ ;fi && \ echo "extension=sqlsrv.so" > /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-sqlsrv.ini && \ - echo "extension=pdo_sqlsrv.so" > /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-pdo_sqlsrv.ini \ - && php -m | grep -q 'sqlsrv' \ - && php -m | grep -q 'pdo_sqlsrv' \ + echo "extension=pdo_sqlsrv.so" > /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-pdo_sqlsrv.ini && \ + php -m | grep -q 'sqlsrv' && \ + php -m | grep -q 'pdo_sqlsrv' \ ;fi \ ;fi From 03fd7ea948eeecf96a756cdf202c996982108adb Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Tue, 23 Mar 2021 00:54:46 +0200 Subject: [PATCH 165/372] feat(MEMCACHED extension): add memcached extension installation for CI Add memcached extension support. Memcached extension should be supported on the all available versions. --- .github/workflows/main-ci.yml | 1 - php-fpm/Dockerfile | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8fae1b4f..0fefa7ad 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -34,7 +34,6 @@ jobs: sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env sed -i -- 's/MSSQL=true/MSSQL=false/g' .env - sed -i -- 's/MEMCACHED=true/MEMCACHED=false/g' .env sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 65d69651..0a11a3b0 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -506,9 +506,9 @@ ARG INSTALL_MEMCACHED=false RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ # Install the php memcached extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install memcached-2.2.0; \ + echo '' | pecl -q install memcached-2.2.0; \ else \ - pecl install memcached-3.1.3; \ + echo '' | pecl -q install memcached; \ fi \ && docker-php-ext-enable memcached \ ;fi From 0ee74f95ca6dcf0f90c81aacb8ec8541788503a2 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Tue, 23 Mar 2021 01:29:38 +0200 Subject: [PATCH 166/372] fix(GD extension): add GD extension installed for PHP 8.0 --- laravel-horizon/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index e35e81e2..0d48203d 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -78,10 +78,10 @@ RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ apk add --update --no-cache freetype-dev libjpeg-turbo-dev jpeg-dev libpng-dev; \ - if [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \ - docker-php-ext-configure gd --with-freetype --with-jpeg; \ + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "80000" ] || [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70400" ]; then \ + docker-php-ext-configure gd --with-freetype --with-jpeg; \ else \ - docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/; \ + docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/; \ fi && \ docker-php-ext-install gd \ ;fi From 12c35bb5eafb25b80c00a5182fe700c9d127fa18 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 23 Mar 2021 09:20:43 +0800 Subject: [PATCH 167/372] Update .travis.yml move to GitHub CI #2907 --- .travis.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index 65470f0d..f3290be2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,22 +7,6 @@ env: matrix: - HUGO_VERSION=0.20.2 - - PHP_VERSION=5.6 BUILD_SERVICE=workspace - - PHP_VERSION=7.0 BUILD_SERVICE=workspace - - 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=8.0 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=8.0 BUILD_SERVICE=php-fpm - - PHP_VERSION=hhvm BUILD_SERVICE=hhvm # - PHP_VERSION=5.6 BUILD_SERVICE=php-worker From 1654ffab7d1598334b97410682763f07bee41da6 Mon Sep 17 00:00:00 2001 From: Pavel Savushkin Date: Tue, 23 Mar 2021 04:01:27 +0200 Subject: [PATCH 168/372] fix(SWOOLE extension): add SWOOLE extension installed correctly --- php-worker/Dockerfile | 19 ++++++++++--------- workspace/Dockerfile | 8 ++++---- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 5f96e627..9c2a60a1 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -337,16 +337,17 @@ ARG INSTALL_SWOOLE=false RUN if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl -q install swoole-2.0.10; \ + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ + echo '' | pecl -q install swoole-2.0.10; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + echo '' | pecl -q install swoole-4.3.5; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + echo '' | pecl -q install swoole-4.5.11; \ else \ - if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ - pecl install swoole-2.2.0; \ - else \ - pecl install swoole; \ - fi \ - fi \ - && docker-php-ext-enable swoole \ + echo '' | pecl -q install swoole; \ + fi; \ + docker-php-ext-enable swoole \ + && php -m | grep -q 'swoole' \ ;fi ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index e59c449f..97270783 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -551,13 +551,13 @@ RUN set -eux; \ if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ - pecl install swoole-2.0.10; \ + echo '' | pecl -q install swoole-2.0.10; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ - pecl install swoole-4.3.5; \ + echo '' | pecl -q install swoole-4.3.5; \ elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ - pecl install swoole-4.5.11; \ + echo '' | pecl -q install swoole-4.5.11; \ else \ - pecl install swoole; \ + echo '' | pecl -q install swoole; \ fi; \ echo "extension=swoole.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini; \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/swoole.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-swoole.ini; \ From d759e82a02c950d141d396266972de944d76326a Mon Sep 17 00:00:00 2001 From: aiden Date: Tue, 23 Mar 2021 17:49:15 +1100 Subject: [PATCH 169/372] Renamed env-example to .env.example in documentation, reference and build files --- .github/workflows/main-ci.yml | 2 +- .vscode/settings.json | 2 +- DOCUMENTATION/content/contributing/index.md | 2 +- DOCUMENTATION/content/getting-started/index.md | 6 +++--- DOCUMENTATION/content/introduction/index.md | 4 ++-- README-zh.md | 2 +- travis-build.sh | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 90a692ac..e0edd735 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -15,5 +15,5 @@ jobs: env: PHP_VERSION: ${{ matrix.php_version }} run: | - cp env-example .env + cp .env.example .env docker-compose build ${{ matrix.service }} diff --git a/.vscode/settings.json b/.vscode/settings.json index 1166680a..3f259ad1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "files.associations": { - "env-example": "dotenv", + ".env.example": "dotenv", "Dockerfile-*": "dockerfile" } } diff --git a/DOCUMENTATION/content/contributing/index.md b/DOCUMENTATION/content/contributing/index.md index 4a39b2de..b2d05d61 100644 --- a/DOCUMENTATION/content/contributing/index.md +++ b/DOCUMENTATION/content/contributing/index.md @@ -81,7 +81,7 @@ To update the sidebar or add a new section to it, you can edit this `DOCUMENTATI * Make sure you follow the same code/comments style. -* Add the environment variables to the `env-example` if you have any. +* Add the environment variables to the `.env.example` if you have any. * **MOST IMPORTANTLY** update the `Documentation`, add as much information. diff --git a/DOCUMENTATION/content/getting-started/index.md b/DOCUMENTATION/content/getting-started/index.md index b96cdfe5..a16a9828 100644 --- a/DOCUMENTATION/content/getting-started/index.md +++ b/DOCUMENTATION/content/getting-started/index.md @@ -75,7 +75,7 @@ Your folder structure should look like this: We'll need to do step 1 of the [Usage](#Usage) section now to make this happen. ``` -cp env-example .env +cp .env.example .env ``` At the top, change the `APP_CODE_PATH_HOST` variable to your project path. @@ -155,10 +155,10 @@ We recommend using a Docker version which is newer than 1.13.
-1 - Enter the laradock folder and copy `env-example` to `.env` +1 - Enter the laradock folder and copy `.env.example` to `.env` ```shell -cp env-example .env +cp .env.example .env ``` You can edit the `.env` file to choose which software's you want to be installed in your environment. You can always refer to the `docker-compose.yml` file to see how those variables are being used. diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 4466e3ab..c8adcfb2 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -46,10 +46,10 @@ Let's see how easy it is to setup our demo stack `PHP`, `NGINX`, `MySQL`, `Redis git clone https://github.com/Laradock/laradock.git ``` -2 - Enter the laradock folder and rename `env-example` to `.env`. +2 - Enter the laradock folder and rename `.env.example` to `.env`. ```shell -cp env-example .env +cp .env.example .env ``` 3 - Run your containers: diff --git a/README-zh.md b/README-zh.md index e50794b7..6055f2df 100644 --- a/README-zh.md +++ b/README-zh.md @@ -70,7 +70,7 @@ git clone https://github.com/laradock/laradock.git 2. 进入 Laradock 目录 ```bash -cp env-example .env +cp .env.example .env ``` 3. 运行这些容器。 diff --git a/travis-build.sh b/travis-build.sh index 461306c7..220d572b 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -11,7 +11,7 @@ env | sort #### Build the Docker Images if [ -n "${PHP_VERSION}" ]; then - cp env-example .env + cp .env.example .env sed -i -- "s/PHP_VERSION=.*/PHP_VERSION=${PHP_VERSION}/g" .env sed -i -- 's/=false/=true/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env From 0e5977cc64168d60cecc4bb975aeac50dea60869 Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Tue, 23 Mar 2021 23:03:56 +0800 Subject: [PATCH 170/372] feat(change source): move together --- workspace/Dockerfile | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 97270783..ca624966 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -23,19 +23,26 @@ 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 +########################################################################### +# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env. +########################################################################### + +ARG CHANGE_SOURCE=false +ARG UBUNTU_SOURCE=aliyun +COPY ./sources.sh /tmp/sources.sh +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; \ + chmod +x /tmp/sources.sh; \ + /bin/sh -c /tmp/sources.sh; \ + fi; \ + rm -rf /tmp/sources.sh + ########################################################################### # Laradock non-root user: ########################################################################### @@ -46,16 +53,6 @@ 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 \ - chmod +x /tmp/sources.sh && \ - /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 && \ From 3ad4edcfae21eac0eab15981b3d22db31133440d Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 24 Mar 2021 08:25:31 +0800 Subject: [PATCH 171/372] Update README: Add GitHub CI badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8380be3d..d1efe3d6 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ GitHub forks GitHub issues GitHub stars + GitHub CI Build status GitHub license

From 3146c7289978cccdd5f01b7e4af781e23f09483e Mon Sep 17 00:00:00 2001 From: Shao Yu Lung Date: Wed, 24 Mar 2021 19:57:22 +0800 Subject: [PATCH 172/372] fix conflicting --- DOCUMENTATION/content/documentation/index.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index b31ce459..1c8c8134 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -289,17 +289,31 @@ docker-compose build workspace
a) open the `.env` file
-b) search for the `WORKSPACE_INSTALL_XDEBUG` argument under the Workspace Container +b) search for the `WORKSPACE_INSTALL_XDEBUG` argument under the Workspace settings
c) set it to `true`
-d) search for the `PHP_FPM_INSTALL_XDEBUG` argument under the PHP-FPM Container +d) search for the `PHP_FPM_INSTALL_XDEBUG` argument under the PHP-FPM settings
e) set it to `true` 2 - Re-build the containers `docker-compose build workspace php-fpm` For information on how to configure xDebug with your IDE and work it out, check this [Repository](https://github.com/LarryEitel/laravel-laradock-phpstorm) or follow up on the next section if you use linux and PhpStorm. +``` +########################################################### +################ Containers Customization ################# +########################################################### + +### WORKSPACE ############################################# +... +WORKSPACE_INSTALL_XDEBUG=true +... +### PHP_FPM ############################################### +... +PHP_FPM_INSTALL_XDEBUG=true +... +``` From 8528d7cd4d729986527eafdb0c2b11e3b1cdfd79 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Thu, 25 Mar 2021 19:51:07 +0100 Subject: [PATCH 173/372] display more open collective links --- DOCUMENTATION/content/introduction/index.md | 70 ++++++++++++++++++++- README.md | 70 ++++++++++++++++++++- 2 files changed, 136 insertions(+), 4 deletions(-) diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 4466e3ab..e6923743 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -365,7 +365,7 @@ Laradock is an MIT-licensed open source project with its ongoing development mad You can support us using any of the methods below: -1: [Open Collective](https://opencollective.com/laradock/contribute) +1: [Open Collective](https://opencollective.com/laradock)
2: [Paypal](https://paypal.me/mzmmzz)
@@ -401,6 +401,28 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + +

### Silver Sponsors @@ -418,6 +440,28 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + +

### Bronze Sponsors @@ -435,12 +479,34 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + +

You can sponsor us using any of the methods below: -1: Sponsor via [Open Collective](https://opencollective.com/laradock/contribute/). +1: Sponsor via [Open Collective](https://opencollective.com/laradock/).
2: Email us at support@laradock.io. diff --git a/README.md b/README.md index d1efe3d6..fc32459c 100644 --- a/README.md +++ b/README.md @@ -172,7 +172,7 @@ Laradock is an MIT-licensed open source project with its ongoing development mad You can support us using any of the methods below: -1: [Open Collective](https://opencollective.com/laradock/contribute) +1: [Open Collective](https://opencollective.com/laradock)
2: [Paypal](https://paypal.me/mzmmzz)
@@ -208,6 +208,28 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + +

### Silver Sponsors @@ -225,6 +247,28 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + +

### Bronze Sponsors @@ -242,12 +286,34 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + +

You can sponsor us using any of the methods below: -1: Sponsor via [Open Collective](https://opencollective.com/laradock/contribute/). +1: Sponsor via [Open Collective](https://opencollective.com/laradock/).
2: Email us at support@laradock.io. From 05a45ed0c86f30cce339f1b693a07d6cd169aa7f Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Thu, 25 Mar 2021 19:56:45 +0100 Subject: [PATCH 174/372] display more open collective links --- DOCUMENTATION/content/introduction/index.md | 26 --------------------- README.md | 26 --------------------- 2 files changed, 52 deletions(-) diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index e6923743..d53cca8f 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -407,21 +407,6 @@ Sponsoring is an act of giving in a different fashion. 🌱 - - - - - - - - - - - - - - -

@@ -451,17 +436,6 @@ Sponsoring is an act of giving in a different fashion. 🌱 - - - - - - - - - - -

### Bronze Sponsors diff --git a/README.md b/README.md index fc32459c..5dc57f6d 100644 --- a/README.md +++ b/README.md @@ -214,21 +214,6 @@ Sponsoring is an act of giving in a different fashion. 🌱 - - - - - - - - - - - - - - -

@@ -258,17 +243,6 @@ Sponsoring is an act of giving in a different fashion. 🌱 - - - - - - - - - - -

### Bronze Sponsors From 25701b18909174bdda0badc653f640e7265f34c2 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sun, 28 Mar 2021 11:18:39 +0800 Subject: [PATCH 175/372] php 5.6 skip install deciman extension --- php-fpm/Dockerfile | 12 ++++++++---- workspace/Dockerfile | 15 +++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 9ee8460f..46420241 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1078,10 +1078,14 @@ USER root ARG INSTALL_PHPDECIMAL=false RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ - apt-get update -yqq \ - && apt-get install -y libmpdec-dev \ - && pecl install decimal \ - && docker-php-ext-enable decimal \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo 'decimal not support PHP 5.6'; \ + else \ + apt-get install -yqq libmpdec-dev \ + && pecl install decimal \ + && docker-php-ext-enable decimal \ + && php -m | grep -q 'decimal' \ + ;fi \ ;fi ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 7ef997b3..85fd25d2 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1588,12 +1588,15 @@ USER root ARG INSTALL_PHPDECIMAL=false RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ - apt-get update -yqq \ - && apt-get install -y libmpdec-dev \ - && pecl install decimal \ - && echo "extension=decimal.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini \ - && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-decimal.ini \ - && php -m | grep -q 'decimal' \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo 'decimal not support PHP 5.6'; \ + else \ + apt-get install -yqq libmpdec-dev \ + && pecl install decimal \ + && echo "extension=decimal.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini \ + && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-decimal.ini \ + && php -m | grep -q 'decimal' \ + ;fi \ ;fi # From 1b3a0f1d6a5094b1eb49886ac0e801255cc118db Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sun, 28 Mar 2021 12:20:38 +0800 Subject: [PATCH 176/372] postgres-postgis move base image --- postgres-postgis/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgres-postgis/Dockerfile b/postgres-postgis/Dockerfile index 96d85741..3b219f48 100644 --- a/postgres-postgis/Dockerfile +++ b/postgres-postgis/Dockerfile @@ -1,4 +1,4 @@ -FROM mdillon/postgis:latest +FROM postgis/postgis:latest LABEL maintainer="Mahmoud Zalt " From eae85f3a0d995965609e1bc65a31314435f72267 Mon Sep 17 00:00:00 2001 From: Gautier DELEGLISE Date: Mon, 29 Mar 2021 17:12:04 +0200 Subject: [PATCH 177/372] The daemon config is deprecated --- php-worker/supervisord.d/laravel-worker.conf.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-worker/supervisord.d/laravel-worker.conf.example b/php-worker/supervisord.d/laravel-worker.conf.example index 06401183..0907600f 100644 --- a/php-worker/supervisord.d/laravel-worker.conf.example +++ b/php-worker/supervisord.d/laravel-worker.conf.example @@ -1,6 +1,6 @@ [program:laravel-worker] process_name=%(program_name)s_%(process_num)02d -command=php /var/www/artisan queue:work --sleep=3 --tries=3 --daemon +command=php /var/www/artisan queue:work --sleep=3 --tries=3 autostart=true autorestart=true numprocs=8 From ac08bc436441d61def0b4186b3ae6555fa3ed01a Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sun, 4 Apr 2021 20:46:57 +0800 Subject: [PATCH 178/372] add extension imagick installed check --- php-fpm/Dockerfile | 3 ++- workspace/Dockerfile | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 46420241..4c090be0 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -772,7 +772,8 @@ RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ else \ pecl install imagick; \ fi && \ - docker-php-ext-enable imagick \ + docker-php-ext-enable imagick; \ + php -m | grep -q 'imagick' \ ;fi ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 85fd25d2..f5b2048d 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1202,7 +1202,8 @@ RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ pecl install imagick; \ fi && \ echo "extension=imagick.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/imagick.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/imagick.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-imagick.ini \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/imagick.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-imagick.ini && \ + php -m | grep -q 'imagick' \ ;fi ########################################################################### From 983fb1479568bb11e867cd814d653a88d7ac3f16 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sun, 4 Apr 2021 21:29:54 +0800 Subject: [PATCH 179/372] fix php-fpm AMQP extension install failed #2929 --- php-fpm/Dockerfile | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 46420241..d7e98ba6 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -401,7 +401,11 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \ # download and install manually, to make sure it's compatible with ampq installed by pecl later # install cmake first apt-get -yqq install cmake && \ - curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ] || [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/v0.11.0.tar.gz; \ + else \ + curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz; \ + fi && \ mkdir -p rabbitmq-c && \ tar -C rabbitmq-c -zxvf /tmp/rabbitmq-c.tar.gz --strip 1 && \ cd rabbitmq-c/ && \ @@ -416,7 +420,8 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \ fi && \ docker-php-ext-enable amqp && \ # Install the sockets extension - docker-php-ext-install sockets \ + docker-php-ext-install sockets && \ + php -m | grep -q 'sockets' \ ;fi ########################################################################### From 258ea23b6496437f8d0fa8db9fd9f89aad8dc396 Mon Sep 17 00:00:00 2001 From: Saqib S Date: Mon, 5 Apr 2021 10:36:54 +0500 Subject: [PATCH 180/372] Added Memcached dependency installation in workspace Dockerfile. --- workspace/Dockerfile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 85fd25d2..04221f67 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1220,6 +1220,16 @@ RUN if [ ${INSTALL_TERRAFORM} = true ]; then \ && mv terraform /usr/local/bin \ && rm terraform_0.10.6_linux_amd64.zip \ ;fi + +########################################################################### +# Memcached Dependecies: +########################################################################### + +RUN if [ ${PHP_FPM_INSTALL_MEMCACHED} = true ]; then \ + apt-get -y install php${LARADOCK_PHP_VERSION}-igbinary \ + && apt-get -y install php${LARADOCK_PHP_VERSION}-memcached \ +;fi + ########################################################################### # pgsql client ########################################################################### From e13482195b7624f28f0064e07b93910c3d082b04 Mon Sep 17 00:00:00 2001 From: Saqib S Date: Mon, 5 Apr 2021 13:46:30 +0500 Subject: [PATCH 181/372] Added ARG for workspace Memcached --- docker-compose.yml | 1 + env-example | 1 + workspace/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3fadfdae..93cf6c18 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -168,6 +168,7 @@ services: - INSTALL_PHPDECIMAL=${WORKSPACE_INSTALL_PHPDECIMAL} - PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION} - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} + - INSTALL_MEMCACHED=${WORKSPACE_INSTALL_MEMCACHED} - http_proxy - https_proxy - no_proxy diff --git a/env-example b/env-example index 9b71f674..39242cd5 100644 --- a/env-example +++ b/env-example @@ -199,6 +199,7 @@ WORKSPACE_INSTALL_LNAV=false WORKSPACE_INSTALL_PROTOC=false WORKSPACE_INSTALL_PHPDECIMAL=false WORKSPACE_PROTOC_VERSION=latest +WORKSPACE_INSTALL_MEMCACHED=true ### PHP_FPM ############################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 04221f67..cceb0c57 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1225,7 +1225,7 @@ RUN if [ ${INSTALL_TERRAFORM} = true ]; then \ # Memcached Dependecies: ########################################################################### -RUN if [ ${PHP_FPM_INSTALL_MEMCACHED} = true ]; then \ +RUN if [ ${WORKSPACE_INSTALL_MEMCACHED} = true ]; then \ apt-get -y install php${LARADOCK_PHP_VERSION}-igbinary \ && apt-get -y install php${LARADOCK_PHP_VERSION}-memcached \ ;fi From 409ec06f9a1e7edefdfff104c0cd6b915a00e851 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Mon, 5 Apr 2021 18:34:49 +0800 Subject: [PATCH 182/372] support zookeeper extension #2927 --- docker-compose.yml | 2 ++ env-example | 2 ++ php-fpm/Dockerfile | 25 +++++++++++++++++++++++++ workspace/Dockerfile | 26 ++++++++++++++++++++++++++ 4 files changed, 55 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 3fadfdae..d2995c45 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -166,6 +166,7 @@ services: - INSTALL_LNAV=${WORKSPACE_INSTALL_LNAV} - INSTALL_PROTOC=${WORKSPACE_INSTALL_PROTOC} - INSTALL_PHPDECIMAL=${WORKSPACE_INSTALL_PHPDECIMAL} + - INSTALL_ZOOKEEPER=${WORKSPACE_INSTALL_ZOOKEEPER} - PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION} - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} - http_proxy @@ -263,6 +264,7 @@ services: - INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF} - INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC} - INSTALL_PHPDECIMAL=${PHP_FPM_INSTALL_PHPDECIMAL} + - INSTALL_ZOOKEEPER=${PHP_FPM_INSTALL_ZOOKEEPER} - DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} diff --git a/env-example b/env-example index 9b71f674..e3093f62 100644 --- a/env-example +++ b/env-example @@ -198,6 +198,7 @@ WORKSPACE_INSTALL_DOCKER_CLIENT=false WORKSPACE_INSTALL_LNAV=false WORKSPACE_INSTALL_PROTOC=false WORKSPACE_INSTALL_PHPDECIMAL=false +WORKSPACE_INSTALL_ZOOKEEPER=false WORKSPACE_PROTOC_VERSION=latest ### PHP_FPM ############################################### @@ -258,6 +259,7 @@ PHP_FPM_INSTALL_SSHPASS=false PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_WKHTMLTOPDF=false PHP_FPM_INSTALL_PHPDECIMAL=false +PHP_FPM_INSTALL_ZOOKEEPER=false PHP_FPM_FFMPEG=false PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 66cd3c28..c77d7a65 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1094,6 +1094,31 @@ RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ ;fi \ ;fi +########################################################################### +# zookeeper +########################################################################### +ARG INSTALL_ZOOKEEPER=false + +RUN set -eux; \ + if [ ${INSTALL_ZOOKEEPER} = true ]; then \ + apt install -yqq libzookeeper-mt-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + curl -L -o /tmp/php-zookeeper.tar.gz https://github.com/php-zookeeper/php-zookeeper/archive/master.tar.gz; \ + mkdir -p /tmp/php-zookeeper; \ + tar -C /tmp/php-zookeeper -zxvf /tmp/php-zookeeper.tar.gz --strip 1; \ + cd /tmp/php-zookeeper; \ + phpize && ./configure && make && make install;\ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install zookeeper-0.5.0; \ + else \ + pecl install zookeeper-0.7.2; \ + fi; \ + fi; \ + docker-php-ext-enable zookeeper; \ + php -m | grep -q 'zookeeper'; \ + fi + ########################################################################### # New Relic for PHP: ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index f5b2048d..fe662983 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1600,6 +1600,32 @@ RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \ ;fi \ ;fi +########################################################################### +# zookeeper +########################################################################### +ARG INSTALL_ZOOKEEPER=false + +RUN set -eux; \ + if [ ${INSTALL_ZOOKEEPER} = true ]; then \ + apt install -yqq libzookeeper-mt-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + curl -L -o /tmp/php-zookeeper.tar.gz https://github.com/php-zookeeper/php-zookeeper/archive/master.tar.gz; \ + mkdir -p /tmp/php-zookeeper; \ + tar -C /tmp/php-zookeeper -zxvf /tmp/php-zookeeper.tar.gz --strip 1; \ + cd /tmp/php-zookeeper; \ + phpize && ./configure && make && make install;\ + else \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install zookeeper-0.5.0; \ + else \ + pecl install zookeeper-0.7.2; \ + fi; \ + fi; \ + echo "extension=zookeeper.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/zookeeper.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/zookeeper.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-zookeeper.ini; \ + php -m | grep -q 'zookeeper'; \ + fi + # #-------------------------------------------------------------------------- # Final Touch From 11cbf7eceea7999981e7ed66f1e991f8c4e42ff4 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Mon, 5 Apr 2021 20:51:02 +0800 Subject: [PATCH 183/372] supply gnupg extensino enable --- php-fpm/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index c77d7a65..4a8b3ad2 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -111,7 +111,9 @@ RUN if [ ${INSTALL_GNUPG} = true ]; then \ else \ pecl install gnupg; \ fi; \ - fi + fi; \ + docker-php-ext-enable gnupg; \ + php -m | grep -q 'gnupg' ########################################################################### # SSH2: From 6344497754ac7727982ba62397c05e4eb9ddb827 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Mon, 5 Apr 2021 20:53:52 +0800 Subject: [PATCH 184/372] update github ci enable scope --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index fc8e5b0b..68bc0b7d 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,7 +23,7 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env - sed -i -- '99,274s/=false/=true/g' .env + sed -i -- '99,278s/=false/=true/g' .env sed -i -- 's/GNUPG=false/GNUPG=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env From aa7a0e9a34bb2ad99b0d7fe1c6b16d1fba9bf448 Mon Sep 17 00:00:00 2001 From: Saqib S Date: Mon, 5 Apr 2021 18:26:49 +0500 Subject: [PATCH 185/372] Added ARG INSTALL_MEMCACHED as suggested by Allen. --- workspace/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index cceb0c57..7c9d11cc 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1225,7 +1225,9 @@ RUN if [ ${INSTALL_TERRAFORM} = true ]; then \ # Memcached Dependecies: ########################################################################### -RUN if [ ${WORKSPACE_INSTALL_MEMCACHED} = true ]; then \ +ARG INSTALL_MEMCACHED=false + +RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ apt-get -y install php${LARADOCK_PHP_VERSION}-igbinary \ && apt-get -y install php${LARADOCK_PHP_VERSION}-memcached \ ;fi From 28572f93ff7b6a584b47512f4f3c1be4e77d8fef Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 6 Apr 2021 09:57:55 +0800 Subject: [PATCH 186/372] gnupg: fix typo --- php-fpm/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 4a8b3ad2..72f720dd 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -111,9 +111,9 @@ RUN if [ ${INSTALL_GNUPG} = true ]; then \ else \ pecl install gnupg; \ fi; \ - fi; \ - docker-php-ext-enable gnupg; \ - php -m | grep -q 'gnupg' + docker-php-ext-enable gnupg; \ + php -m | grep -q 'gnupg'; \ + fi ########################################################################### # SSH2: From b03547dbbeef13b4b64f54698cf9e1f86038aa62 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 6 Apr 2021 20:52:26 +0800 Subject: [PATCH 187/372] fix: php-worker extension install --- .github/workflows/main-ci.yml | 4 ++-- php-worker/Dockerfile | 37 +++++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 68bc0b7d..70c53dc5 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,9 +23,9 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | cp env-example .env - sed -i -- '99,278s/=false/=true/g' .env - sed -i -- 's/GNUPG=false/GNUPG=true/g' .env + sed -i -- '99,313s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + sed -i -- 's/GNUPG=false/GNUPG=true/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 9c2a60a1..33ed8614 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -79,9 +79,13 @@ RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ #Install GD package: ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ - apk add --update --no-cache freetype-dev libjpeg-turbo-dev jpeg-dev libpng-dev; \ - docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/ && \ - docker-php-ext-install gd \ + apk add --update --no-cache freetype-dev libjpeg-turbo-dev jpeg-dev libpng-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ]; then \ + docker-php-ext-configure gd --with-freetype --with-jpeg --with-png; \ + else \ + docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/; \ + fi; \ + docker-php-ext-install gd \ ;fi #Install ImageMagick: @@ -324,9 +328,13 @@ RUN if [ $INSTALL_GHOSTSCRIPT = true ]; then \ 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 \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + printf "\n" | pecl install -o -f redis-4.3.0; \ + else \ + printf "\n" | pecl install -o -f redis; \ + fi; \ + rm -rf /tmp/pear; \ + docker-php-ext-enable redis \ ;fi ########################################################################### @@ -360,8 +368,11 @@ RUN if [ ${INSTALL_TAINT} = true ]; then \ # Install Php TAINT Extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ pecl install taint; \ - fi && \ - docker-php-ext-enable taint \ + docker-php-ext-enable taint; \ + php -m | grep -q 'taint'; \ + else \ + echo 'taint not Support'; \ + fi \ ;fi ########################################################################### @@ -383,8 +394,14 @@ RUN if [ ${INSTALL_IMAP} = true ]; then \ ARG INSTALL_XMLRPC=false RUN if [ ${INSTALL_XMLRPC} = true ]; then \ - docker-php-ext-install xmlrpc \ -;fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install xmlrpc-1.0.0RC2; \ + docker-php-ext-enable xmlrpc; \ + else \ + docker-php-ext-install xmlrpc; \ + fi; \ + php -m | grep -r 'xmlrpc'; \ + fi # #-------------------------------------------------------------------------- From 99cc94628c02baec4ff254546c34b9a851ed2968 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 6 Apr 2021 23:23:37 +0800 Subject: [PATCH 188/372] fix: alpine ssl conflict --- php-worker/Dockerfile | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 33ed8614..3a02f9ea 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -32,15 +32,17 @@ RUN apk --update add wget \ cyrus-sasl-dev \ libgsasl-dev \ oniguruma-dev \ - openssl \ - openssl-dev \ + libressl \ + libressl-dev \ supervisor -RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl +RUN pecl channel-update pecl.php.net; \ + docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl + RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl channel-update pecl.php.net && pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ + pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ ;else \ - pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ + pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ ;fi # Add a non-root user: @@ -96,7 +98,6 @@ RUN set -eux; \ if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ apk add --update --no-cache imagemagick-dev; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - apk add --update --no-cache git && \ cd /tmp && \ if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ git clone https://github.com/Imagick/imagick; \ @@ -251,7 +252,6 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ - apk del -q openssl openssl-dev && \ apk --update add -q rabbitmq-c rabbitmq-c-dev && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ printf "\n" | pecl install amqp-1.11.0beta; \ @@ -260,7 +260,6 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \ fi && \ docker-php-ext-enable amqp && \ apk del -q rabbitmq-c-dev && \ - apk add --update -q openssl openssl-dev && \ docker-php-ext-install sockets \ ;fi @@ -382,7 +381,7 @@ RUN if [ ${INSTALL_TAINT} = true ]; then \ ARG INSTALL_IMAP=false RUN if [ ${INSTALL_IMAP} = true ]; then \ - apk add --update imap-dev openssl-dev && \ + apk add --update imap-dev && \ docker-php-ext-configure imap --with-imap --with-imap-ssl && \ docker-php-ext-install imap \ ;fi From 2a1e534735aba0e7c5cc84702c9e8da610152e4f Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 12:28:42 +0800 Subject: [PATCH 189/372] after ci build show php extension list --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 70c53dc5..8fbad72c 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -37,6 +37,7 @@ jobs: sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env docker-compose build ${{ matrix.service }} + docker-compose run --rm --no-deps -- ${{ matrix.service }} php -m build-other: runs-on: ubuntu-latest From 8142ead2a07549b27c1e0243cf7c87b61f728cd1 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 13:11:25 +0800 Subject: [PATCH 190/372] Update main-ci.yml --- .github/workflows/main-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8fbad72c..857da2b9 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -22,6 +22,7 @@ jobs: env: PHP_VERSION: ${{ matrix.php_version }} run: | + set -eux; cp env-example .env sed -i -- '99,313s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env @@ -37,7 +38,9 @@ jobs: sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env docker-compose build ${{ matrix.service }} - docker-compose run --rm --no-deps -- ${{ matrix.service }} php -m + docker-compose up -d --no-deps -- ${{ matrix.service }} + docker-compose exec -- ${{ matrix.service }} php -m + docker-compose down build-other: runs-on: ubuntu-latest From 6897941396c5129a2d90e9b0e90edf5c1949cc54 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 13:12:14 +0800 Subject: [PATCH 191/372] Update main-ci.yml --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 857da2b9..72839295 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -22,7 +22,7 @@ jobs: env: PHP_VERSION: ${{ matrix.php_version }} run: | - set -eux; + set -eux cp env-example .env sed -i -- '99,313s/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env From dc34704a93f792ec33b640d30e122e5a2a6f304c Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 13:42:28 +0800 Subject: [PATCH 192/372] Update main-ci.yml --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 72839295..026c3f25 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -39,7 +39,7 @@ jobs: sed -i -- 's/V8JS=true/V8JS=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} - docker-compose exec -- ${{ matrix.service }} php -m + docker-compose exec -T -- ${{ matrix.service }} php -m docker-compose down build-other: From dc8a3beb4aac51be049531768e325ed247b21edb Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 13:51:29 +0800 Subject: [PATCH 193/372] Update main-ci.yml --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 026c3f25..2ce06e65 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -39,7 +39,7 @@ jobs: sed -i -- 's/V8JS=true/V8JS=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} - docker-compose exec -T -- ${{ matrix.service }} php -m + docker exec -it -- laradock_${{ matrix.service }}_1 php -m docker-compose down build-other: From 78e17707cb7d16b0b09764e3ad687a59b1ab8c11 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 14:10:12 +0800 Subject: [PATCH 194/372] Update main-ci.yml --- .github/workflows/main-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 2ce06e65..026c3f25 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -39,7 +39,7 @@ jobs: sed -i -- 's/V8JS=true/V8JS=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} - docker exec -it -- laradock_${{ matrix.service }}_1 php -m + docker-compose exec -T -- ${{ matrix.service }} php -m docker-compose down build-other: From 0f3be74b7d73fe54cf6b148350320ab0bcfdcc55 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 18:44:36 +0800 Subject: [PATCH 195/372] travis ci enabel swoole, memcached --- travis-build.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/travis-build.sh b/travis-build.sh index 67a55c30..8b7509ab 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -22,8 +22,8 @@ if [ -n "${PHP_VERSION}" ]; then sed -i -- 's/PHALCON=true/PHALCON=false/g' .env sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env - sed -i -- 's/SWOOLE=true/SWOOLE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env + sed -i -- 's/OCI8=true/OCI8=false/g' .env if [ "${PHP_VERSION}" == "5.6" ]; then # Aerospike C Client SDK 4.0.7, Debian 9.6 is not supported # https://github.com/aerospike/aerospike-client-php5/issues/145 @@ -37,8 +37,6 @@ if [ -n "${PHP_VERSION}" ]; then sed -i -- 's/PHP_FPM_INSTALL_SSH2=true/PHP_FPM_INSTALL_SSH2=false/g' .env # xdebug extension does not yet support PHP 7.3. sed -i -- 's/PHP_FPM_INSTALL_XDEBUG=true/PHP_FPM_INSTALL_XDEBUG=false/g' .env - # memcached extension does not yet support PHP 7.3. - sed -i -- 's/PHP_FPM_INSTALL_MEMCACHED=true/PHP_FPM_INSTALL_MEMCACHED=false/g' .env fi sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env From d3546cc677e598e2938cb1ad430db46640c03ea4 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 18:45:47 +0800 Subject: [PATCH 196/372] remove duplicate sed command --- travis-build.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/travis-build.sh b/travis-build.sh index 8b7509ab..881956bd 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -39,8 +39,6 @@ if [ -n "${PHP_VERSION}" ]; then sed -i -- 's/PHP_FPM_INSTALL_XDEBUG=true/PHP_FPM_INSTALL_XDEBUG=false/g' .env fi - sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - cat .env docker-compose build ${BUILD_SERVICE} docker images From 326d697bd2e40d52794f8ec3678b7a9384593cdb Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 18:47:56 +0800 Subject: [PATCH 197/372] v8js disable at global --- travis-build.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/travis-build.sh b/travis-build.sh index 881956bd..c970a3b0 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -31,8 +31,6 @@ if [ -n "${PHP_VERSION}" ]; then sed -i -- 's/PHP_FPM_INSTALL_AEROSPIKE=true/PHP_FPM_INSTALL_AEROSPIKE=false/g' .env fi if [ "${PHP_VERSION}" == "7.3" ]; then - # V8JS extension does not yet support PHP 7.3. - sed -i -- 's/WORKSPACE_INSTALL_V8JS=true/WORKSPACE_INSTALL_V8JS=false/g' .env # This ssh2 extension does not yet support PHP 7.3. sed -i -- 's/PHP_FPM_INSTALL_SSH2=true/PHP_FPM_INSTALL_SSH2=false/g' .env # xdebug extension does not yet support PHP 7.3. From 9b626947aeb42bb85e23a7906a3965a9735bd55e Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 18:50:36 +0800 Subject: [PATCH 198/372] enable xdebug when php 7.3 --- travis-build.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/travis-build.sh b/travis-build.sh index c970a3b0..7d5cd711 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -33,8 +33,6 @@ if [ -n "${PHP_VERSION}" ]; then if [ "${PHP_VERSION}" == "7.3" ]; then # This ssh2 extension does not yet support PHP 7.3. sed -i -- 's/PHP_FPM_INSTALL_SSH2=true/PHP_FPM_INSTALL_SSH2=false/g' .env - # xdebug extension does not yet support PHP 7.3. - sed -i -- 's/PHP_FPM_INSTALL_XDEBUG=true/PHP_FPM_INSTALL_XDEBUG=false/g' .env fi cat .env From 360dfbe6ecc6977e024bd43a88e32222d10b989c Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 21:24:23 +0800 Subject: [PATCH 199/372] fix horizon build failed --- laravel-horizon/Dockerfile | 48 ++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 0d48203d..198d52f2 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -26,19 +26,24 @@ RUN apk --update add wget \ libmemcached-dev \ libmcrypt-dev \ libxml2-dev \ + pcre-dev \ zlib-dev \ autoconf \ cyrus-sasl-dev \ libgsasl-dev \ - supervisor \ oniguruma-dev \ + libressl \ + libressl-dev \ + supervisor \ procps -RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl +RUN pecl channel-update pecl.php.net; \ + docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl + RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl channel-update pecl.php.net && pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ + pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ ;else \ - pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ + pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ ;fi # Add a non-root user to help install ffmpeg: @@ -158,10 +163,14 @@ RUN set -eux; \ ARG INSTALL_PHPREDIS=false RUN if [ ${INSTALL_PHPREDIS} = true ]; then \ # Install Php Redis Extension - printf "\n" | pecl install -o -f redis \ - && rm -rf /tmp/pear \ - && docker-php-ext-enable redis \ -;fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + printf "\n" | pecl install -o -f redis-4.3.0; \ + else \ + printf "\n" | pecl install -o -f redis; \ + fi; \ + rm -rf /tmp/pear; \ + docker-php-ext-enable redis; \ +fi ARG INSTALL_FFMPEG=false RUN if [ ${INSTALL_FFMPEG} = true ]; then \ @@ -222,9 +231,14 @@ RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ # Install MongoDB drivers: ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ - pecl install mongodb \ - && docker-php-ext-enable mongodb \ - ;fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install mongo; \ + docker-php-ext-enable mongo; \ + else \ + pecl install mongodb; \ + docker-php-ext-enable mongodb; \ + fi; \ + fi ########################################################################### # YAML: extension @@ -235,16 +249,20 @@ ARG INSTALL_YAML=false RUN if [ ${INSTALL_YAML} = true ]; then \ apk --update add -U --no-cache --virtual temp yaml-dev \ && apk add --no-cache yaml \ - && docker-php-source extract \ - && pecl channel-update pecl.php.net \ - && pecl install yaml \ + && docker-php-source extract; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install yaml-1.3.2; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + pecl install yaml-2.0.4; \ + else \ + pecl install yaml; \ + fi \ && docker-php-ext-enable yaml \ && pecl clear-cache \ && docker-php-source delete \ && apk del temp \ ;fi - ########################################################################### # PHP Memcached: ########################################################################### From 07cd057cec7a59592406d1a8722915a886c08baa Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 21:27:03 +0800 Subject: [PATCH 200/372] extract duplicate command --- laravel-horizon/Dockerfile | 9 +++++---- php-worker/Dockerfile | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 198d52f2..487366a5 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -41,10 +41,11 @@ RUN pecl channel-update pecl.php.net; \ docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ -;else \ - pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ -;fi + pecl install memcached-2.2.0 mcrypt-1.0.1; \ + else \ + pecl install memcached mcrypt-1.0.1; \ + fi; \ + docker-php-ext-enable memcached # Add a non-root user to help install ffmpeg: ARG PUID=1000 diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 3a02f9ea..1514c37d 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -40,10 +40,11 @@ RUN pecl channel-update pecl.php.net; \ docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install memcached-2.2.0 mcrypt-1.0.1 && docker-php-ext-enable memcached \ -;else \ - pecl install memcached mcrypt-1.0.1 && docker-php-ext-enable memcached \ -;fi + pecl install memcached-2.2.0 mcrypt-1.0.1; \ + else \ + pecl install memcached mcrypt-1.0.1; \ + fi; \ + docker-php-ext-enable memcached # Add a non-root user: ARG PUID=1000 From 032776f575ee33e1c9e71677be97176497280421 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 23:19:18 +0800 Subject: [PATCH 201/372] ci update .env step 1 set all true --- .github/workflows/main-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 026c3f25..fd2f6c79 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -24,9 +24,8 @@ jobs: run: | set -eux cp env-example .env - sed -i -- '99,313s/=false/=true/g' .env + sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - sed -i -- 's/GNUPG=false/GNUPG=true/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env From f196023a03a826d0480f774e291534ef85a90e59 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 23:21:47 +0800 Subject: [PATCH 202/372] adjust step order --- laravel-horizon/Dockerfile | 15 +++++++-------- php-worker/Dockerfile | 13 +++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 487366a5..142f4b87 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -92,13 +92,6 @@ RUN if [ ${INSTALL_GD} = true ]; then \ docker-php-ext-install gd \ ;fi -#Install GMP package: -ARG INSTALL_GMP=false -RUN if [ ${INSTALL_GMP} = true ]; then \ - apk add --update --no-cache gmp gmp-dev; \ - docker-php-ext-install gmp \ -;fi - #Install ImageMagick package: ARG INSTALL_IMAGEMAGICK=false ARG IMAGEMAGICK_VERSION=latest @@ -107,7 +100,6 @@ RUN set -eux; \ if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ apk add --update --no-cache imagemagick-dev; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - apk add --update --no-cache git && \ cd /tmp && \ if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ git clone https://github.com/Imagick/imagick; \ @@ -127,6 +119,13 @@ RUN set -eux; \ php -m | grep -q 'imagick'; \ fi +#Install GMP package: +ARG INSTALL_GMP=false +RUN if [ ${INSTALL_GMP} = true ]; then \ + apk add --update --no-cache gmp gmp-dev; \ + docker-php-ext-install gmp \ +;fi + #Install BCMath package: ARG INSTALL_BCMATH=false RUN if [ ${INSTALL_BCMATH} = true ]; then \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 1514c37d..de633af6 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -36,6 +36,7 @@ RUN apk --update add wget \ libressl-dev \ supervisor + RUN pecl channel-update pecl.php.net; \ docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl @@ -125,6 +126,12 @@ RUN if [ ${INSTALL_GMP} = true ]; then \ && docker-php-ext-install gmp \ ;fi +#Install BCMath package: +ARG INSTALL_BCMATH=false +RUN if [ ${INSTALL_BCMATH} = true ]; then \ + docker-php-ext-install bcmath \ +;fi + #Install SOAP package: ARG INSTALL_SOAP=false RUN if [ ${INSTALL_SOAP} = true ]; then \ @@ -143,12 +150,6 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ fi; \ fi -#Install BCMath package: -ARG INSTALL_BCMATH=false -RUN if [ ${INSTALL_BCMATH} = true ]; then \ - docker-php-ext-install bcmath \ -;fi - ########################################################################### # PHP OCI8: ########################################################################### From 0fce9c8d38ad66684749667a642e8d03593066a6 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 7 Apr 2021 23:33:15 +0800 Subject: [PATCH 203/372] upgrade ipython base image version --- ipython/Dockerfile.controller | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipython/Dockerfile.controller b/ipython/Dockerfile.controller index d325c6f8..2993d5f8 100644 --- a/ipython/Dockerfile.controller +++ b/ipython/Dockerfile.controller @@ -1,4 +1,4 @@ -FROM python:3.5-alpine +FROM python:3.8-alpine LABEL maintainer="ahkui " From 397babfbfb61649a49ad5d3ad31d5bd00e60e2f9 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Fri, 9 Apr 2021 18:38:58 +0800 Subject: [PATCH 204/372] imagemagick supported formats --- laravel-horizon/Dockerfile | 2 +- php-worker/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 142f4b87..bdee4c3a 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -98,7 +98,7 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN set -eux; \ if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apk add --update --no-cache imagemagick-dev; \ + apk add --update --no-cache imagemagick-dev imagemagick; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ cd /tmp && \ if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index de633af6..f0ca0a96 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -98,7 +98,7 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN set -eux; \ if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apk add --update --no-cache imagemagick-dev; \ + apk add --update --no-cache imagemagick-dev imagemagick; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ cd /tmp && \ if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ From e7db566eee65891ea63551c05e8de0a50aa77e50 Mon Sep 17 00:00:00 2001 From: aiden Date: Mon, 15 Mar 2021 21:12:37 +1100 Subject: [PATCH 205/372] Renamed env-example to .env.example for conformity and IDE-compatibility; added PHP version 8.0 in the example values --- env-example => .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename env-example => .env.example (99%) diff --git a/env-example b/.env.example similarity index 99% rename from env-example rename to .env.example index 9ae14fc2..c3055bab 100644 --- a/env-example +++ b/.env.example @@ -38,7 +38,7 @@ 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.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 +# Accepted values: 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 PHP_VERSION=7.3 ### Phalcon Version ########################################### From 844bd3d5d97bf6b0ac511d4da7d6695cd5f06d4f Mon Sep 17 00:00:00 2001 From: aiden Date: Tue, 23 Mar 2021 17:49:15 +1100 Subject: [PATCH 206/372] Resolved conflicts with the latest version --- .github/workflows/main-ci.yml | 4 ++-- .vscode/settings.json | 2 +- DOCUMENTATION/content/contributing/index.md | 2 +- DOCUMENTATION/content/getting-started/index.md | 6 +++--- DOCUMENTATION/content/introduction/index.md | 4 ++-- README-zh.md | 2 +- travis-build.sh | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index fd2f6c79..b05020fd 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -23,7 +23,7 @@ jobs: PHP_VERSION: ${{ matrix.php_version }} run: | set -eux - cp env-example .env + cp .env.example .env sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env @@ -51,7 +51,7 @@ jobs: - uses: actions/checkout@v2 - name: Build the Docker image run: | - cp env-example .env + cp .env.example .env sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env docker-compose build ${{ matrix.service }} diff --git a/.vscode/settings.json b/.vscode/settings.json index 1166680a..3f259ad1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "files.associations": { - "env-example": "dotenv", + ".env.example": "dotenv", "Dockerfile-*": "dockerfile" } } diff --git a/DOCUMENTATION/content/contributing/index.md b/DOCUMENTATION/content/contributing/index.md index 4a39b2de..b2d05d61 100644 --- a/DOCUMENTATION/content/contributing/index.md +++ b/DOCUMENTATION/content/contributing/index.md @@ -81,7 +81,7 @@ To update the sidebar or add a new section to it, you can edit this `DOCUMENTATI * Make sure you follow the same code/comments style. -* Add the environment variables to the `env-example` if you have any. +* Add the environment variables to the `.env.example` if you have any. * **MOST IMPORTANTLY** update the `Documentation`, add as much information. diff --git a/DOCUMENTATION/content/getting-started/index.md b/DOCUMENTATION/content/getting-started/index.md index 1278d65b..12ec826a 100644 --- a/DOCUMENTATION/content/getting-started/index.md +++ b/DOCUMENTATION/content/getting-started/index.md @@ -75,7 +75,7 @@ Your folder structure should look like this: We'll need to do step 1 of the [Usage](#Usage) section now to make this happen. ``` -cp env-example .env +cp .env.example .env ``` At the top, change the `APP_CODE_PATH_HOST` variable to your project path. @@ -155,10 +155,10 @@ We recommend using a Docker version which is newer than 1.13.
-1 - Enter the laradock folder and copy `env-example` to `.env` +1 - Enter the laradock folder and copy `.env.example` to `.env` ```shell -cp env-example .env +cp .env.example .env ``` You can edit the `.env` file to choose which software's you want to be installed in your environment. You can always refer to the `docker-compose.yml` file to see how those variables are being used. diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index d53cca8f..6c886567 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -46,10 +46,10 @@ Let's see how easy it is to setup our demo stack `PHP`, `NGINX`, `MySQL`, `Redis git clone https://github.com/Laradock/laradock.git ``` -2 - Enter the laradock folder and rename `env-example` to `.env`. +2 - Enter the laradock folder and rename `.env.example` to `.env`. ```shell -cp env-example .env +cp .env.example .env ``` 3 - Run your containers: diff --git a/README-zh.md b/README-zh.md index e50794b7..6055f2df 100644 --- a/README-zh.md +++ b/README-zh.md @@ -70,7 +70,7 @@ git clone https://github.com/laradock/laradock.git 2. 进入 Laradock 目录 ```bash -cp env-example .env +cp .env.example .env ``` 3. 运行这些容器。 diff --git a/travis-build.sh b/travis-build.sh index 7d5cd711..b86105d2 100755 --- a/travis-build.sh +++ b/travis-build.sh @@ -11,7 +11,7 @@ env | sort #### Build the Docker Images if [ -n "${PHP_VERSION}" ]; then - cp env-example .env + cp .env.example .env sed -i -- "s/PHP_VERSION=.*/PHP_VERSION=${PHP_VERSION}/g" .env sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env From 9597c089617af19e98735ad89776667b1cd0c0d7 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 15 Apr 2021 14:16:50 +0800 Subject: [PATCH 207/372] Don't trigger on schedule event when in a fork --- .github/workflows/main-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index fd2f6c79..f36c43ed 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -10,6 +10,8 @@ on: jobs: build-php: + # Don't trigger on schedule event when in a fork + if: github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository == 'laradock/laradock') runs-on: ubuntu-latest strategy: fail-fast: false @@ -42,6 +44,8 @@ jobs: docker-compose down build-other: + # Don't trigger on schedule event when in a fork + if: github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository == 'laradock/laradock') runs-on: ubuntu-latest strategy: fail-fast: false From f1bcc81ec6d11af791384b52305c46b1c69ce2be Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 17 Apr 2021 01:03:40 +0800 Subject: [PATCH 208/372] fix horizon memcached --- laravel-horizon/Dockerfile | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index bdee4c3a..a0903d6f 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -23,7 +23,6 @@ RUN apk --update add wget \ curl \ git \ build-base \ - libmemcached-dev \ libmcrypt-dev \ libxml2-dev \ pcre-dev \ @@ -40,13 +39,6 @@ RUN apk --update add wget \ RUN pecl channel-update pecl.php.net; \ docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl -RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install memcached-2.2.0 mcrypt-1.0.1; \ - else \ - pecl install memcached mcrypt-1.0.1; \ - fi; \ - docker-php-ext-enable memcached - # Add a non-root user to help install ffmpeg: ARG PUID=1000 ENV PUID ${PUID} @@ -270,25 +262,20 @@ RUN if [ ${INSTALL_YAML} = true ]; then \ ARG INSTALL_MEMCACHED=false RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ + apk --update add libmemcached-dev; \ # 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/v3.1.4.tar.gz"; \ - 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 + pecl install memcached; \ + fi; \ + docker-php-ext-enable memcached; \ + php -m | grep -r 'memcached'; \ +fi + +#-------------------------------------------------------------------------- +# Clean up +#-------------------------------------------------------------------------- RUN rm /var/cache/apk/* \ && mkdir -p /var/www From ddcf0b08daf1a077e2339bb82e6863983dcbddae Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 17 Apr 2021 01:08:33 +0800 Subject: [PATCH 209/372] php-worker support memcached extension --- .env.example | 1 + docker-compose.yml | 1 + php-worker/Dockerfile | 26 ++++++++++++++++++-------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index c3055bab..1d66fa42 100644 --- a/.env.example +++ b/.env.example @@ -288,6 +288,7 @@ PHP_WORKER_INSTALL_GNUPG=false PHP_WORKER_INSTALL_PGSQL=false PHP_WORKER_INSTALL_MONGO=false PHP_WORKER_INSTALL_BCMATH=false +PHP_WORKER_INSTALL_MEMCACHED=false # PHP_WORKER_INSTALL_OCI8 Does not work in php5.6 version PHP_WORKER_INSTALL_OCI8=false PHP_WORKER_INSTALL_PHALCON=false diff --git a/docker-compose.yml b/docker-compose.yml index 86202e64..f162cbdd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -318,6 +318,7 @@ services: - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} - INSTALL_MONGO=${PHP_WORKER_INSTALL_MONGO} - INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH} + - INSTALL_MEMCACHED=${PHP_WORKER_INSTALL_MEMCACHED} - INSTALL_OCI8=${PHP_WORKER_INSTALL_OCI8} - INSTALL_PHALCON=${PHP_WORKER_INSTALL_PHALCON} - INSTALL_SOAP=${PHP_WORKER_INSTALL_SOAP} diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index f0ca0a96..9f4bfb23 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -23,7 +23,6 @@ RUN apk --update add wget \ curl \ git \ build-base \ - libmemcached-dev \ libmcrypt-dev \ libxml2-dev \ pcre-dev \ @@ -40,13 +39,6 @@ RUN apk --update add wget \ RUN pecl channel-update pecl.php.net; \ docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl -RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install memcached-2.2.0 mcrypt-1.0.1; \ - else \ - pecl install memcached mcrypt-1.0.1; \ - fi; \ - docker-php-ext-enable memcached - # Add a non-root user: ARG PUID=1000 ENV PUID ${PUID} @@ -404,6 +396,24 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \ php -m | grep -r 'xmlrpc'; \ fi +########################################################################### +# PHP Memcached: +########################################################################### + +ARG INSTALL_MEMCACHED=false + +RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ + apk --update add libmemcached-dev; \ + # Install the php memcached extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install memcached-2.2.0; \ + else \ + pecl install memcached; \ + fi; \ + docker-php-ext-enable memcached; \ + php -m | grep -r 'memcached'; \ +fi + # #-------------------------------------------------------------------------- # Optional Supervisord Configuration From 743942e1e14ec567fbd384123b000ef9bc64dbae Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 17 Apr 2021 16:20:05 +0800 Subject: [PATCH 210/372] php-fpm support enchant extension --- .env.example | 1 + docker-compose.yml | 1 + php-fpm/Dockerfile | 11 +++++++++++ 3 files changed, 13 insertions(+) diff --git a/.env.example b/.env.example index c3055bab..0d81d634 100644 --- a/.env.example +++ b/.env.example @@ -215,6 +215,7 @@ PHP_FPM_INSTALL_IMAGE_OPTIMIZERS=true PHP_FPM_INSTALL_PHPREDIS=true PHP_FPM_INSTALL_MEMCACHED=false PHP_FPM_INSTALL_BZ2=false +PHP_FPM_INSTALL_ENCHANT=false PHP_FPM_INSTALL_GMP=false PHP_FPM_INSTALL_GNUPG=false PHP_FPM_INSTALL_XDEBUG=false diff --git a/docker-compose.yml b/docker-compose.yml index 86202e64..2e7b0d4e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -209,6 +209,7 @@ services: - LARADOCK_PHP_VERSION=${PHP_VERSION} - LARADOCK_PHALCON_VERSION=${PHALCON_VERSION} - INSTALL_BZ2=${PHP_FPM_INSTALL_BZ2} + - INSTALL_ENCHANT=${PHP_FPM_INSTALL_ENCHANT} - INSTALL_GMP=${PHP_FPM_INSTALL_GMP} - INSTALL_GNUPG=${PHP_FPM_INSTALL_GNUPG} - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG} diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 72f720dd..65f8bfd7 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -83,6 +83,17 @@ RUN if [ ${INSTALL_BZ2} = true ]; then \ docker-php-ext-install bz2 \ ;fi +########################################################################### +# Enchant: +########################################################################### + +ARG INSTALL_ENCHANT=false +RUN if [ ${INSTALL_ENCHANT} = true ]; then \ + apt-get install -yqq libenchant-dev; \ + docker-php-ext-install enchant; \ + php -m | grep -oiE '^enchant$'; \ +fi + ########################################################################### # GMP (GNU Multiple Precision): ########################################################################### From b79d306004b29109463c458daddb2829fbf8be81 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 22 Apr 2021 23:34:17 +0800 Subject: [PATCH 211/372] feat(ldap extension): php-worker horizon #2956 --- .env.example | 2 ++ docker-compose.yml | 2 ++ laravel-horizon/Dockerfile | 8 ++++++++ php-worker/Dockerfile | 8 ++++++++ 4 files changed, 20 insertions(+) diff --git a/.env.example b/.env.example index 620b8c5d..5561ca10 100644 --- a/.env.example +++ b/.env.example @@ -286,6 +286,7 @@ PHP_WORKER_INSTALL_IMAGEMAGICK=false PHP_WORKER_IMAGEMAGICK_VERSION=latest PHP_WORKER_INSTALL_GMP=false PHP_WORKER_INSTALL_GNUPG=false +PHP_WORKER_INSTALL_LDAP=false PHP_WORKER_INSTALL_PGSQL=false PHP_WORKER_INSTALL_MONGO=false PHP_WORKER_INSTALL_BCMATH=false @@ -327,6 +328,7 @@ LARAVEL_HORIZON_INSTALL_BZ2=false LARAVEL_HORIZON_INSTALL_GD=false LARAVEL_HORIZON_INSTALL_GMP=false LARAVEL_HORIZON_INSTALL_GNUPG=false +LARAVEL_HORIZON_INSTALL_LDAP=false LARAVEL_HORIZON_INSTALL_IMAGEMAGICK=false LARAVEL_HORIZON_IMAGEMAGICK_VERSION=latest LARAVEL_HORIZON_INSTALL_SOCKETS=false diff --git a/docker-compose.yml b/docker-compose.yml index cbc23793..6c15b9a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -316,6 +316,7 @@ services: - INSTALL_IMAGEMAGICK=${PHP_WORKER_INSTALL_IMAGEMAGICK} - INSTALL_GMP=${PHP_WORKER_INSTALL_GMP} - INSTALL_GNUPG=${PHP_WORKER_INSTALL_GNUPG} + - INSTALL_LDAP=${PHP_WORKER_INSTALL_LDAP} - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} - INSTALL_MONGO=${PHP_WORKER_INSTALL_MONGO} - INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH} @@ -359,6 +360,7 @@ services: - INSTALL_GD=${LARAVEL_HORIZON_INSTALL_GD} - INSTALL_GMP=${LARAVEL_HORIZON_INSTALL_GMP} - INSTALL_GNUPG=${LARAVEL_HORIZON_INSTALL_GNUPG} + - INSTALL_LDAP=${LARAVEL_HORIZON_INSTALL_LDAP} - INSTALL_IMAGEMAGICK=${LARAVEL_HORIZON_INSTALL_IMAGEMAGICK} - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL} - INSTALL_ZIP_ARCHIVE=${LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE} diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index a0903d6f..8823a020 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -72,6 +72,14 @@ RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ docker-php-ext-enable gnupg; \ fi +#Install LDAP +ARG INSTALL_LDAP=false; +RUN set -eux; if [ ${INSTALL_LDAP} = true ]; then \ + apk add --no-cache --no-progress openldap-dev; \ + docker-php-ext-install ldap; \ + php -m | grep -oiE '^ldap$'; \ + fi + #Install GD package: ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 9f4bfb23..b901770b 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -72,6 +72,14 @@ RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ docker-php-ext-enable gnupg; \ fi +#Install LDAP +ARG INSTALL_LDAP=false; +RUN set -eux; if [ ${INSTALL_LDAP} = true ]; then \ + apk add --no-cache --no-progress openldap-dev; \ + docker-php-ext-install ldap; \ + php -m | grep -oiE '^ldap$'; \ + fi + #Install GD package: ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ From 78e0d4d54c6857a6a93750038e1267495001f344 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sun, 25 Apr 2021 23:48:10 +0800 Subject: [PATCH 212/372] fix amqp build faild #2959 --- php-fpm/Dockerfile | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 65f8bfd7..fc0526e7 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -410,32 +410,19 @@ RUN set -eux; \ ARG INSTALL_AMQP=false -RUN if [ ${INSTALL_AMQP} = true ]; then \ - # download and install manually, to make sure it's compatible with ampq installed by pecl later - # install cmake first - apt-get -yqq install cmake && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ] || [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ - curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/v0.11.0.tar.gz; \ - else \ - curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz; \ - fi && \ - mkdir -p rabbitmq-c && \ - tar -C rabbitmq-c -zxvf /tmp/rabbitmq-c.tar.gz --strip 1 && \ - cd rabbitmq-c/ && \ - mkdir _build && cd _build/ && \ - cmake .. && \ - cmake --build . --target install && \ - # Install the amqp extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - printf "\n" | pecl install amqp-1.11.0beta; \ - else \ - printf "\n" | pecl install amqp; \ - fi && \ - docker-php-ext-enable amqp && \ - # Install the sockets extension - docker-php-ext-install sockets && \ - php -m | grep -q 'sockets' \ -;fi +RUN set -eux; \ + if [ ${INSTALL_AMQP} = true ]; then \ + # # Install the amqp extension + apt-get update; \ + apt-get -yqq install librabbitmq-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install amqp-1.11.0beta; \ + else \ + pecl install amqp; \ + fi; \ + docker-php-ext-enable amqp; \ + php -m | grep -oiE '^amqp$'; \ + fi ########################################################################### # CASSANDRA: From f49b0cbc3a8e56858f33b09e5d90c71ccdcd990e Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sun, 25 Apr 2021 23:49:07 +0800 Subject: [PATCH 213/372] clean up --- php-fpm/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index fc0526e7..8e764285 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -413,7 +413,6 @@ ARG INSTALL_AMQP=false RUN set -eux; \ if [ ${INSTALL_AMQP} = true ]; then \ # # Install the amqp extension - apt-get update; \ apt-get -yqq install librabbitmq-dev; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ pecl install amqp-1.11.0beta; \ From e95bfd835e4d8e1094e4f0a3458f9b4e16ca898e Mon Sep 17 00:00:00 2001 From: Ryan <1042107393@qq.com> Date: Mon, 26 Apr 2021 11:26:40 +0800 Subject: [PATCH 214/372] Update docker-compose.yml --- docker-compose.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 6c15b9a4..f0d828ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1950,3 +1950,30 @@ services: volumes: - ./react:/usr/src/app/react - /usr/src/app/react/node_modules + +### kafka #################################################### + kafka: + image: wurstmeister/kafka + ports: + - "9092:9092" + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 + KAFKA_MESSAGE_MAX_BYTES: 2000000 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + volumes: + - ${DATA_PATH_HOST}/kafka:/kafka + - /var/run/docker.sock:/var/run/docker.sock + networks: + - backend + +### kafka-manager ########################################### + kafka-manager: + image: sheepkiller/kafka-manager + ports: + - 9020:9000 + environment: + ZK_HOSTS: zookeeper:2181 + networks: + - backend From 6a4d93ee2f6b1f03cffb8bcc1ff2e4ba9b856656 Mon Sep 17 00:00:00 2001 From: Leonardo Medici Date: Sat, 1 May 2021 11:25:54 +0200 Subject: [PATCH 215/372] Fix PostgreSQL initialization scripts permissions --- postgres/docker-entrypoint-initdb.d/createdb.sh.example | 0 postgres/docker-entrypoint-initdb.d/init_confluence_db.sh | 0 postgres/docker-entrypoint-initdb.d/init_gitlab_db.sh | 0 postgres/docker-entrypoint-initdb.d/init_jupyterhub_db.sh | 0 postgres/docker-entrypoint-initdb.d/init_sonarqube_db.sh | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 postgres/docker-entrypoint-initdb.d/createdb.sh.example mode change 100644 => 100755 postgres/docker-entrypoint-initdb.d/init_confluence_db.sh mode change 100644 => 100755 postgres/docker-entrypoint-initdb.d/init_gitlab_db.sh mode change 100644 => 100755 postgres/docker-entrypoint-initdb.d/init_jupyterhub_db.sh mode change 100644 => 100755 postgres/docker-entrypoint-initdb.d/init_sonarqube_db.sh diff --git a/postgres/docker-entrypoint-initdb.d/createdb.sh.example b/postgres/docker-entrypoint-initdb.d/createdb.sh.example old mode 100644 new mode 100755 diff --git a/postgres/docker-entrypoint-initdb.d/init_confluence_db.sh b/postgres/docker-entrypoint-initdb.d/init_confluence_db.sh old mode 100644 new mode 100755 diff --git a/postgres/docker-entrypoint-initdb.d/init_gitlab_db.sh b/postgres/docker-entrypoint-initdb.d/init_gitlab_db.sh old mode 100644 new mode 100755 diff --git a/postgres/docker-entrypoint-initdb.d/init_jupyterhub_db.sh b/postgres/docker-entrypoint-initdb.d/init_jupyterhub_db.sh old mode 100644 new mode 100755 diff --git a/postgres/docker-entrypoint-initdb.d/init_sonarqube_db.sh b/postgres/docker-entrypoint-initdb.d/init_sonarqube_db.sh old mode 100644 new mode 100755 From c548447d9a68b6462d30fa31fac48db1d72e8b40 Mon Sep 17 00:00:00 2001 From: Marcelo Garbin Date: Tue, 4 May 2021 08:55:20 -0300 Subject: [PATCH 216/372] removed gitkeep from apache2/ssl and duplication APACHE_SSL_PATH --- .env.example | 1 - apache2/ssl/.gitkeep | 0 2 files changed, 1 deletion(-) delete mode 100644 apache2/ssl/.gitkeep diff --git a/.env.example b/.env.example index 5561ca10..04354135 100644 --- a/.env.example +++ b/.env.example @@ -348,7 +348,6 @@ APACHE_HOST_HTTP_PORT=80 APACHE_HOST_HTTPS_PORT=443 APACHE_HOST_LOG_PATH=./logs/apache2 APACHE_SITES_PATH=./apache2/sites -APACHE_SSL_PATH=./apache2/ssl APACHE_PHP_UPSTREAM_CONTAINER=php-fpm APACHE_PHP_UPSTREAM_PORT=9000 APACHE_PHP_UPSTREAM_TIMEOUT=60 diff --git a/apache2/ssl/.gitkeep b/apache2/ssl/.gitkeep deleted file mode 100644 index e69de29b..00000000 From a98cc18a74b613e2090019c804251db788b84f49 Mon Sep 17 00:00:00 2001 From: zhangxuejiang Date: Fri, 14 May 2021 17:39:35 +0800 Subject: [PATCH 217/372] elk change to docker official repository --- elasticsearch/Dockerfile | 2 +- kibana/Dockerfile | 2 +- logstash/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/elasticsearch/Dockerfile b/elasticsearch/Dockerfile index 2ed98015..a0e269bb 100644 --- a/elasticsearch/Dockerfile +++ b/elasticsearch/Dockerfile @@ -1,4 +1,4 @@ ARG ELK_VERSION -FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION} +FROM elasticsearch:${ELK_VERSION} EXPOSE 9200 9300 diff --git a/kibana/Dockerfile b/kibana/Dockerfile index adce23cb..7fdd7cb5 100644 --- a/kibana/Dockerfile +++ b/kibana/Dockerfile @@ -1,4 +1,4 @@ ARG ELK_VERSION -FROM docker.elastic.co/kibana/kibana:${ELK_VERSION} +FROM kibana:${ELK_VERSION} EXPOSE 5601 diff --git a/logstash/Dockerfile b/logstash/Dockerfile index cc862b21..92564bf2 100644 --- a/logstash/Dockerfile +++ b/logstash/Dockerfile @@ -1,5 +1,5 @@ ARG ELK_VERSION -FROM docker.elastic.co/logstash/logstash:${ELK_VERSION} +FROM logstash:${ELK_VERSION} USER root RUN rm -f /usr/share/logstash/pipeline/logstash.conf From e138f03d50e5de366dc5d907dad0aa27b4b43800 Mon Sep 17 00:00:00 2001 From: Mics Date: Thu, 20 May 2021 18:16:42 +0800 Subject: [PATCH 218/372] fix build workspace error when WORKSPACE_INSTALL_MSSQL=true --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 3532bf57..607f1d6f 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1046,7 +1046,7 @@ RUN set -eux; \ # https://github.com/Microsoft/msphpsql/wiki/Install-and-configuration ########################################################################### curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ + curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ apt-get update -yqq && \ ACCEPT_EULA=Y apt-get install -yqq msodbcsql17 mssql-tools unixodbc unixodbc-dev libgss3 odbcinst locales && \ ln -sfn /opt/mssql-tools/bin/sqlcmd /usr/bin/sqlcmd && \ From f031ded6ddf36028cf85fffb5c39fb8373f8b635 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 21 May 2021 17:40:47 +0200 Subject: [PATCH 219/372] update sponsors logos --- .github/home-page-images/custom-sponsors/AU.png | Bin 0 -> 11374 bytes .github/home-page-images/custom-sponsors/CA.png | Bin 0 -> 8507 bytes .../home-page-images/custom-sponsors/PLD.png | Bin 0 -> 8755 bytes DOCUMENTATION/content/introduction/index.md | 9 ++++++--- README.md | 9 ++++++--- 5 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 .github/home-page-images/custom-sponsors/AU.png create mode 100644 .github/home-page-images/custom-sponsors/CA.png create mode 100644 .github/home-page-images/custom-sponsors/PLD.png diff --git a/.github/home-page-images/custom-sponsors/AU.png b/.github/home-page-images/custom-sponsors/AU.png new file mode 100644 index 0000000000000000000000000000000000000000..b95697de04f3abde6b1f7f0797d6c5cbcee27933 GIT binary patch literal 11374 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 literal 0 HcmV?d00001 diff --git a/.github/home-page-images/custom-sponsors/CA.png b/.github/home-page-images/custom-sponsors/CA.png new file mode 100644 index 0000000000000000000000000000000000000000..d0506fdee835188a417d467b3abb96213b76ece0 GIT binary patch literal 8507 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 literal 0 HcmV?d00001 diff --git a/.github/home-page-images/custom-sponsors/PLD.png b/.github/home-page-images/custom-sponsors/PLD.png new file mode 100644 index 0000000000000000000000000000000000000000..f05dda2e02785884ffdf6f5be7c1110360ed6dc2 GIT binary patch literal 8755 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 QUm)+~rIn>>B}{_<2Z>$n*#H0l literal 0 HcmV?d00001 diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 6c886567..93219266 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -385,9 +385,12 @@ Sponsoring is an act of giving in a different fashion. 🌱

-CasinoPilotti -We thank bestonlinecasino.com for their support -Apiato Build PHP API's faster +KasynoHEX.com Polska +Online casino list in Canada by OnlineCasinoHEX.ca +Online pokies by AussieCasinoHEX.com +Apiato Build PHP API's faster +We thank bestonlinecasino.com for their support +CasinoPilotti diff --git a/README.md b/README.md index 5dc57f6d..d0d372b5 100644 --- a/README.md +++ b/README.md @@ -192,9 +192,12 @@ Sponsoring is an act of giving in a different fashion. 🌱

-CasinoPilotti -We thank bestonlinecasino.com for their support -Apiato Build PHP API's faster +KasynoHEX.com Polska +Online casino list in Canada by OnlineCasinoHEX.ca +Online pokies by AussieCasinoHEX.com +Apiato Build PHP API's faster +We thank bestonlinecasino.com for their support +CasinoPilotti From cc88f7b382c136d5e78a6ddea4c2b96e5cbbeabc Mon Sep 17 00:00:00 2001 From: ahkui Date: Mon, 24 May 2021 02:58:38 +0800 Subject: [PATCH 220/372] workspace - install pip from python script --- workspace/Dockerfile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 3532bf57..cf8fa0d7 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1124,7 +1124,10 @@ RUN if [ ${INSTALL_SYMFONY} = true ]; then \ ARG INSTALL_PYTHON=false RUN if [ ${INSTALL_PYTHON} = true ]; then \ - apt-get -y install python python-pip python-dev build-essential \ + apt-get -y install python python-dev build-essential \ + && curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py \ + && python get-pip.py \ + && rm get-pip.py \ && python -m pip install --upgrade pip \ && python -m pip install --upgrade virtualenv \ ;fi @@ -1136,7 +1139,10 @@ RUN if [ ${INSTALL_PYTHON} = true ]; then \ ARG INSTALL_PYTHON3=false RUN if [ ${INSTALL_PYTHON3} = true ]; then \ - apt-get -y install python3 python3-pip python3-dev build-essential \ + apt-get -y install python3 python3-dev build-essential \ + && curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ + && python3 get-pip.py \ + && rm get-pip.py \ && python3 -m pip install --upgrade --force-reinstall pip \ && python3 -m pip install --upgrade virtualenv \ ;fi From 5cf7449d4277f1eafdfb376afb902cd5494119bb Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Tue, 25 May 2021 20:33:23 +0200 Subject: [PATCH 221/372] update sponsors logos --- .github/home-page-images/custom-sponsors/AU.png | Bin 0 -> 11374 bytes .github/home-page-images/custom-sponsors/CA.png | Bin 0 -> 8507 bytes .../home-page-images/custom-sponsors/PLD.png | Bin 0 -> 8755 bytes DOCUMENTATION/content/introduction/index.md | 9 ++++++--- README.md | 9 ++++++--- 5 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 .github/home-page-images/custom-sponsors/AU.png create mode 100644 .github/home-page-images/custom-sponsors/CA.png create mode 100644 .github/home-page-images/custom-sponsors/PLD.png diff --git a/.github/home-page-images/custom-sponsors/AU.png b/.github/home-page-images/custom-sponsors/AU.png new file mode 100644 index 0000000000000000000000000000000000000000..b95697de04f3abde6b1f7f0797d6c5cbcee27933 GIT binary patch literal 11374 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 literal 0 HcmV?d00001 diff --git a/.github/home-page-images/custom-sponsors/CA.png b/.github/home-page-images/custom-sponsors/CA.png new file mode 100644 index 0000000000000000000000000000000000000000..d0506fdee835188a417d467b3abb96213b76ece0 GIT binary patch literal 8507 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 literal 0 HcmV?d00001 diff --git a/.github/home-page-images/custom-sponsors/PLD.png b/.github/home-page-images/custom-sponsors/PLD.png new file mode 100644 index 0000000000000000000000000000000000000000..f05dda2e02785884ffdf6f5be7c1110360ed6dc2 GIT binary patch literal 8755 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 QUm)+~rIn>>B}{_<2Z>$n*#H0l literal 0 HcmV?d00001 diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 6c886567..e9a39a0b 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -385,9 +385,12 @@ Sponsoring is an act of giving in a different fashion. 🌱

-CasinoPilotti -We thank bestonlinecasino.com for their support -Apiato Build PHP API's faster +KasynoHEX.com Polska +Online casino list in Canada by OnlineCasinoHEX.ca +Online pokies by AussieCasinoHEX.com +Apiato Build PHP API's faster +We thank bestonlinecasino.com for their support +CasinoPilotti diff --git a/README.md b/README.md index 5dc57f6d..0630fd57 100644 --- a/README.md +++ b/README.md @@ -192,9 +192,12 @@ Sponsoring is an act of giving in a different fashion. 🌱

-CasinoPilotti -We thank bestonlinecasino.com for their support -Apiato Build PHP API's faster +KasynoHEX.com Polska +Online casino list in Canada by OnlineCasinoHEX.ca +Online pokies by AussieCasinoHEX.com +Apiato Build PHP API's faster +We thank bestonlinecasino.com for their support +CasinoPilotti From e92ce2eb6c73157e5f2dc0454ec88d42a63726cc Mon Sep 17 00:00:00 2001 From: Alexander Palchikov Date: Thu, 27 May 2021 23:28:58 +0500 Subject: [PATCH 222/372] adding Tarantool --- .env.example | 3 +++ docker-compose.yml | 12 ++++++++++++ tarantool/Dockerfile | 3 +++ tarantool/lua/.gitignore | 2 ++ 4 files changed, 20 insertions(+) create mode 100644 tarantool/Dockerfile create mode 100644 tarantool/lua/.gitignore diff --git a/.env.example b/.env.example index 04354135..c949de03 100644 --- a/.env.example +++ b/.env.example @@ -999,3 +999,6 @@ GEARMAN_MYSQL_TABLE=gearman_queue ### ELK Stack ################################################## ELK_VERSION=7.9.1 + +### Tarantool ################################################## +TARANTOOL_PORT=3301 diff --git a/docker-compose.yml b/docker-compose.yml index f0d828ce..56dd363c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1977,3 +1977,15 @@ services: ZK_HOSTS: zookeeper:2181 networks: - backend + + +### tarantool ########################################### + tarantool: + build: ./tarantool + volumes: + - ${DATA_PATH_HOST}/tarantool:/var/lib/tarantool + - ./tarantool/lua:/opt/tarantool + ports: + - ${TARANTOOL_PORT}:3301 + networks: + - backend diff --git a/tarantool/Dockerfile b/tarantool/Dockerfile new file mode 100644 index 00000000..c8ed8957 --- /dev/null +++ b/tarantool/Dockerfile @@ -0,0 +1,3 @@ +FROM tarantool/tarantool:2 + +LABEL maintainer="Alexander Palchikov " \ No newline at end of file diff --git a/tarantool/lua/.gitignore b/tarantool/lua/.gitignore new file mode 100644 index 00000000..c96a04f0 --- /dev/null +++ b/tarantool/lua/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file From 885e47d117c8afc8f4c27d66d32b05e361f8fc4c Mon Sep 17 00:00:00 2001 From: AxelPAL Date: Wed, 2 Jun 2021 15:20:22 +0500 Subject: [PATCH 223/372] added tarantool admin service --- .env.example | 1 + DOCUMENTATION/content/documentation/index.md | 23 ++++++++++++++++++++ docker-compose.yml | 6 +++++ tarantool-admin/Dockerfile | 3 +++ 4 files changed, 33 insertions(+) create mode 100644 tarantool-admin/Dockerfile diff --git a/.env.example b/.env.example index c949de03..13bc982d 100644 --- a/.env.example +++ b/.env.example @@ -1002,3 +1002,4 @@ ELK_VERSION=7.9.1 ### Tarantool ################################################## TARANTOOL_PORT=3301 +TARANTOOL_ADMIN_PORT=8002 diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index 677402ac..701b3fa8 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -1467,8 +1467,31 @@ docker-compose up -d mosquitto 5 - Publish: `mqtt pub -t 'test' -h localhost -p 9001 -C 'ws' -m 'Hello!'` +
+ +## Use Tarantool (+ Admin panel) +1 - Configure Tarantool Port and Tarantool Admin Port using environment variables: `TARANTOOL_PORT` and `TARANTOOL_ADMIN_PORT`. Default ports are 3301 and 8002. +2 - Run the Tarantool and Tarantool Admin tool using `docker-compose up`command: + +```bash +docker-compose up -d tarantool tarantool-admin +``` + +3 - You can open admin tool visiting localhost:8002 + +4 - There you should set `Hostname` with the value `tarantool` + +5 - After that your tarantool data will be available inside admin panel. + +6 - Also you can connect to tarantool server in console mode with this command: + +```bash +docker-compose exec tarantool console +``` + +7 - There you can operate with tarantool database ([official documentation](https://www.tarantool.io/en/doc/latest/) can be helpful).
diff --git a/docker-compose.yml b/docker-compose.yml index 56dd363c..62c3bcf5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1989,3 +1989,9 @@ services: - ${TARANTOOL_PORT}:3301 networks: - backend + tarantool-admin: + build: ./tarantool-admin + ports: + - ${TARANTOOL_ADMIN_PORT}:80 + networks: + - backend \ No newline at end of file diff --git a/tarantool-admin/Dockerfile b/tarantool-admin/Dockerfile new file mode 100644 index 00000000..1bff4a69 --- /dev/null +++ b/tarantool-admin/Dockerfile @@ -0,0 +1,3 @@ +FROM quay.io/basis-company/tarantool-admin + +LABEL maintainer="Alexander Palchikov " \ No newline at end of file From da1124aacb1806ad8f2368f695def9c5ad2e21f3 Mon Sep 17 00:00:00 2001 From: aa-ahmed-aa Date: Wed, 2 Jun 2021 19:14:30 +0200 Subject: [PATCH 224/372] give laradock the ability to install custom composer version --- workspace/Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index b0d4506c..64deb567 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -147,7 +147,12 @@ RUN echo "" >> ~/.bashrc && \ # Update composer ARG COMPOSER_VERSION=2 ENV COMPOSER_VERSION ${COMPOSER_VERSION} -RUN composer self-update --${COMPOSER_VERSION} +RUN set -eux; \ + if [ "$COMPOSER_VERSION" = "1" ] || [ "$COMPOSER_VERSION" = "2" ]; then \ + composer self-update --${COMPOSER_VERSION}; \ + else \ + composer self-update ${COMPOSER_VERSION}; \ + fi USER laradock From 5d19a3646e2bcdfc065c2d6870d37aa1e0590f00 Mon Sep 17 00:00:00 2001 From: da-mask Date: Thu, 3 Jun 2021 14:18:53 +1000 Subject: [PATCH 225/372] Update multiple projects section Added some extra clarification on a point that tricked me up for a bit. --- DOCUMENTATION/content/getting-started/index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DOCUMENTATION/content/getting-started/index.md b/DOCUMENTATION/content/getting-started/index.md index 12ec826a..a97c78c0 100644 --- a/DOCUMENTATION/content/getting-started/index.md +++ b/DOCUMENTATION/content/getting-started/index.md @@ -107,6 +107,12 @@ Your folder structure should look like this: * project-2 ``` +Make sure the `APP_CODE_PATH_HOST` variable points to parent directory. + +``` +APP_CODE_PATH_HOST=../ +``` + 2 - Go to your web server and create config files to point to different project directory when visiting different domains: For **Nginx** go to `nginx/sites`, for **Apache2** `apache2/sites`. From 0c7f5a2b2af9db2cad09c4e72c4f65d748cf1c18 Mon Sep 17 00:00:00 2001 From: Alexander Palchikov Date: Mon, 17 May 2021 23:42:35 +0500 Subject: [PATCH 226/372] nats messaging system --- .env.example | 5 +++++ docker-compose.yml | 9 +++++++++ nats/Dockerfile | 5 +++++ nats/nats-server.conf | 25 +++++++++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 nats/Dockerfile create mode 100644 nats/nats-server.conf diff --git a/.env.example b/.env.example index 13bc982d..13b7ae8a 100644 --- a/.env.example +++ b/.env.example @@ -1003,3 +1003,8 @@ ELK_VERSION=7.9.1 ### Tarantool ################################################## TARANTOOL_PORT=3301 TARANTOOL_ADMIN_PORT=8002 + +### NATS ################################################## +NATS_CLIENT_PORT=4222 +NATS_MONITORING_PORT=6222 +NATS_ROUTE_PORT=8222 diff --git a/docker-compose.yml b/docker-compose.yml index 62c3bcf5..e6804ef6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -612,6 +612,15 @@ services: image: 'neo4j:latest' networks: - backend +### Nats ################################################ + nats: + build: ./nats + ports: + - "${NATS_CLIENT_PORT}:4222" + - "${NATS_MONITORING_PORT}:6222" + - "${NATS_ROUTE_PORT}:8222" + networks: + - backend ### MongoDB ############################################## mongo: diff --git a/nats/Dockerfile b/nats/Dockerfile new file mode 100644 index 00000000..9e381b2f --- /dev/null +++ b/nats/Dockerfile @@ -0,0 +1,5 @@ +FROM nats:latest + +LABEL maintainer="Alexander Palchikov " + +COPY nats-server.conf /etc/nats/nats-server.conf \ No newline at end of file diff --git a/nats/nats-server.conf b/nats/nats-server.conf new file mode 100644 index 00000000..cac772b0 --- /dev/null +++ b/nats/nats-server.conf @@ -0,0 +1,25 @@ +# Client port of 4222 on all interfaces +port: 4222 + +# HTTP monitoring port +monitor_port: 8222 + +# This is for clustering multiple servers together. +cluster { + + # Route connections to be received on any interface on port 6222 + port: 6222 + + # Routes are protected, so need to use them with --routes flag + # e.g. --routes=nats-route://ruser:T0pS3cr3t@otherdockerhost:6222 + authorization { + user: ruser + password: T0pS3cr3t + timeout: 2 + } + + # Routes are actively solicited and connected to from this server. + # This Docker image has none by default, but you can pass a + # flag to the gnatsd docker image to create one to an existing server. + routes = [] +} \ No newline at end of file From fb6c672cae332226652d0d2194ebf3ebf3178dd6 Mon Sep 17 00:00:00 2001 From: SinCOS Date: Fri, 4 Jun 2021 22:22:51 +0800 Subject: [PATCH 227/372] Update sources.sh --- workspace/sources.sh | 102 +++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/workspace/sources.sh b/workspace/sources.sh index eef06706..6ad796b6 100755 --- a/workspace/sources.sh +++ b/workspace/sources.sh @@ -8,76 +8,76 @@ if type "tee" 2>/dev/null && [ -n "${UBUNTU_SOURCE}" ]; then 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 +deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse +deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse +deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse +deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse +deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse +deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse +deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse +deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse +deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse +deb-src http://mirrors.aliyun.com/ubuntu/ focal-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 +deb http://mirrors.zju.edu.cn/ubuntu/ focal main multiverse restricted universe +deb http://mirrors.zju.edu.cn/ubuntu/ focal-backports main multiverse restricted universe +deb http://mirrors.zju.edu.cn/ubuntu/ focal-proposed main multiverse restricted universe +deb http://mirrors.zju.edu.cn/ubuntu/ focal-security main multiverse restricted universe +deb http://mirrors.zju.edu.cn/ubuntu/ focal-updates main multiverse restricted universe +deb-src http://mirrors.zju.edu.cn/ubuntu/ focal main multiverse restricted universe +deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-backports main multiverse restricted universe +deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-proposed main multiverse restricted universe +deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-security main multiverse restricted universe +deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-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 +deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse +deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse +deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse +deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse +deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse +deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse +deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse +deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse +deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse +deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-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 +deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse +deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse +deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse +deb http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse +deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse +deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse +deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse +deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse +deb-src http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse +deb-src http://mirrors.163.com/ubuntu/ focal-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 +deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse +deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse +deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse +deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse +deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse +deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse +deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse +deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse +deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse +deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-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 +fi From eda21c22ff682df98281ad0ef8be35bd7ada0c03 Mon Sep 17 00:00:00 2001 From: ben Date: Sun, 6 Jun 2021 15:01:06 -0700 Subject: [PATCH 228/372] Correct port number on phpmyadmin setup Port was 8080 but the default is set to 8081 --- DOCUMENTATION/content/documentation/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index 701b3fa8..5d5e6c59 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -958,7 +958,7 @@ More details about this [here](https://github.com/jenssegers/laravel-mongodb#ins docker-compose up -d mariadb phpmyadmin ``` *Note: To use with MariaDB, open `.env` and set `PMA_DB_ENGINE=mysql` to `PMA_DB_ENGINE=mariadb`.* -2. Open your browser and visit the localhost on port **8080**: `http://localhost:8080` +2. Open your browser and visit the localhost on port **8081**: `http://localhost:8081`, use server: "mysql", user: "default" and password: "secret for the default mysql setup. From 90660fbb771d39ce3ce186ca92dffd66e8685bcf Mon Sep 17 00:00:00 2001 From: Marcelo Garbin Date: Thu, 10 Jun 2021 00:06:56 -0300 Subject: [PATCH 229/372] changed startup from supervisor to apache2ctl --- apache2/startup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apache2/startup.sh b/apache2/startup.sh index c3b0e04d..d4eb6dc3 100644 --- a/apache2/startup.sh +++ b/apache2/startup.sh @@ -17,5 +17,5 @@ if [ ${APACHE_HTTP2} = true ]; then service apache2 restart fi -# Start supervisord in foreground -supervisord +# Start apache in foreground +/usr/sbin/apache2ctl -D FOREGROUND From 898434b59e514dfdd4a5c1cc8cfb56623a604ffe Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 12 Jun 2021 20:49:45 +0800 Subject: [PATCH 230/372] add php ssdb extension --- .env.example | 3 +++ docker-compose.yml | 5 ++++- php-fpm/Dockerfile | 28 ++++++++++++++++++++++++++++ php-worker/Dockerfile | 28 ++++++++++++++++++++++++++++ workspace/Dockerfile | 27 +++++++++++++++++++++++++++ 5 files changed, 90 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 13b7ae8a..69ea68b3 100644 --- a/.env.example +++ b/.env.example @@ -199,6 +199,7 @@ WORKSPACE_INSTALL_LNAV=false WORKSPACE_INSTALL_PROTOC=false WORKSPACE_INSTALL_PHPDECIMAL=false WORKSPACE_INSTALL_ZOOKEEPER=false +WORKSPACE_INSTALL_SSDB=false WORKSPACE_PROTOC_VERSION=latest WORKSPACE_INSTALL_MEMCACHED=true @@ -262,6 +263,7 @@ PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_WKHTMLTOPDF=false PHP_FPM_INSTALL_PHPDECIMAL=false PHP_FPM_INSTALL_ZOOKEEPER=false +PHP_FPM_INSTALL_SSDB=false PHP_FPM_FFMPEG=false PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" @@ -308,6 +310,7 @@ PHP_WORKER_INSTALL_GEARMAN=false PHP_WORKER_INSTALL_REDIS=false PHP_WORKER_INSTALL_IMAP=false PHP_WORKER_INSTALL_XMLRPC=false +PHP_WORKER_INSTALL_SSDB=false PHP_WORKER_PUID=1000 PHP_WORKER_PGID=1000 diff --git a/docker-compose.yml b/docker-compose.yml index f28bc4cf..10d3f432 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -167,6 +167,7 @@ services: - INSTALL_PROTOC=${WORKSPACE_INSTALL_PROTOC} - INSTALL_PHPDECIMAL=${WORKSPACE_INSTALL_PHPDECIMAL} - INSTALL_ZOOKEEPER=${WORKSPACE_INSTALL_ZOOKEEPER} + - INSTALL_SSDB=${WORKSPACE_INSTALL_SSDB} - PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION} - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} - INSTALL_MEMCACHED=${WORKSPACE_INSTALL_MEMCACHED} @@ -267,6 +268,7 @@ services: - INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC} - INSTALL_PHPDECIMAL=${PHP_FPM_INSTALL_PHPDECIMAL} - INSTALL_ZOOKEEPER=${PHP_FPM_INSTALL_ZOOKEEPER} + - INSTALL_SSDB=${PHP_FPM_INSTALL_SSDB} - DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} @@ -337,6 +339,7 @@ services: - INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS} - INSTALL_IMAP=${PHP_WORKER_INSTALL_IMAP} - INSTALL_XMLRPC=${PHP_WORKER_INSTALL_XMLRPC} + - INSTALL_SSDB=${PHP_WORKER_INSTALL_SSDB} - PUID=${PHP_WORKER_PUID} - PGID=${PHP_WORKER_PGID} - IMAGEMAGICK_VERSION=${PHP_WORKER_IMAGEMAGICK_VERSION} @@ -2003,4 +2006,4 @@ services: ports: - ${TARANTOOL_ADMIN_PORT}:80 networks: - - backend \ No newline at end of file + - backend diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 8e764285..e321b81b 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1138,6 +1138,34 @@ RUN if [ ${NEW_RELIC} = true ]; then \ -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \ /usr/local/etc/php/conf.d/newrelic.ini \ ;fi + +########################################################################### +# PHP SSDB: +########################################################################### + +USER root + +ARG INSTALL_SSDB=false + +RUN set -xe; \ + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apt-get -y install sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + && php -m | grep -r 'ssdb'; \ +;fi ########################################################################### # Downgrade Openssl: ########################################################################### diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index b901770b..ea86d5aa 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -422,6 +422,34 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ php -m | grep -r 'memcached'; \ fi +########################################################################### +# PHP SSDB: +########################################################################### + +USER root + +ARG INSTALL_SSDB=false + +RUN set -xe; \ + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apt-get -y install sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + && php -m | grep -r 'ssdb'; \ +;fi + # #-------------------------------------------------------------------------- # Optional Supervisord Configuration diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 64deb567..5dc435ef 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1649,6 +1649,33 @@ RUN set -eux; \ php -m | grep -q 'zookeeper'; \ fi +########################################################################### +# PHP SSDB: +########################################################################### + +USER root + +ARG INSTALL_SSDB=false + +RUN set -xe; \ + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apt-get -y install sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + && php -m | grep -r 'ssdb'; \ +;fi # #-------------------------------------------------------------------------- # Final Touch From 0b6c26674423cd3d4e46e4064c364179cafb7bf0 Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 12 Jun 2021 21:28:43 +0800 Subject: [PATCH 231/372] fix bug --- php-fpm/Dockerfile | 1 - php-worker/Dockerfile | 1 - workspace/Dockerfile | 1 - 3 files changed, 3 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index e321b81b..7843cbfa 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1164,7 +1164,6 @@ RUN set -xe; \ && make install \ && rm /tmp/ssdb-client-php.tar.gz \ && docker-php-ext-enable ssdb \ - && php -m | grep -r 'ssdb'; \ ;fi ########################################################################### # Downgrade Openssl: diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index ea86d5aa..cf4d6d6e 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -447,7 +447,6 @@ RUN set -xe; \ && make install \ && rm /tmp/ssdb-client-php.tar.gz \ && docker-php-ext-enable ssdb \ - && php -m | grep -r 'ssdb'; \ ;fi # diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 5dc435ef..c9c777c8 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1674,7 +1674,6 @@ RUN set -xe; \ && make install \ && rm /tmp/ssdb-client-php.tar.gz \ && docker-php-ext-enable ssdb \ - && php -m | grep -r 'ssdb'; \ ;fi # #-------------------------------------------------------------------------- From ae57d2bd1f4f2813f8ac4e775b2da017b7cb43d9 Mon Sep 17 00:00:00 2001 From: zhangxuejiang Date: Tue, 22 Jun 2021 23:41:00 +0800 Subject: [PATCH 232/372] change README-zh --- README-zh.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README-zh.md b/README-zh.md index 6055f2df..e519ef13 100644 --- a/README-zh.md +++ b/README-zh.md @@ -72,6 +72,21 @@ git clone https://github.com/laradock/laradock.git ```bash cp .env.example .env ``` +如果你在中国内地,可以修改一些配置来进行镜像加速,不过build时还是会请求GitHub来下载一些文件,此时需要保证你的计算机能连上GitHub +(1)配置DockerHub镜像加速,[链接](https://www.runoob.com/docker/docker-mirror-acceleration.html) +(2) 修改.env +``` +# 开启ubuntu国内源 +CHANGE_SOURCE=true +# 默认是阿里云,可选项有aliyun|zju|tsinghua|163|ustc +UBUNTU_SOURCE=aliyun +# composer镜像源 +WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/ +# nvm镜像源 +WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node +# npm镜像源 +WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org +``` 3. 运行这些容器。 ```bash From e0a88ac3711b40102697a612e82075d680261924 Mon Sep 17 00:00:00 2001 From: Larry Date: Wed, 23 Jun 2021 22:56:12 +0800 Subject: [PATCH 233/372] add openresty and ssdb --- docker-compose.yml | 37 +++- openresty/Dockerfile | 211 +++++++++++++++++++ openresty/logrotate/nginx | 14 ++ openresty/nginx.conf | 100 +++++++++ openresty/sites/.gitignore | 2 + openresty/sites/app.conf.example | 43 ++++ openresty/sites/confluence.conf.example | 43 ++++ openresty/sites/default.conf | 40 ++++ openresty/sites/laravel.conf.example | 49 +++++ openresty/sites/laravel_varnish.conf.example | 110 ++++++++++ openresty/sites/node.conf.example | 47 +++++ openresty/sites/symfony.conf.example | 42 ++++ openresty/ssl/.gitignore | 4 + openresty/startup.sh | 14 ++ ssdb/Dockerfile | 22 ++ ssdb/ssdb.conf | 52 +++++ 16 files changed, 829 insertions(+), 1 deletion(-) create mode 100644 openresty/Dockerfile create mode 100644 openresty/logrotate/nginx create mode 100644 openresty/nginx.conf create mode 100644 openresty/sites/.gitignore create mode 100644 openresty/sites/app.conf.example create mode 100644 openresty/sites/confluence.conf.example create mode 100644 openresty/sites/default.conf create mode 100644 openresty/sites/laravel.conf.example create mode 100644 openresty/sites/laravel_varnish.conf.example create mode 100644 openresty/sites/node.conf.example create mode 100644 openresty/sites/symfony.conf.example create mode 100644 openresty/ssl/.gitignore create mode 100644 openresty/startup.sh create mode 100644 ssdb/Dockerfile create mode 100644 ssdb/ssdb.conf diff --git a/docker-compose.yml b/docker-compose.yml index 10d3f432..6d909234 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,6 @@ networks: driver: ${NETWORKS_DRIVER} backend: driver: ${NETWORKS_DRIVER} - volumes: mysql: driver: ${VOLUMES_DRIVER} @@ -415,6 +414,32 @@ services: - frontend - backend +### OpenResty Server ######################################### + openresty: + build: + context: ./openresty + args: + - CHANGE_SOURCE=${CHANGE_SOURCE} + - PHP_UPSTREAM_CONTAINER=${OPENRESTY_PHP_UPSTREAM_CONTAINER} + - PHP_UPSTREAM_PORT=${OPENRESTY_PHP_UPSTREAM_PORT} + - http_proxy + - https_proxy + - no_proxy + volumes: + - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} + - ${OPENRESTY_HOST_LOG_PATH}:/var/log/nginx + - ${OPENRESTY_SITES_PATH}:/etc/nginx/sites-available + - ${OPENRESTY_SSL_PATH}:/etc/nginx/ssl + ports: + - "${OPENRESTY_HOST_HTTP_PORT}:80" + - "${OPENRESTY_HOST_HTTPS_PORT}:443" + - "${VARNISH_BACKEND_PORT}:81" + depends_on: + - php-fpm + networks: + - frontend + - backend + ### Blackfire ######################################## blackfire: image: blackfire/blackfire @@ -694,6 +719,16 @@ services: - "${REDIS_CLUSTER_PORT_RANGE}:7000-7005" networks: - backend +### SSDB ################################################ + ssdb: + build: ./ssdb + volumes: + - ${DATA_PATH_HOST}/ssdb:/data + ports: + - "${SSDB_PORT}:8888" + dns: 172.17.0.1 + networks: + - backend ### ZooKeeper ######################################### zookeeper: diff --git a/openresty/Dockerfile b/openresty/Dockerfile new file mode 100644 index 00000000..8a045aba --- /dev/null +++ b/openresty/Dockerfile @@ -0,0 +1,211 @@ +# Dockerfile - alpine +# https://github.com/openresty/docker-openresty + +ARG RESTY_IMAGE_BASE="alpine" +ARG RESTY_IMAGE_TAG="3.13" + +FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} + +LABEL maintainer="Evan Wies " + +# Docker Build Arguments +ARG RESTY_IMAGE_BASE="alpine" +ARG RESTY_IMAGE_TAG="3.13" +ARG RESTY_VERSION="1.19.3.2" +ARG RESTY_OPENSSL_VERSION="1.1.1k" +ARG RESTY_OPENSSL_PATCH_VERSION="1.1.1f" +ARG RESTY_OPENSSL_URL_BASE="https://www.openssl.org/source" +ARG RESTY_PCRE_VERSION="8.44" +ARG RESTY_J="1" +ARG RESTY_CONFIG_OPTIONS="\ + --with-compat \ + --with-file-aio \ + --with-http_addition_module \ + --with-http_auth_request_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_geoip_module=dynamic \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_image_filter_module=dynamic \ + --with-http_mp4_module \ + --with-http_random_index_module \ + --with-http_realip_module \ + --with-http_secure_link_module \ + --with-http_slice_module \ + --with-http_ssl_module \ + --with-http_stub_status_module \ + --with-http_sub_module \ + --with-http_v2_module \ + --with-http_xslt_module=dynamic \ + --with-ipv6 \ + --with-mail \ + --with-mail_ssl_module \ + --with-md5-asm \ + --with-pcre-jit \ + --with-sha1-asm \ + --with-stream \ + --with-stream_ssl_module \ + --with-threads \ + " +ARG RESTY_CONFIG_OPTIONS_MORE="\ + --conf-path=/etc/nginx/nginx.conf \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --pid-path=/var/run/nginx.pid \ + --user=www-data \ + --group=www-data \ + --with-http_iconv_module \ + --add-module=/tmp/nginx-ct-master \ + --add-module=/tmp/nginx-dav-ext-module-master \ + --add-module=/tmp/ngx_brotli \ + --add-module=/tmp/ngx_cache_purge-master \ + --add-module=/tmp/ngx_http_substitutions_filter_module-master \ + " +ARG RESTY_LUAJIT_OPTIONS="--with-luajit-xcflags='-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT'" + +ARG RESTY_ADD_PACKAGE_BUILDDEPS="" +ARG RESTY_ADD_PACKAGE_RUNDEPS="" +ARG RESTY_EVAL_PRE_CONFIGURE="" +ARG RESTY_EVAL_POST_MAKE="" + +# These are not intended to be user-specified +ARG _RESTY_CONFIG_DEPS="--with-pcre \ + --with-cc-opt='-DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl/include' \ + --with-ld-opt='-L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl/lib -Wl,-rpath,/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl/lib' \ + " + +LABEL resty_image_base="${RESTY_IMAGE_BASE}" +LABEL resty_image_tag="${RESTY_IMAGE_TAG}" +LABEL resty_version="${RESTY_VERSION}" +LABEL resty_openssl_version="${RESTY_OPENSSL_VERSION}" +LABEL resty_openssl_patch_version="${RESTY_OPENSSL_PATCH_VERSION}" +LABEL resty_openssl_url_base="${RESTY_OPENSSL_URL_BASE}" +LABEL resty_pcre_version="${RESTY_PCRE_VERSION}" +LABEL resty_config_options="${RESTY_CONFIG_OPTIONS}" +LABEL resty_config_options_more="${RESTY_CONFIG_OPTIONS_MORE}" +LABEL resty_config_deps="${_RESTY_CONFIG_DEPS}" +LABEL resty_add_package_builddeps="${RESTY_ADD_PACKAGE_BUILDDEPS}" +LABEL resty_add_package_rundeps="${RESTY_ADD_PACKAGE_RUNDEPS}" +LABEL resty_eval_pre_configure="${RESTY_EVAL_PRE_CONFIGURE}" +LABEL resty_eval_post_make="${RESTY_EVAL_POST_MAKE}" + +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 set -x ; \ + addgroup -g 82 -S www-data ; \ + adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1 + + +RUN apk add --no-cache --virtual .build-deps \ + build-base \ + coreutils \ + curl \ + gd-dev \ + geoip-dev \ + libxslt-dev \ + linux-headers \ + make \ + perl-dev \ + readline-dev \ + zlib-dev \ + ${RESTY_ADD_PACKAGE_BUILDDEPS} \ + && apk add --no-cache \ + gd \ + geoip \ + libgcc \ + libxslt \ + zlib \ + bash \ + logrotate \ + openssl \ + ${RESTY_ADD_PACKAGE_RUNDEPS} \ + && cd /tmp \ + && if [ -n "${RESTY_EVAL_PRE_CONFIGURE}" ]; then eval $(echo ${RESTY_EVAL_PRE_CONFIGURE}); fi \ + && cd /tmp \ + && curl -fSL "${RESTY_OPENSSL_URL_BASE}/openssl-${RESTY_OPENSSL_VERSION}.tar.gz" -o openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ + && tar xzf openssl-${RESTY_OPENSSL_VERSION}.tar.gz \ + && cd openssl-${RESTY_OPENSSL_VERSION} \ + && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.1" ] ; then \ + echo 'patching OpenSSL 1.1.1 for OpenResty' \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \ + fi \ + && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.0" ] ; then \ + echo 'patching OpenSSL 1.1.0 for OpenResty' \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/ed328977028c3ec3033bc25873ee360056e247cd/patches/openssl-1.1.0j-parallel_build_fix.patch | patch -p1 \ + && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \ + fi \ + && ./config \ + no-threads shared zlib -g \ + enable-ssl3 enable-ssl3-method \ + --prefix=/usr/local/openresty/openssl \ + --libdir=lib \ + -Wl,-rpath,/usr/local/openresty/openssl/lib \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install_sw \ + && cd /tmp \ + && curl -fSL https://ftp.pcre.org/pub/pcre/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \ + && tar xzf pcre-${RESTY_PCRE_VERSION}.tar.gz \ + && cd /tmp/pcre-${RESTY_PCRE_VERSION} \ + && ./configure \ + --prefix=/usr/local/openresty/pcre \ + --disable-cpp \ + --enable-jit \ + --enable-utf \ + --enable-unicode-properties \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install \ + && cd /tmp \ + && curl -fSL https://openresty.org/download/openresty-${RESTY_VERSION}.tar.gz -o openresty-${RESTY_VERSION}.tar.gz \ + && tar xzf openresty-${RESTY_VERSION}.tar.gz \ + && curl -fSL https://github.com/grahamedgecombe/nginx-ct/archive/master.tar.gz -o nginx-ct.tar.gz \ + && tar xzf nginx-ct.tar.gz \ + && curl -fSL https://github.com/arut/nginx-dav-ext-module/archive/master.tar.gz -o nginx-dav-ext-module.tar.gz \ + && tar xzf nginx-dav-ext-module.tar.gz \ + && curl -fSL https://www.downsoft.cn/software/linux/nginx/ngx_brotli.tar.gz -o ngx_brotli.tar.gz \ + && tar xzf ngx_brotli.tar.gz \ + && curl -fSL https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.tar.gz -o ngx_http_substitutions_filter_module.tar.gz \ + && tar xzf ngx_http_substitutions_filter_module.tar.gz \ + && curl -fSL https://github.com/FRiCKLE/ngx_cache_purge/archive/master.tar.gz -o ngx_cache_purge.tar.gz \ + && tar xzf ngx_cache_purge.tar.gz \ + && cd /tmp/openresty-${RESTY_VERSION} \ + && eval ./configure -j${RESTY_J} ${_RESTY_CONFIG_DEPS} ${RESTY_CONFIG_OPTIONS} ${RESTY_CONFIG_OPTIONS_MORE} ${RESTY_LUAJIT_OPTIONS} \ + && make -j${RESTY_J} \ + && make -j${RESTY_J} install \ + && cd /tmp \ + && if [ -n "${RESTY_EVAL_POST_MAKE}" ]; then eval $(echo ${RESTY_EVAL_POST_MAKE}); fi \ + && rm -rf \ + openssl-${RESTY_OPENSSL_VERSION}.tar.gz openssl-${RESTY_OPENSSL_VERSION} \ + pcre-${RESTY_PCRE_VERSION}.tar.gz pcre-${RESTY_PCRE_VERSION} \ + openresty-${RESTY_VERSION}.tar.gz openresty-${RESTY_VERSION} \ + && apk del .build-deps \ + && mkdir -p /etc/nginx/conf.d/ /var/run/openresty/ + +# Add additional binaries into PATH for convenience +ENV PATH=$PATH:/usr/local/openresty/luajit/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin + + +ARG PHP_UPSTREAM_CONTAINER=php-fpm +ARG PHP_UPSTREAM_PORT=9000 + +# Create 'messages' file used from 'logrotate' +RUN touch /var/log/messages + +# Copy 'logrotate' config file +COPY logrotate/nginx /etc/logrotate.d/ + +# Set upstream conf and remove the default conf +RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf + +# Copy nginx configuration files +COPY nginx.conf /etc/nginx/ + +ADD ./startup.sh /opt/startup.sh +RUN sed -i 's/\r//g' /opt/startup.sh +CMD ["/bin/bash", "/opt/startup.sh"] + +EXPOSE 80 81 443 diff --git a/openresty/logrotate/nginx b/openresty/logrotate/nginx new file mode 100644 index 00000000..8c89a83a --- /dev/null +++ b/openresty/logrotate/nginx @@ -0,0 +1,14 @@ +/var/log/nginx/*.log { + daily + missingok + rotate 32 + compress + delaycompress + nodateext + notifempty + create 644 www-data root + sharedscripts + postrotate + [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` + endscript +} diff --git a/openresty/nginx.conf b/openresty/nginx.conf new file mode 100644 index 00000000..a2494964 --- /dev/null +++ b/openresty/nginx.conf @@ -0,0 +1,100 @@ +# nginx.conf -- docker-openresty +# +# This file is installed to: +# `/usr/local/openresty/nginx/conf/nginx.conf` +# and is the file loaded by nginx at startup, +# unless the user specifies otherwise. +# +# It tracks the upstream OpenResty's `nginx.conf`, but removes the `server` +# section and adds this directive: +# `include /etc/nginx/conf.d/*.conf;` +# +# The `docker-openresty` file `nginx.vh.default.conf` is copied to +# `/etc/nginx/conf.d/default.conf`. It contains the `server section +# of the upstream `nginx.conf`. +# +# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files +# + +user www-data; +worker_processes 4; + +# Enables the use of JIT for regular expressions to speed-up their processing. +pcre_jit on; + + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +pid /var/run/nginx.pid; +daemon off; + +worker_rlimit_nofile 65535; +events { + use epoll; + worker_connections 65535; + multi_accept on; + accept_mutex on; +} + +http { + include mime.types; + default_type application/octet-stream; + + # Enables or disables the use of underscores in client request header fields. + # When the use of underscores is disabled, request header fields whose names contain underscores are marked as invalid and become subject to the ignore_invalid_headers directive. + # underscores_in_headers off; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for" "$host"'; + #access_log logs/access.log main; + + # Log in JSON Format + # log_format nginxlog_json escape=json '{ "timestamp": "$time_iso8601", ' + # '"remote_addr": "$remote_addr", ' + # '"body_bytes_sent": $body_bytes_sent, ' + # '"request_time": $request_time, ' + # '"response_status": $status, ' + # '"request": "$request", ' + # '"request_method": "$request_method", ' + # '"host": "$host",' + # '"upstream_addr": "$upstream_addr",' + # '"http_x_forwarded_for": "$http_x_forwarded_for",' + # '"http_referrer": "$http_referer", ' + # '"http_user_agent": "$http_user_agent", ' + # '"http_version": "$server_protocol", ' + # '"nginx_access": true }'; + # access_log /dev/stdout nginxlog_json; + + # See Move default writable paths to a dedicated directory (#119) + # https://github.com/openresty/docker-openresty/issues/119 + client_body_temp_path /var/run/openresty/nginx-client-body; + proxy_temp_path /var/run/openresty/nginx-proxy; + fastcgi_temp_path /var/run/openresty/nginx-fastcgi; + uwsgi_temp_path /var/run/openresty/nginx-uwsgi; + scgi_temp_path /var/run/openresty/nginx-scgi; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + + #keepalive_timeout 0; + keepalive_timeout 65; + types_hash_max_size 2048; + client_max_body_size 128M; + + gzip on; + gzip_disable "msie6"; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-available/*.conf; + + # Don't reveal OpenResty version to clients. + server_tokens off; + charset UTF-8; +} diff --git a/openresty/sites/.gitignore b/openresty/sites/.gitignore new file mode 100644 index 00000000..f5d67af0 --- /dev/null +++ b/openresty/sites/.gitignore @@ -0,0 +1,2 @@ +*.conf +!default.conf \ No newline at end of file diff --git a/openresty/sites/app.conf.example b/openresty/sites/app.conf.example new file mode 100644 index 00000000..a0f8357d --- /dev/null +++ b/openresty/sites/app.conf.example @@ -0,0 +1,43 @@ +server { + + listen 80; + listen [::]:80; + + # For https + # listen 443 ssl; + # listen [::]:443 ssl ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name app.test; + root /var/www/app; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } + + error_log /var/log/nginx/app_error.log; + access_log /var/log/nginx/app_access.log; +} diff --git a/openresty/sites/confluence.conf.example b/openresty/sites/confluence.conf.example new file mode 100644 index 00000000..f804956b --- /dev/null +++ b/openresty/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/openresty/sites/default.conf b/openresty/sites/default.conf new file mode 100644 index 00000000..56b7a100 --- /dev/null +++ b/openresty/sites/default.conf @@ -0,0 +1,40 @@ +server { + + listen 80 default_server; + listen [::]:80 default_server ipv6only=on; + + # For https + # listen 443 ssl default_server; + # listen [::]:443 ssl default_server ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name localhost; + root /opt/www/default; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } +} diff --git a/openresty/sites/laravel.conf.example b/openresty/sites/laravel.conf.example new file mode 100644 index 00000000..c9ba2d96 --- /dev/null +++ b/openresty/sites/laravel.conf.example @@ -0,0 +1,49 @@ +#server { +# listen 80; +# server_name laravel.com.co; +# return 301 https://laravel.com.co$request_uri; +#} + +server { + + listen 80; + listen [::]:80; + + # For https + # listen 443 ssl; + # listen [::]:443 ssl ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name laravel.test; + root /var/www/laravel/public; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } + + error_log /var/log/nginx/laravel_error.log; + access_log /var/log/nginx/laravel_access.log; +} diff --git a/openresty/sites/laravel_varnish.conf.example b/openresty/sites/laravel_varnish.conf.example new file mode 100644 index 00000000..7d545872 --- /dev/null +++ b/openresty/sites/laravel_varnish.conf.example @@ -0,0 +1,110 @@ +server { + listen 80; + listen [::]:80; + server_name www.laravel.test; + rewrite ^(.*) https://laravel.test$1/ permanent; +} + +server { + listen 80; + listen [::]:80; + server_name laravel.test; + rewrite ^(.*) https://laravel.test$1/ permanent; +} + +server { + listen 443 ssl ; + listen [::]:443 ssl; + ssl_certificate /etc/nginx/ssl/laravel.test.crt; + ssl_certificate_key /etc/nginx/ssl/laravel.test.key; + server_name www.laravel.test; + rewrite ^(.*) https://laravel.test$1/ permanent; +} + +server { + server_name laravel.test; + + # For https + listen 443 ssl ; + listen [::]:443 ssl; + ssl_certificate /etc/nginx/ssl/laravel.test.crt; + ssl_certificate_key /etc/nginx/ssl/laravel.test.key; + + port_in_redirect off; + + add_header Strict-Transport-Security "max-age=31536000"; + add_header X-Content-Type-Options nosniff; + + location / { + proxy_pass http://proxy:6081; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header HTTPS "on"; + proxy_redirect off; + } +} + +server { + server_name laravel.test; + + listen 81; + listen [::]:81; + + root /var/www/laravel.test/www; + + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + fastcgi_max_temp_file_size 4m; + fastcgi_pass php-upstream; + + # Additional configs + fastcgi_pass_header Set-Cookie; + fastcgi_pass_header Cookie; + fastcgi_ignore_headers Cache-Control Expires Set-Cookie; + try_files $uri /index.php =404; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; + fastcgi_param HTTPS on; + + fastcgi_buffers 16 16k; + fastcgi_buffer_size 32k; + + fastcgi_intercept_errors on; + + #fixes timeouts + fastcgi_read_timeout 600; + include fastcgi_params; + } + + # Caching + location ~* \.(ico|jpg|webp|jpeg|gif|css|png|js|ico|bmp|zip|woff)$ { + access_log off; + log_not_found off; + add_header Pragma public; + add_header Cache-Control "public"; + expires 14d; + } + + location ~* \.(php|html)$ { + access_log on; + log_not_found on; + add_header Pragma public; + add_header Cache-Control "public"; + expires 14d; + } + + location ~ /\.ht { + deny all; + } +} diff --git a/openresty/sites/node.conf.example b/openresty/sites/node.conf.example new file mode 100644 index 00000000..6fe0c754 --- /dev/null +++ b/openresty/sites/node.conf.example @@ -0,0 +1,47 @@ +#server { +# listen 80; +# server_name node.com.co; +# return 301 https://node.com.co$request_uri; +#} + +server { + + listen 80; + listen [::]:80; + + #listen 443; + #listen [::]:443; + + server_name node.com.co; + + #ssl on; + #ssl_certificate /var/certs/node.com.co/cert.pem; + #ssl_certificate_key /var/certs/node.com.co/privkey.pem; + #ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; + #ssl_ciphers HIGH:!aNULL:!MD5; + + + location / { + proxy_pass http://node.com.co:3001; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_cache_bypass $http_upgrade; + } + + location ~ /\.ht { + deny all; + } + + location /.well-known/acme-challenge/ { + root /var/www/letsencrypt/; + log_not_found off; + } + + error_log /var/log/nginx/node.com.co.local_error.log; + access_log /var/log/nginx/node.com.co.local_access.log; +} diff --git a/openresty/sites/symfony.conf.example b/openresty/sites/symfony.conf.example new file mode 100644 index 00000000..2834d747 --- /dev/null +++ b/openresty/sites/symfony.conf.example @@ -0,0 +1,42 @@ +server { + + listen 80; + listen [::]:80; + + # For https + # listen 443 ssl; + # listen [::]:443 ssl ipv6only=on; + # ssl_certificate /etc/nginx/ssl/default.crt; + # ssl_certificate_key /etc/nginx/ssl/default.key; + + server_name symfony.test; + root /var/www/projects/symfony/web; + index index.php index.html index.htm; + + location / { + try_files $uri @rewriteapp; + } + + # For Symfony 3 + location @rewriteapp { + rewrite ^(.*)$ /app.php/$1 last; + } + + # For Symfony 4 config + # location @rewriteapp { + # rewrite ^(.*)$ /index.php/$1 last; + # } + + location ~ ^/(app|app_dev|config|index)\.php(/|$) { + fastcgi_pass php-upstream; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + #fixes timeouts + fastcgi_read_timeout 600; + fastcgi_param HTTPS off; + } + + error_log /var/log/nginx/symfony_error.log; + access_log /var/log/nginx/symfony_access.log; +} diff --git a/openresty/ssl/.gitignore b/openresty/ssl/.gitignore new file mode 100644 index 00000000..003cd8e5 --- /dev/null +++ b/openresty/ssl/.gitignore @@ -0,0 +1,4 @@ +*.crt +*.csr +*.key +*.pem \ No newline at end of file diff --git a/openresty/startup.sh b/openresty/startup.sh new file mode 100644 index 00000000..0f088ad0 --- /dev/null +++ b/openresty/startup.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +if [ ! -f /etc/nginx/ssl/default.crt ]; then + openssl genrsa -out "/etc/nginx/ssl/default.key" 2048 + openssl req -new -key "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.csr" -subj "/CN=default/O=default/C=UK" + openssl x509 -req -days 365 -in "/etc/nginx/ssl/default.csr" -signkey "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.crt" + chmod 644 /etc/nginx/ssl/default.key +fi + +# Start crond in background +crond -l 2 -b + +# Start nginx in foreground +nginx diff --git a/ssdb/Dockerfile b/ssdb/Dockerfile new file mode 100644 index 00000000..e8e988a7 --- /dev/null +++ b/ssdb/Dockerfile @@ -0,0 +1,22 @@ +FROM alpine +LABEL maintainer="Leonard Buskin " + +ARG VERSION=${VERSION:-master} + +RUN apk add --no-cache --virtual .build-deps \ + curl gcc g++ make autoconf libc-dev libevent-dev linux-headers perl tar \ + && mkdir -p /ssdb/tmp \ + && curl -Lk "https://github.com/ideawu/ssdb/archive/${VERSION}.tar.gz" | \ + tar -xz -C /ssdb/tmp --strip-components=1 \ + && cd /ssdb/tmp \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install PREFIX=/ssdb \ + && rm -rf /ssdb/tmp \ + && apk add --virtual .rundeps libstdc++ \ + && apk add --no-cache bash python2 \ + && apk del .build-deps + +EXPOSE 8888 +VOLUME /ssdb/var +COPY ssdb.conf /ssdb/ssdb.conf +CMD ["/ssdb/ssdb-server", "/ssdb/ssdb.conf"] diff --git a/ssdb/ssdb.conf b/ssdb/ssdb.conf new file mode 100644 index 00000000..14122b92 --- /dev/null +++ b/ssdb/ssdb.conf @@ -0,0 +1,52 @@ +# ssdb-server config +# MUST indent by TAB! + +# relative to path of this file, directory must exists +work_dir = /data +pidfile = /run/ssdb.pid + +server: + #ip: 127.0.0.1 + port: 8888 + # bind to public ip + ip: 0.0.0.0 + # format: allow|deny: all|ip_prefix + # multiple allows or denys is supported + deny: all + allow: 127.0.0.1 + allow: 192. + allow: 172. + # auth password must be at least 32 characters + #auth: very-strong-password + +replication: + binlog: yes + # Limit sync speed to *MB/s, -1: no limit + sync_speed: -1 + slaveof: + # to identify a master even if it moved(ip, port changed) + # if set to empty or not defined, ip:port will be used. + #id: svc_2 + # sync|mirror, default is sync + #type: sync + #host: s1.ssdb.db + #port: 8888 + +logger: + level: warn + output: /var/log/ssdb.log + rotate: + size: 1000000000 + +leveldb: + # in MB + cache_size: 500 + # in KB + block_size: 32 + # in MB + write_buffer_size: 64 + # in MB + compaction_speed: 1000 + # yes|no + compression: yes + From b0f6fec975d57618d2d7408b7f97b31f1e92cc4d Mon Sep 17 00:00:00 2001 From: Larry Date: Thu, 24 Jun 2021 00:13:46 +0800 Subject: [PATCH 234/372] remove dns setting in ssdb --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6d909234..c7ba79ff 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -726,7 +726,6 @@ services: - ${DATA_PATH_HOST}/ssdb:/data ports: - "${SSDB_PORT}:8888" - dns: 172.17.0.1 networks: - backend From 46e5daa160139102bb13ecb57bf90af402c7a843 Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 26 Jun 2021 00:15:19 +0800 Subject: [PATCH 235/372] add openresty and ssdb setting in .env.example --- .env.example | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.env.example b/.env.example index 69ea68b3..bfe6d85d 100644 --- a/.env.example +++ b/.env.example @@ -325,6 +325,16 @@ NGINX_PHP_UPSTREAM_CONTAINER=php-fpm NGINX_PHP_UPSTREAM_PORT=9000 NGINX_SSL_PATH=./nginx/ssl/ +### OpenResty ################################################# + +OPENRESTY_HOST_HTTP_PORT=80 +OPENRESTY_HOST_HTTPS_PORT=443 +OPENRESTY_HOST_LOG_PATH=./logs/openresty/ +OPENRESTY_SITES_PATH=./openresty/sites/ +OPENRESTY_PHP_UPSTREAM_CONTAINER=php-fpm +OPENRESTY_PHP_UPSTREAM_PORT=9000 +OPENRESTY_SSL_PATH=./openresty/ssl/ + ### LARAVEL_HORIZON ################################################ LARAVEL_HORIZON_INSTALL_BZ2=false @@ -390,6 +400,10 @@ REDIS_PORT=6379 REDIS_CLUSTER_PORT_RANGE=7000-7005 +### SSDB ################################################# + +SSDB_PORT=16801 + ### ZooKeeper ############################################# ZOOKEEPER_PORT=2181 From b0d928762ea1751a793a64e620e3b003a44a2526 Mon Sep 17 00:00:00 2001 From: Larry Date: Sat, 26 Jun 2021 00:45:55 +0800 Subject: [PATCH 236/372] restore default.conf root path for openresty --- openresty/sites/default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openresty/sites/default.conf b/openresty/sites/default.conf index 56b7a100..e02bb830 100644 --- a/openresty/sites/default.conf +++ b/openresty/sites/default.conf @@ -10,7 +10,7 @@ server { # ssl_certificate_key /etc/nginx/ssl/default.key; server_name localhost; - root /opt/www/default; + root /var/www/public; index index.php index.html index.htm; location / { From 58edaa642149c33301dc4c0d987da5837cbff35c Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Thu, 1 Jul 2021 12:22:46 +0200 Subject: [PATCH 237/372] Add Alpine version to solve issue: https://github.com/laradock/laradock/issues/3008 --- laravel-horizon/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 8823a020..87c11274 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -5,7 +5,7 @@ # ARG LARADOCK_PHP_VERSION -FROM php:${LARADOCK_PHP_VERSION}-alpine +FROM php:${LARADOCK_PHP_VERSION}-alpine3.13 LABEL maintainer="Mahmoud Zalt " From 2ac65c3fea9e46272bd87d45f80ee28470a20b70 Mon Sep 17 00:00:00 2001 From: Memo Chou Date: Sun, 11 Jul 2021 00:13:15 +0800 Subject: [PATCH 238/372] Add console port and fix environments for minio --- .env.example | 1 + docker-compose.yml | 7 ++++--- minio/Dockerfile | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 13b7ae8a..7bb79109 100644 --- a/.env.example +++ b/.env.example @@ -486,6 +486,7 @@ SELENIUM_PORT=4444 ### MINIO ################################################# MINIO_PORT=9000 +MINIO_CONSOLE_PORT=9001 ### ADMINER ############################################### diff --git a/docker-compose.yml b/docker-compose.yml index f28bc4cf..0db74c91 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -468,9 +468,10 @@ services: - ${DATA_PATH_HOST}/minio/config:/root/.minio ports: - "${MINIO_PORT}:9000" + - "${MINIO_CONSOLE_PORT}:9001" environment: - - MINIO_ACCESS_KEY=access - - MINIO_SECRET_KEY=secretkey + - MINIO_ROOT_USER=access + - MINIO_ROOT_PASSWORD=secretkey networks: - frontend - backend @@ -2003,4 +2004,4 @@ services: ports: - ${TARANTOOL_ADMIN_PORT}:80 networks: - - backend \ No newline at end of file + - backend diff --git a/minio/Dockerfile b/minio/Dockerfile index f394fcf7..eea0b415 100644 --- a/minio/Dockerfile +++ b/minio/Dockerfile @@ -2,4 +2,4 @@ FROM minio/minio LABEL maintainer="Thor Erik Lie " -ENTRYPOINT ["minio", "server", "/export"] +ENTRYPOINT ["minio", "server", "--console-address", ":9001", "/export"] From 96e5e8220e965836c05a9b97793d048725cc08f9 Mon Sep 17 00:00:00 2001 From: Memo Chou Date: Sun, 11 Jul 2021 00:38:01 +0800 Subject: [PATCH 239/372] Use dotenv for env keys --- .env.example | 2 ++ docker-compose.yml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 7bb79109..a9ebec96 100644 --- a/.env.example +++ b/.env.example @@ -487,6 +487,8 @@ SELENIUM_PORT=4444 MINIO_PORT=9000 MINIO_CONSOLE_PORT=9001 +MINIO_ROOT_USER=laradock +MINIO_ROOT_PASSWORD=laradock ### ADMINER ############################################### diff --git a/docker-compose.yml b/docker-compose.yml index 0db74c91..1e4ea9f2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -470,8 +470,8 @@ services: - "${MINIO_PORT}:9000" - "${MINIO_CONSOLE_PORT}:9001" environment: - - MINIO_ROOT_USER=access - - MINIO_ROOT_PASSWORD=secretkey + - MINIO_ROOT_USER=${MINIO_ROOT_USER} + - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} networks: - frontend - backend From b7de2868eb5a20a839f94e4d79d1e7605490c277 Mon Sep 17 00:00:00 2001 From: Larry Date: Wed, 21 Jul 2021 13:46:21 +0800 Subject: [PATCH 240/372] fix bug in php-worker --- php-worker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index cf4d6d6e..c06bd7ee 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -432,7 +432,7 @@ ARG INSTALL_SSDB=false RUN set -xe; \ if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ - apt-get -y install sudo wget && \ + apk --update add sudo wget && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ else \ From 87b416769c5ed68cedc3dd3c3772dbc3473ded5c Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 29 Jul 2021 10:04:34 +0800 Subject: [PATCH 241/372] skip install AUDIOWAVEFORM extension #3030 --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 7011eeff..619fe808 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -38,6 +38,7 @@ jobs: sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env + sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m From 00ee9d74d5444d8b121e76bbc6cdb43ca4d4923b Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 29 Jul 2021 17:24:39 +0800 Subject: [PATCH 242/372] fix build error for PHP-FPM Audiowaveform #3017, #3030, #3031 --- .github/workflows/main-ci.yml | 1 - php-fpm/Dockerfile | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 619fe808..7011eeff 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -38,7 +38,6 @@ jobs: sed -i -- 's/OCI8=true/OCI8=false/g' .env sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env - sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 8e764285..9eb184b7 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -990,19 +990,17 @@ ARG INSTALL_AUDIOWAVEFORM=false RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ apt-get -y install wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ + && cd /tmp \ && git clone https://github.com/bbc/audiowaveform.git \ && cd audiowaveform \ - && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ - && tar xzf release-1.10.0.tar.gz \ - && ln -s googletest-release-1.10.0/googletest googletest \ - && ln -s googletest-release-1.10.0/googlemock googlemock \ + && git clone --depth=1 https://github.com/google/googletest.git -b release-1.11.0 \ && mkdir build \ && cd build \ && cmake .. \ && make \ && make install \ ;fi - + ##################################### # wkhtmltopdf: From e494712a5b61732c950502fa7aeb2b1e056c4aa1 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 30 Jul 2021 11:06:10 +0200 Subject: [PATCH 243/372] add sponsor logo --- .../home-page-images/custom-sponsors/VeePN.png | Bin 0 -> 21632 bytes DOCUMENTATION/content/introduction/index.md | 3 +++ README.md | 3 +++ 3 files changed, 6 insertions(+) create mode 100644 .github/home-page-images/custom-sponsors/VeePN.png diff --git a/.github/home-page-images/custom-sponsors/VeePN.png b/.github/home-page-images/custom-sponsors/VeePN.png new file mode 100644 index 0000000000000000000000000000000000000000..efad065de035691659802dc890f94ddb6f499e15 GIT binary patch literal 21632 zcma%Cg;Sf))5o3Q1oz?ucXw!ul@@o36c6qY+@-X*1gFJ{6)!Hu-Ccugarxyt??3R) zdLrS6j%rd2)L>$3Lg*<5N-c^Fwo#{e0R-f;a`|8D*A2+ z2&8ZRdk|GWFrC9+BD#H0mP4o-qdI{9K(UcklSM$NNyL6KM@2yRNTRAB`_UWmq#Zlk z$SPz1HQViQ>GrgU=qvsdy$TZMTg?K-vdw}x@h8-r?->_`I2)%g9{o98i>t|Dllb9G zVvpotVrma*#+W+VzSU&bF&uVg0y26G#1t7MrUMk$qwD7ntHx**_2cJaTR& zJwW5Su|H4MTf_tIXV0E;hp}bwQDpxgAA(P0mJ}V+za16}#1l^_Wy8=OAk0YUSeJ=` z*No2_U7>&1*4Fg$HF@|m-UojE%yfI+gO_z@BcNs}gO3=Al8HgZW%#>(rtj*NEkDCq z5bJyoLM8wflmbA#m}Qo=@sJZM*1bxAeVJjI7<^0<3Us!Mt~S_AltQlU&+l*-`qTf? zjTQ_4J$tki+hKlYI%4);=NXNZ%FuW@%=J5!)g4u-h=$4{soiC!o_INTEwMm7}Uy5w;S?<1WAr<9xYfW41&HOxo|m;#&P6I@3> zu5)m%Z(YJyMea{hWsqmw!0HPCF~cqmzE?(#-i()t)?4ZqP*9DTGTj|Bp?!B+k_^!w z#8tjm$O>N$YudI5%ojBEx0&ktIw&Z3Juq`-(@&V@VC{L-Igp>*M58M6oE$EnS_Y^) z9s8RWjUfhlJo&Xhs_)k0RKgMS@?7t=vA9mhJ&dbyh2heU4ue((NzFTf^{$xm<)h{C zUh~SOyB^Xgb-gi@JL3e=T6M{@n28x)00ZSKO%U(+l^r`LpJS)rs^g#$dn zZ+70z06aSDI11OL^|{-OtofxvfRRs3Xe&oiuz`MF`V@I+t?%R`78Yv#J5;Eh2*$AT z$!+@ONQnm0cH7$=@Gg~;EvcOOBV6RBf(n~^?oTnUq7<*D+2&}Yc8n8NFoce2taBO5 zgp-%8rGLs&Pn&qt-lFulgtiuIWeGfc1$zKrv?jeEQyYhUba6k=rK(J<*f0(iXmrev z5*vNgJ`eyDz($MdP7o&}vpk(XdD=S5lW;ztK2xjw5gAi}m!lX%{!#nI0{t$yAQbdb zSQYk0#H0$i@i;1arK{WKzC#wDMsx*1$xN5K-)k~ZAam1lsIz>D5!pjx#J6e7X235X zgpbA$7|pZSO#nlakBqoF%J&1~^s6T#ii-o1@PgOOog4ZCr+Cmz+erwOA!z1N1Jbhpw@(kGAsUlX^q5`3m$cKzS9p8q2iltfac8?BY!@JojbKRM8 z{N;{|I|tT!J@t+}T5wYaiCR`6Ecs_g+t*QWApLJv+#0KYNlm{n-D$p%H6s-%UnY@_ z_GEnSB80grshJJ%8~v(#0wX>p)R~X-z?GD?kpUmBJWLY=46FnZ$Su1&hon*9Mu&Q) zchv({s*6ZPd`8fLCK;9z0+?%4mNo3>J=cG88QZY`d%Q5__2>G5z;$*q97Swrrp3nR z50rI)w3HqUj&&KGejx{GqXA*{_%I|O?CBWkB)F<2P5f|7%S_$}0|_lrCNAV)zxIGi0G2|wO!a1EmP6GRXx4?L*k?n+ zL}!{nEUyw5LiH5tk@&Cwpb{|Q?PD~3+dF`D`@*6U z)y?oH^U^Lz9_fV9uI6bC_a{S~sC3l;!GKW|29wJ6E>2)6aA7|4%3=PdL6@pf9_=bXzv{?ou2*b)LxJq#d%OipgdKdLJ%P$OToa}CoD+&XNML5t&`Cqw7R>eP>Cwow zpb9Ub5dXbX_NtM)V8U4?~F#t@C#6s=M5eCh%^vE$35;o*xQkJwphEd9SVz#Do^v zv}c!oj4|QcyrU-{=0-$&6B^!Zd|$_YTw3hB_Hgb873iA}bKw`czZ?>-7!4N7yd+cr zzGB%ImvoAB!I3z>B2(=h_Df>tZa)B{#Ndtb_uxmc*V)l?3S%Kc5xU zr9lDTORC>BFH!9)4?RGUX~83k2*Ssr1cP}t+q;oCNqV}7nC__G7;u^-?6S6>RBRa& znlZK_BqwgjGH=?m52z> zicX#=^F9hcpTyQ6kk$mLmGdt*ibszLL~_RBu+`)_i<@ejTUoA5o@GM7lNxcz6Rg?0 z`IXLT0r@Vs>nPed%abZRiHHKCG*D4|_y>6lM>=S`boW-aNMef)lB&`vbbN6XT=|^! zdmWjcnHXuc_L-lWf~>W3;N7`m7&tIgggu4~W%?pAe59%Q zb{pWUdL<$)Lkkbc3DV-l8F7b-+lD}f-YuyFk(ICs>AIRR?+KGIjv8dFg3J*kJL<=* zPwB``Hs2=>A5{f;4a2rIB+%%Y&H*isk0pL&wuYU`VRmlWco}+3MN+oo=NA!@RfzM~ z&MnTuVK{lTIlSUzj(3XLp)F5RWxom+?1YnN z=buF8WH;(K-G;qhD?(#CdGx0Ds$_& zih5Igb&4F16QN@dnL&&unesgRB3Z&$`jyPe;hP^*VRenqS#WPOB29IwtkEZW+l)cjv@+V8bgd& z?32S1?UsFC$AE8vr zF%H<58Qw9Eey-IAZVTHNj8-Hrat}Z|Y4?H5ecS$iU!~Qf{rofNo^YPS2n7-QNEJmq z-4Ws}y`_8mgnLX)pPkTiVg=VwR=3?=e28JkF}`H`!o-gL5}vC3_+h4W5M~M4vmu!+ zuXcPmTs{3)rBx=#y7wauy|s5O4kRTw%{!x*g zS4P4#5k@#c&l2ROgTc4f3hp;a5s_kW8h!PA+jflMxmSsebnpu-$-!a&j(Gcmb+E-+ z!5gbn2tj+D6 zQMLMOVAh%ZZmXGn?#6QHUUqR4ofBKY*%-Ha*~kPzGP z+ufz&_!%MFPQ6QW2>+HPi^!!#6qlR(?edm`4TC}RU|N9YQZfT7p=|;C)}tR?`&D`q z-UokrO63Z}*ZZ(2*#~KN$bLpc6wgp5AY(g~T6pA4IGZfY-sGeqEMp#-Vu0f=w_QqP z_mlizGAe_Q=&c|VgmIGzlt|$Gavln?qW;c&v7?U6M?6dcEnZlv);A)JJOX2&LbTp3 znSd0ev5o#Fr9HTF{Nar_hWAW87q{#($B?$TDkPc}?( zZu|YlK9?b>HMO0&1hZv1<2Z#VA9z?Z63sZ`9b0QyMO?~{V(dZdHN(0vWh|JbH^Q-s zAoZ&Q+i9<{QEfZeD)eHICC^uW#k0z=H{6%rYi@LoLT}Y|8v0!@Rs=692ChEVD34!{ zUT({i{GV{?_V8K`Z=Bm1d@Cl^3d=pYX4J8%zA2J>>+)>wA@6UbX#8=q8WP+nK{nos zm>jTK4IU<+_DPg$^YdfYaCno8BdoxQrH_pVE7lF2Hk6=5(GPEnW`!*AD$ zItCt=t59p>-{eoE4Na8tLVLn!IpEO1=@f2KIcsxBzVojfOZ;H1zIc5Mk3vGO#|paz zQ+Ub;qNTFqS_tz&zlSn(=Gy9mh)-WH%qNpKZFrpSyF1#@oVVqk`|QQdSgGrB>Zfhg zreo@4k*LAH)T&;Vxue_3!Wu>7;!*p)EME;-;Ew*y^eFOz|RzxRNFGL{3YmoUz$gf&=OT>=;;*! z3*6Xxsj?yKy*U#NS)+ECCyIy_8 zUJY}Ca+_!^b#%bozsgdt#n))Xm{R5+@s@T1`8k22XPnC@XR^KspAmWzQXio$IR5R&z7Ei~ac%*!-x4##+qdP!t20e0sz4c$tVdbL0`;zfir%O5nw zYioBLDF~zv(_6|(8QtB|#LXz?=o=+)vgBk8YuVkXoABPDWAbb5eD~{QM4)n1zQ(Qa zJip_a+TT?cu^S`iS~t*tft~7iQAJF8JH;$qm6N62zM_crZgi^lJaf;v4^v^e(gHhj zIjSLYKS$`d�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 erCYG^ld8vTM`4 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 literal 0 HcmV?d00001 diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index e9a39a0b..8f5ac26d 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -417,6 +417,9 @@ Sponsoring is an act of giving in a different fashion. 🌱

+VeePN Chrome extension + + diff --git a/README.md b/README.md index 0630fd57..fbe581eb 100644 --- a/README.md +++ b/README.md @@ -224,6 +224,9 @@ Sponsoring is an act of giving in a different fashion. 🌱

+VeePN Chrome extension + + From 471e69977c90666a7440e35a7a9d82f76f9db835 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Sat, 31 Jul 2021 15:42:39 +0200 Subject: [PATCH 244/372] build the hugo site using github actions --- .github/workflows/main-ci.yml | 95 ++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 35 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 619fe808..57fa5955 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -6,7 +6,7 @@ on: tags: '**' pull_request: schedule: - - cron: '0 0 * * 0' + - cron: '0 0 * * 0' jobs: build-php: @@ -16,33 +16,33 @@ jobs: strategy: fail-fast: false matrix: - php_version: ["5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] - service: [php-fpm, php-worker, workspace, laravel-horizon] + php_version: [ "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0" ] + service: [ php-fpm, php-worker, workspace, laravel-horizon ] steps: - - uses: actions/checkout@v2 - - name: Build the Docker image - env: - PHP_VERSION: ${{ matrix.php_version }} - run: | - set -eux - cp .env.example .env - sed -i -- 's/=false/=true/g' .env - sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env - sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env - sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env - sed -i -- 's/AEROSPIKE=true/AEROSPIKE=false/g' .env - sed -i -- 's/PHALCON=true/PHALCON=false/g' .env - sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env - sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env - sed -i -- 's/OCI8=true/OCI8=false/g' .env - sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env - sed -i -- 's/V8JS=true/V8JS=false/g' .env - sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env - docker-compose build ${{ matrix.service }} - docker-compose up -d --no-deps -- ${{ matrix.service }} - docker-compose exec -T -- ${{ matrix.service }} php -m - docker-compose down + - uses: actions/checkout@v2 + - name: Build the Docker image + env: + PHP_VERSION: ${{ matrix.php_version }} + run: | + set -eux + cp .env.example .env + sed -i -- 's/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + sed -i -- 's/PHPDBG=true/PHPDBG=false/g' .env + sed -i -- 's/CASSANDRA=true/CASSANDRA=false/g' .env + sed -i -- 's/GEARMAN=true/GEARMAN=false/g' .env + sed -i -- 's/AEROSPIKE=true/AEROSPIKE=false/g' .env + sed -i -- 's/PHALCON=true/PHALCON=false/g' .env + sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env + sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env + sed -i -- 's/OCI8=true/OCI8=false/g' .env + sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env + sed -i -- 's/V8JS=true/V8JS=false/g' .env + sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env + docker-compose build ${{ matrix.service }} + docker-compose up -d --no-deps -- ${{ matrix.service }} + docker-compose exec -T -- ${{ matrix.service }} php -m + docker-compose down build-other: # Don't trigger on schedule event when in a fork @@ -51,12 +51,37 @@ jobs: strategy: fail-fast: false matrix: - service: ['nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo'] + service: [ 'nginx', 'redis', 'mysql', 'mariadb', 'percona', 'minio', 'mongo' ] steps: - - uses: actions/checkout@v2 - - name: Build the Docker image - run: | - cp .env.example .env - sed -i -- 's/=false/=true/g' .env - sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env - docker-compose build ${{ matrix.service }} + - uses: actions/checkout@v2 + - name: Build the Docker image + run: | + cp .env.example .env + sed -i -- 's/=false/=true/g' .env + sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env + docker-compose build ${{ matrix.service }} + + build-deploy-docs: + runs-on: ubuntu-20.04 + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2.1.0 + with: + hugo-version: '0.20.2' + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Guthub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages From 68833d188cbc523a4c6c902baade0e4367ee01c9 Mon Sep 17 00:00:00 2001 From: Lorand Gombos Date: Fri, 13 Aug 2021 10:16:48 +0300 Subject: [PATCH 245/372] Update available php version list --- DOCUMENTATION/content/introduction/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 8f5ac26d..0c726d49 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -17,7 +17,7 @@ It supports a variety of common services, all pre-configured to provide a ready ## Features -- Easy switch between PHP versions: 7.4, 7.3, 7.2, 7.1, 5.6... +- Easy switch between PHP versions: 8.0, 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... From 9707cb44b121770d061a4bd8ae3e7b59673cad42 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 13 Aug 2021 18:05:55 +0200 Subject: [PATCH 246/372] fix the build and deployment of the hugo site --- .github/workflows/main-ci.yml | 55 ++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 57fa5955..74708fe8 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -9,6 +9,34 @@ on: - cron: '0 0 * * 0' jobs: + build-deploy-docs: + runs-on: ubuntu-20.04 +# concurrency: +# group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: 'latest' + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Github Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages + publish_dir: ./docs + build-php: # Don't trigger on schedule event when in a fork if: github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository == 'laradock/laradock') @@ -17,7 +45,7 @@ jobs: fail-fast: false matrix: php_version: [ "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0" ] - service: [ php-fpm, php-worker, workspace, laravel-horizon ] + service: [ php-fpm, php-worker, workspace ] steps: - uses: actions/checkout@v2 - name: Build the Docker image @@ -60,28 +88,3 @@ jobs: sed -i -- 's/=false/=true/g' .env sed -i -- 's/CHANGE_SOURCE=true/CHANGE_SOURCE=false/g' .env docker-compose build ${{ matrix.service }} - - build-deploy-docs: - runs-on: ubuntu-20.04 - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - defaults: - run: - working-directory: ./DOCUMENTATION - steps: - - name: Checkout Source Code - uses: actions/checkout@v2 - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2.1.0 - with: - hugo-version: '0.20.2' - - - name: Build Hugo Site - run: hugo --minify - - - name: Deploy Hugo Site to Guthub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages From f16445c9f225154051344ab150b8eed09c3dd96f Mon Sep 17 00:00:00 2001 From: zhuocwang Date: Mon, 16 Aug 2021 21:44:49 +0800 Subject: [PATCH 247/372] feat:support rabbitmq v3.9 --- docker-compose.yml | 5 ++--- rabbitmq/management_agent.disable_metrics_collector.conf | 1 + rabbitmq/rabbitmq.conf | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 rabbitmq/management_agent.disable_metrics_collector.conf create mode 100644 rabbitmq/rabbitmq.conf diff --git a/docker-compose.yml b/docker-compose.yml index 5847a80b..5846dddd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -804,12 +804,11 @@ services: - "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672" - "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671" privileged: true - environment: - - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER} - - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS} hostname: laradock-rabbitmq volumes: - ${DATA_PATH_HOST}/rabbitmq:/var/lib/rabbitmq + - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf + - ./rabbitmq/management_agent.disable_metrics_collector.conf:/etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf depends_on: - php-fpm networks: diff --git a/rabbitmq/management_agent.disable_metrics_collector.conf b/rabbitmq/management_agent.disable_metrics_collector.conf new file mode 100644 index 00000000..cc680cc1 --- /dev/null +++ b/rabbitmq/management_agent.disable_metrics_collector.conf @@ -0,0 +1 @@ +management_agent.disable_metrics_collector = false diff --git a/rabbitmq/rabbitmq.conf b/rabbitmq/rabbitmq.conf new file mode 100644 index 00000000..a25686d6 --- /dev/null +++ b/rabbitmq/rabbitmq.conf @@ -0,0 +1,2 @@ +default_user = guest +default_pass = guest From 75e5a56c70456171c5c53cba1829839e927b9844 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 17 Aug 2021 07:56:45 +0800 Subject: [PATCH 248/372] only on laradock repo run build docs job --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 74708fe8..d8a8c447 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -10,6 +10,7 @@ on: jobs: build-deploy-docs: + if: github.repository == 'laradock/laradock' runs-on: ubuntu-20.04 # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} From bb3e24260e7d923ce29b3ce1993c260d239ef6e5 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 17 Aug 2021 08:58:21 +0800 Subject: [PATCH 249/372] CI job skip install SSDB extension. --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index d8a8c447..7b359784 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -68,6 +68,7 @@ jobs: sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env + sed -i -- 's/SSDB=true/SSDB=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m From 76ca731b8e03e4dad97a480372d0d97cfc1e815f Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Tue, 17 Aug 2021 09:46:19 +0800 Subject: [PATCH 250/372] deploy docs only on master branch --- .github/workflows/build-deploy-docs.yml | 36 +++++++++++++++++++++++++ .github/workflows/main-ci.yml | 29 -------------------- 2 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 .github/workflows/build-deploy-docs.yml diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml new file mode 100644 index 00000000..0e139b56 --- /dev/null +++ b/.github/workflows/build-deploy-docs.yml @@ -0,0 +1,36 @@ +name: Build Deploy Docs + +on: + push: + branches: + - master + +jobs: + build-deploy-docs: + if: github.repository == 'laradock/laradock' + runs-on: ubuntu-20.04 +# concurrency: +# group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: 'latest' + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Github Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages + publish_dir: ./docs diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 7b359784..c609956c 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -9,35 +9,6 @@ on: - cron: '0 0 * * 0' jobs: - build-deploy-docs: - if: github.repository == 'laradock/laradock' - runs-on: ubuntu-20.04 -# concurrency: -# group: ${{ github.workflow }}-${{ github.ref }} - defaults: - run: - working-directory: ./DOCUMENTATION - steps: - - name: Checkout Source Code - uses: actions/checkout@v2 - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: 'latest' - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - - - name: Build Hugo Site - run: hugo --minify - - - name: Deploy Hugo Site to Github Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages - publish_dir: ./docs - build-php: # Don't trigger on schedule event when in a fork if: github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository == 'laradock/laradock') From 32ffc84d01730f03367b51220fac9a5a69ebf491 Mon Sep 17 00:00:00 2001 From: zhuocwang Date: Tue, 17 Aug 2021 13:49:27 +0800 Subject: [PATCH 251/372] clean up .env.example --- .env.example | 2 -- 1 file changed, 2 deletions(-) diff --git a/.env.example b/.env.example index 664e1454..53db7ce1 100644 --- a/.env.example +++ b/.env.example @@ -452,8 +452,6 @@ SQS_MANAGEMENT_HTTP_HOST_PORT=9325 RABBITMQ_NODE_HOST_PORT=5672 RABBITMQ_MANAGEMENT_HTTP_HOST_PORT=15672 RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671 -RABBITMQ_DEFAULT_USER=guest -RABBITMQ_DEFAULT_PASS=guest ### MERCURE ############################################## From e72d849007327e2e860d2d00bf086324ab1d1db8 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Wed, 18 Aug 2021 19:06:27 +0200 Subject: [PATCH 252/372] fix doc style --- .github/workflows/build-deploy-docs.yml | 72 ++++++++++++------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml index 0e139b56..4345a418 100644 --- a/.github/workflows/build-deploy-docs.yml +++ b/.github/workflows/build-deploy-docs.yml @@ -1,36 +1,36 @@ -name: Build Deploy Docs - -on: - push: - branches: - - master - -jobs: - build-deploy-docs: - if: github.repository == 'laradock/laradock' - runs-on: ubuntu-20.04 -# concurrency: -# group: ${{ github.workflow }}-${{ github.ref }} - defaults: - run: - working-directory: ./DOCUMENTATION - steps: - - name: Checkout Source Code - uses: actions/checkout@v2 - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: 'latest' - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - - - name: Build Hugo Site - run: hugo --minify - - - name: Deploy Hugo Site to Github Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_branch: gh-pages - publish_dir: ./docs +name: Build Deploy Docs + +on: + push: + branches: + - master + +jobs: + build-deploy-docs: + if: github.repository == 'laradock/laradock' + runs-on: ubuntu-20.04 + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + defaults: + run: + working-directory: ./DOCUMENTATION + steps: + - name: Checkout Source Code + uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: '0.55.0' + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + + - name: Build Hugo Site + run: hugo --minify + + - name: Deploy Hugo Site to Github Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages + publish_dir: ./docs From a2440e9f48e23a6ced29f3d2ab0012ea3bb150d4 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 19 Aug 2021 17:19:33 +0800 Subject: [PATCH 253/372] CI job Add path filter --- .github/workflows/build-deploy-docs.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml index 4345a418..03bad63f 100644 --- a/.github/workflows/build-deploy-docs.yml +++ b/.github/workflows/build-deploy-docs.yml @@ -4,6 +4,9 @@ on: push: branches: - master + paths: + - '.github/workflows/build-deploy-docs.yml' + - 'DOCUMENTATION/**' jobs: build-deploy-docs: From 910211ba2d0212532d32b3f5aca360ca84ff830d Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 19 Aug 2021 17:20:18 +0800 Subject: [PATCH 254/372] CI job Add path filter --- .github/workflows/main-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index c609956c..8fe4e51c 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -4,6 +4,9 @@ on: push: branches: '**' tags: '**' + paths-ignore: + - '.github/workflows/build-deploy-docs.yml' + - 'DOCUMENTATION/**' pull_request: schedule: - cron: '0 0 * * 0' From 1d2bc53833f24011caa8d534fd0d07ff235ee812 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Fri, 27 Aug 2021 16:49:10 +0800 Subject: [PATCH 255/372] fix workspace sqlsrv extension install --- workspace/Dockerfile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index c9c777c8..bccc72be 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1043,34 +1043,34 @@ RUN set -eux; \ if [ ${INSTALL_MSSQL} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ apt-get install -yqq php5.6-sybase freetds-bin freetds-common libsybdb5 \ - && php -m | grep -q 'mssql' \ - && php -m | grep -q 'pdo_dblib' \ + && php -m | grep -oiE '^mssql$' \ + && php -m | grep -oiE '^pdo_dblib$' \ ;else \ ########################################################################### # The following steps were taken from # https://github.com/Microsoft/msphpsql/wiki/Install-and-configuration ########################################################################### curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ + curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ apt-get update -yqq && \ ACCEPT_EULA=Y apt-get install -yqq msodbcsql17 mssql-tools unixodbc unixodbc-dev libgss3 odbcinst locales && \ ln -sfn /opt/mssql-tools/bin/sqlcmd /usr/bin/sqlcmd && \ ln -sfn /opt/mssql-tools/bin/bcp /usr/bin/bcp && \ echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "2" ]; then \ - pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ - ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ - pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ - ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + locale-gen \ + && if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ pecl install pdo_sqlsrv-5.3.0 sqlsrv-5.3.0 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70200" ]; then \ + pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ ;else \ pecl install pdo_sqlsrv sqlsrv \ ;fi && \ - echo "extension=sqlsrv.so" > /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-sqlsrv.ini && \ echo "extension=pdo_sqlsrv.so" > /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-pdo_sqlsrv.ini && \ - php -m | grep -q 'sqlsrv' && \ - php -m | grep -q 'pdo_sqlsrv' \ + echo "extension=sqlsrv.so" > /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-sqlsrv.ini && \ + php -m | grep -oiE '^pdo_sqlsrv$' && \ + php -m | grep -oiE '^sqlsrv$' \ ;fi \ ;fi From 044bbc734b20dfec5794290ac187af5d07b92a99 Mon Sep 17 00:00:00 2001 From: Amor <794000949@qq.com> Date: Fri, 27 Aug 2021 17:23:22 +0800 Subject: [PATCH 256/372] remove source.sh & update nvm git address --- docker-compose.yml | 1 - workspace/Dockerfile | 10 ++---- workspace/sources.sh | 83 -------------------------------------------- 3 files changed, 3 insertions(+), 91 deletions(-) delete mode 100755 workspace/sources.sh diff --git a/docker-compose.yml b/docker-compose.yml index 5846dddd..4bd260d9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -66,7 +66,6 @@ services: - SHELL_OH_MY_ZSH=${SHELL_OH_MY_ZSH} - SHELL_OH_MY_ZSH_AUTOSUGESTIONS=${SHELL_OH_MY_ZSH_AUTOSUGESTIONS} - SHELL_OH_MY_ZSH_ALIASES=${SHELL_OH_MY_ZSH_ALIASES} - - UBUNTU_SOURCE=${UBUNTU_SOURCE} - BASE_IMAGE_TAG_PREFIX=${WORKSPACE_BASE_IMAGE_TAG_PREFIX} - LARADOCK_PHP_VERSION=${PHP_VERSION} - LARADOCK_PHALCON_VERSION=${PHALCON_VERSION} diff --git a/workspace/Dockerfile b/workspace/Dockerfile index c9c777c8..bfc6ac3d 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -31,17 +31,13 @@ USER root ########################################################################### ARG CHANGE_SOURCE=false -ARG UBUNTU_SOURCE=aliyun -COPY ./sources.sh /tmp/sources.sh 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; \ - chmod +x /tmp/sources.sh; \ - /bin/sh -c /tmp/sources.sh; \ - fi; \ - rm -rf /tmp/sources.sh + sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list; \ + fi; ########################################################################### # Laradock non-root user: @@ -715,7 +711,7 @@ ENV NVM_NODEJS_ORG_MIRROR ${NVM_NODEJS_ORG_MIRROR} RUN if [ ${INSTALL_NODE} = true ]; then \ # Install nvm (A Node Version Manager) mkdir -p $NVM_DIR && \ - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash \ + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash \ && . $NVM_DIR/nvm.sh \ && nvm install ${NODE_VERSION} \ && nvm use ${NODE_VERSION} \ diff --git a/workspace/sources.sh b/workspace/sources.sh deleted file mode 100755 index 6ad796b6..00000000 --- a/workspace/sources.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/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/ focal main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse -deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse -deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse -deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse -deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse -deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse -deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse -EOF -;; - "zju") - tee ${SOURCE_PATH} <<-'EOF' -deb http://mirrors.zju.edu.cn/ubuntu/ focal main multiverse restricted universe -deb http://mirrors.zju.edu.cn/ubuntu/ focal-backports main multiverse restricted universe -deb http://mirrors.zju.edu.cn/ubuntu/ focal-proposed main multiverse restricted universe -deb http://mirrors.zju.edu.cn/ubuntu/ focal-security main multiverse restricted universe -deb http://mirrors.zju.edu.cn/ubuntu/ focal-updates main multiverse restricted universe -deb-src http://mirrors.zju.edu.cn/ubuntu/ focal main multiverse restricted universe -deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-backports main multiverse restricted universe -deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-proposed main multiverse restricted universe -deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-security main multiverse restricted universe -deb-src http://mirrors.zju.edu.cn/ubuntu/ focal-updates main multiverse restricted universe -EOF -;; - "tsinghua") - tee ${SOURCE_PATH} <<-'EOF' -deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse -deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse -deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse -deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse -deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse -deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse -deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse -deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse -deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse -deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse -EOF -;; - "163") - tee ${SOURCE_PATH} <<-'EOF' -deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse -deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse -deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse -deb http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse -deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse -deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse -deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse -deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse -deb-src http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse -deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse -EOF -;; - "ustc") - tee ${SOURCE_PATH} <<-'EOF' -deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse -deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse -deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse -deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse -deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse -deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse -deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse -deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse -deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse -deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse -EOF -;; - *) - echo "Please check whether there is aliyun|zju|tsinghua|163|ustc in the parameter" - exit 1;; - esac -fi From 4bc5942ad58eeb0ae03581db265d5090ec0a01ce Mon Sep 17 00:00:00 2001 From: Amor <794000949@qq.com> Date: Fri, 27 Aug 2021 17:25:27 +0800 Subject: [PATCH 257/372] update ubuntu source --- php-fpm/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 9da002c8..c86213ff 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -31,6 +31,7 @@ RUN if [ ${CHANGE_SOURCE} = true ]; then \ sed -i 's/deb.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \ sed -i 's/security.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \ sed -i 's/security-cdn.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list \ + sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list; \ ;fi # always run apt update when start and after add new source list, then clean up at end. From e11e9053edb28c0736fbb0e4d0353125627c2ec4 Mon Sep 17 00:00:00 2001 From: Amor <794000949@qq.com> Date: Fri, 27 Aug 2021 17:26:47 +0800 Subject: [PATCH 258/372] update ubuntu source --- php-fpm/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index c86213ff..b483bba4 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -30,8 +30,8 @@ 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/security.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \ - sed -i 's/security-cdn.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list \ - sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list; \ + sed -i 's/security-cdn.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \ + sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list \ ;fi # always run apt update when start and after add new source list, then clean up at end. From fa407d2b2fa1ddcf544b5cf5a93929d7a96677b0 Mon Sep 17 00:00:00 2001 From: Amor <794000949@qq.com> Date: Fri, 27 Aug 2021 17:32:40 +0800 Subject: [PATCH 259/372] update .env and README --- .env.example | 2 -- README-zh.md | 2 -- 2 files changed, 4 deletions(-) diff --git a/.env.example b/.env.example index 53db7ce1..8db7984c 100644 --- a/.env.example +++ b/.env.example @@ -74,8 +74,6 @@ 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 # Set ORACLE INSTANT_CLIENT_MIRROR option if you want to use Intranet improve download, you can download files first ORACLE_INSTANT_CLIENT_MIRROR=https://github.com/diogomascarenha/oracle-instantclient/raw/master/ diff --git a/README-zh.md b/README-zh.md index e519ef13..d05a7dbf 100644 --- a/README-zh.md +++ b/README-zh.md @@ -78,8 +78,6 @@ cp .env.example .env ``` # 开启ubuntu国内源 CHANGE_SOURCE=true -# 默认是阿里云,可选项有aliyun|zju|tsinghua|163|ustc -UBUNTU_SOURCE=aliyun # composer镜像源 WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/ # nvm镜像源 From 53b5166236f501ed2218a8b097081f39992e9cb6 Mon Sep 17 00:00:00 2001 From: Amor <794000949@qq.com> Date: Mon, 30 Aug 2021 10:55:31 +0800 Subject: [PATCH 260/372] reset php-fpm/Dockerfile --- php-fpm/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index b483bba4..9da002c8 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -30,8 +30,7 @@ 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/security.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \ - sed -i 's/security-cdn.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \ - sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list \ + sed -i 's/security-cdn.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list \ ;fi # always run apt update when start and after add new source list, then clean up at end. From d544a1a63c6962e17548a9301ced1666f44c7340 Mon Sep 17 00:00:00 2001 From: Amor <794000949@qq.com> Date: Mon, 30 Aug 2021 13:54:03 +0800 Subject: [PATCH 261/372] Remove workspace docker image redundant mirror links & Update php-fpm docker image link to Tsinghua University --- php-fpm/Dockerfile | 6 +++--- workspace/Dockerfile | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 9da002c8..d36b59c3 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -28,9 +28,9 @@ ENV DEBIAN_FRONTEND noninteractive 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/security.debian.org/mirrors.aliyun.com/' /etc/apt/sources.list && \ - sed -i 's/security-cdn.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. diff --git a/workspace/Dockerfile b/workspace/Dockerfile index bfc6ac3d..e62296fc 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -33,9 +33,6 @@ USER root 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; \ sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list; \ fi; From 7298c60d0fe280e6a23445f0b3ed78bd4f074375 Mon Sep 17 00:00:00 2001 From: Amor <794000949@qq.com> Date: Mon, 30 Aug 2021 18:29:47 +0800 Subject: [PATCH 262/372] change workspace dockerfile mirror link --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index e62296fc..1cf07f28 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -33,7 +33,7 @@ USER root ARG CHANGE_SOURCE=false RUN if [ ${CHANGE_SOURCE} = true ]; then \ # Change application source from deb.debian.org to aliyun source - sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list; \ + sed -i 's/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list; \ fi; ########################################################################### From c784aad5a71c9e443cf2914a3fadab8a8724768c Mon Sep 17 00:00:00 2001 From: Gautier DELEGLISE Date: Mon, 30 Aug 2021 12:50:37 +0200 Subject: [PATCH 263/372] :bug: :recycle: smbclient wasn't working + refactored mssql Relates #3042 --- php-fpm/Dockerfile | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 9da002c8..c873cad9 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -706,33 +706,33 @@ RUN set -eux; \ apt-get -yqq install freetds-dev libsybdb5 \ && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.so /usr/lib/libsybdb.so \ && docker-php-ext-install mssql pdo_dblib \ - && php -m | grep -q 'mssql' \ - && php -m | grep -q 'pdo_dblib' \ + && php -m | grep -oiE '^mssql$' \ + && php -m | grep -oiE '^pdo_dblib$' \ ;else \ ########################################################################### # Ref from https://github.com/Microsoft/msphpsql/wiki/Dockerfile-for-adding-pdo_sqlsrv-and-sqlsrv-to-official-php-image ########################################################################### # Add Microsoft repo for Microsoft ODBC Driver 13 for Linux - apt-get install -yqq apt-transport-https gnupg \ + apt-get install -yqq apt-transport-https gnupg lsb-release \ && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ - && curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list \ + && curl https://packages.microsoft.com/config/debian/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list \ && apt-get update -yqq \ && ACCEPT_EULA=Y apt-get install -yqq unixodbc unixodbc-dev libgss3 odbcinst msodbcsql17 locales \ && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ && ln -sfn /etc/locale.alias /usr/share/locale/locale.alias \ && locale-gen \ - && if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "2" ]; then \ - pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ - ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ - pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ - ;elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + && if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ pecl install pdo_sqlsrv-5.3.0 sqlsrv-5.3.0 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70200" ]; then \ + pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ ;else \ pecl install pdo_sqlsrv sqlsrv \ ;fi \ && docker-php-ext-enable pdo_sqlsrv sqlsrv \ - && php -m | grep -q 'pdo_sqlsrv' \ - && php -m | grep -q 'sqlsrv' \ + && php -m | grep -oiE '^pdo_sqlsrv$' \ + && php -m | grep -oiE '^sqlsrv$' \ ;fi \ ;fi @@ -787,7 +787,9 @@ RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ ARG INSTALL_SMB=false RUN if [ ${INSTALL_SMB} = true ]; then \ - apt-get install -yqq smbclient php-smbclient coreutils \ + apt-get install apt-get install -yqq smbclient libsmbclient-dev coreutils && \ + pecl install smbclient && \ + docker-php-ext-enable smbclient \ -yqq smbclient php-smbclient coreutils \ ;fi ########################################################################### From 6c9ca44573d392221570f679cf83c7fdff5f4f0f Mon Sep 17 00:00:00 2001 From: Gautier DELEGLISE Date: Mon, 30 Aug 2021 14:10:24 +0200 Subject: [PATCH 264/372] :bug: wrong command --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index c873cad9..7e467532 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -789,7 +789,7 @@ ARG INSTALL_SMB=false RUN if [ ${INSTALL_SMB} = true ]; then \ apt-get install apt-get install -yqq smbclient libsmbclient-dev coreutils && \ pecl install smbclient && \ - docker-php-ext-enable smbclient \ -yqq smbclient php-smbclient coreutils \ + docker-php-ext-enable smbclient \ ;fi ########################################################################### From 850eadc1434796a48f6b75502938bc732896e307 Mon Sep 17 00:00:00 2001 From: Joe Niland Date: Mon, 6 Sep 2021 10:13:43 +1000 Subject: [PATCH 265/372] Add ability to install MSSQL drivers in php-worker --- .env.example | 1 + docker-compose.yml | 1 + php-worker/Dockerfile | 515 ++++++++++++++++++++++-------------------- 3 files changed, 275 insertions(+), 242 deletions(-) diff --git a/.env.example b/.env.example index 8db7984c..bad14536 100644 --- a/.env.example +++ b/.env.example @@ -293,6 +293,7 @@ PHP_WORKER_INSTALL_BCMATH=false PHP_WORKER_INSTALL_MEMCACHED=false # PHP_WORKER_INSTALL_OCI8 Does not work in php5.6 version PHP_WORKER_INSTALL_OCI8=false +PHP_WORKER_INSTALL_MSSQL=false PHP_WORKER_INSTALL_PHALCON=false PHP_WORKER_INSTALL_SOAP=false PHP_WORKER_INSTALL_ZIP_ARCHIVE=false diff --git a/docker-compose.yml b/docker-compose.yml index 4bd260d9..0538fe9f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -322,6 +322,7 @@ services: - INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH} - INSTALL_MEMCACHED=${PHP_WORKER_INSTALL_MEMCACHED} - INSTALL_OCI8=${PHP_WORKER_INSTALL_OCI8} + - INSTALL_MSSQL=${PHP_WORKER_INSTALL_MSSQL} - INSTALL_PHALCON=${PHP_WORKER_INSTALL_PHALCON} - INSTALL_SOAP=${PHP_WORKER_INSTALL_SOAP} - INSTALL_ZIP_ARCHIVE=${PHP_WORKER_INSTALL_ZIP_ARCHIVE} diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index c06bd7ee..8dabe290 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -15,9 +15,9 @@ ARG LARADOCK_PHP_VERSION 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 + # 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 \ @@ -37,7 +37,7 @@ RUN apk --update add wget \ RUN pecl channel-update pecl.php.net; \ - docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl + docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl # Add a non-root user: ARG PUID=1000 @@ -46,14 +46,14 @@ ARG PGID=1000 ENV PGID ${PGID} RUN addgroup -g ${PGID} laradock && \ - adduser -D -G laradock -u ${PUID} laradock + adduser -D -G laradock -u ${PUID} laradock #Install BZ2: ARG INSTALL_BZ2=false RUN if [ ${INSTALL_BZ2} = true ]; then \ apk --update add bzip2-dev; \ docker-php-ext-install bz2; \ -fi + fi ########################################################################### # PHP GnuPG: @@ -62,35 +62,35 @@ fi ARG INSTALL_GNUPG=false RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ - apk add --no-cache --no-progress --virtual BUILD_DEPS_PHP_GNUPG gpgme-dev; \ - apk add --no-cache --no-progress gpgme; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install gnupg-1.5.0RC2; \ - else \ - pecl install gnupg; \ - fi; \ - docker-php-ext-enable gnupg; \ - fi + apk add --no-cache --no-progress --virtual BUILD_DEPS_PHP_GNUPG gpgme-dev; \ + apk add --no-cache --no-progress gpgme; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install gnupg-1.5.0RC2; \ + else \ + pecl install gnupg; \ + fi; \ + docker-php-ext-enable gnupg; \ + fi #Install LDAP ARG INSTALL_LDAP=false; RUN set -eux; if [ ${INSTALL_LDAP} = true ]; then \ - apk add --no-cache --no-progress openldap-dev; \ - docker-php-ext-install ldap; \ - php -m | grep -oiE '^ldap$'; \ - fi + apk add --no-cache --no-progress openldap-dev; \ + docker-php-ext-install ldap; \ + php -m | grep -oiE '^ldap$'; \ + fi #Install GD package: ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ - apk add --update --no-cache freetype-dev libjpeg-turbo-dev jpeg-dev libpng-dev; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ]; then \ - docker-php-ext-configure gd --with-freetype --with-jpeg --with-png; \ - else \ - docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/; \ - fi; \ - docker-php-ext-install gd \ -;fi + apk add --update --no-cache freetype-dev libjpeg-turbo-dev jpeg-dev libpng-dev; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ]; then \ + docker-php-ext-configure gd --with-freetype --with-jpeg --with-png; \ + else \ + docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/; \ + fi; \ + docker-php-ext-install gd \ + ;fi #Install ImageMagick: ARG INSTALL_IMAGEMAGICK=false @@ -98,57 +98,57 @@ ARG IMAGEMAGICK_VERSION=latest ENV IMAGEMAGICK_VERSION ${IMAGEMAGICK_VERSION} RUN set -eux; \ if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ - apk add --update --no-cache imagemagick-dev imagemagick; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - cd /tmp && \ - if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ - git clone https://github.com/Imagick/imagick; \ - else \ - git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ - fi && \ - cd imagick && \ - phpize && \ - ./configure && \ - make && \ - make install && \ - rm -r /tmp/imagick; \ - else \ - pecl install imagick; \ - fi && \ - docker-php-ext-enable imagick; \ - php -m | grep -q 'imagick'; \ + apk add --update --no-cache imagemagick-dev imagemagick; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + cd /tmp && \ + if [ ${IMAGEMAGICK_VERSION} = "latest" ]; then \ + git clone https://github.com/Imagick/imagick; \ + else \ + git clone --branch ${IMAGEMAGICK_VERSION} https://github.com/Imagick/imagick; \ + fi && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && \ + make install && \ + rm -r /tmp/imagick; \ + else \ + pecl install imagick; \ + fi && \ + docker-php-ext-enable imagick; \ + php -m | grep -q 'imagick'; \ fi #Install GMP package: ARG INSTALL_GMP=false RUN if [ ${INSTALL_GMP} = true ]; then \ - apk add --update --no-cache gmp gmp-dev \ - && docker-php-ext-install gmp \ -;fi + apk add --update --no-cache gmp gmp-dev \ + && docker-php-ext-install gmp \ + ;fi #Install BCMath package: ARG INSTALL_BCMATH=false RUN if [ ${INSTALL_BCMATH} = true ]; then \ - docker-php-ext-install bcmath \ -;fi + docker-php-ext-install bcmath \ + ;fi #Install SOAP package: ARG INSTALL_SOAP=false RUN if [ ${INSTALL_SOAP} = true ]; then \ - docker-php-ext-install soap \ -;fi + docker-php-ext-install soap \ + ;fi # Install MongoDB drivers: ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install mongo; \ - docker-php-ext-enable mongo; \ - else \ - pecl install mongodb; \ - docker-php-ext-enable mongodb; \ - fi; \ - fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install mongo; \ + docker-php-ext-enable mongo; \ + else \ + pecl install mongodb; \ + docker-php-ext-enable mongodb; \ + fi; \ + fi ########################################################################### # PHP OCI8: @@ -160,144 +160,144 @@ ENV LD_LIBRARY_PATH="/usr/local/instantclient" ENV ORACLE_HOME="/usr/local/instantclient" RUN if [ ${INSTALL_OCI8} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - apk add make php7-pear php7-dev gcc musl-dev libnsl libaio poppler-utils libzip-dev zip unzip libaio-dev freetds-dev && \ - ## Download and unarchive Instant Client v11 - curl -o /tmp/basic.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-basic-linux.x64-11.2.0.4.0.zip && \ - curl -o /tmp/sdk.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sdk-linux.x64-11.2.0.4.0.zip && \ - curl -o /tmp/sqlplus.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sqlplus-linux.x64-11.2.0.4.0.zip && \ - unzip -d /usr/local/ /tmp/basic.zip && \ - unzip -d /usr/local/ /tmp/sdk.zip && \ - unzip -d /usr/local/ /tmp/sqlplus.zip \ - ## Links are required for older SDKs - && ln -s /usr/local/instantclient_11_2 ${ORACLE_HOME} && \ - ln -s ${ORACLE_HOME}/libclntsh.so.* ${ORACLE_HOME}/libclntsh.so && \ - ln -s ${ORACLE_HOME}/libocci.so.* ${ORACLE_HOME}/libocci.so && \ - ln -s ${ORACLE_HOME}/lib* /usr/lib && \ - ln -s ${ORACLE_HOME}/sqlplus /usr/bin/sqlplus &&\ - ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so.1 && \ - ## Build OCI8 with PECL - echo "instantclient,${ORACLE_HOME}" | pecl install oci8 && \ - echo 'extension=oci8.so' > /etc/php7/conf.d/30-oci8.ini \ - # Clean up - apk del php7-pear php7-dev gcc musl-dev && \ - rm -rf /tmp/*.zip /tmp/pear/ && \ - docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/usr/local/instantclient \ - && docker-php-ext-configure pdo_dblib --with-libdir=/lib \ - && docker-php-ext-install pdo_oci \ - && docker-php-ext-enable oci8 \ - && docker-php-ext-install zip && \ - # Install the zip extension - docker-php-ext-configure zip && \ - php -m | grep -q 'zip' \ -;fi + apk add make php7-pear php7-dev gcc musl-dev libnsl libaio poppler-utils libzip-dev zip unzip libaio-dev freetds-dev && \ + ## Download and unarchive Instant Client v11 + curl -o /tmp/basic.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-basic-linux.x64-11.2.0.4.0.zip && \ + curl -o /tmp/sdk.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sdk-linux.x64-11.2.0.4.0.zip && \ + curl -o /tmp/sqlplus.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sqlplus-linux.x64-11.2.0.4.0.zip && \ + unzip -d /usr/local/ /tmp/basic.zip && \ + unzip -d /usr/local/ /tmp/sdk.zip && \ + unzip -d /usr/local/ /tmp/sqlplus.zip \ + ## Links are required for older SDKs + && ln -s /usr/local/instantclient_11_2 ${ORACLE_HOME} && \ + ln -s ${ORACLE_HOME}/libclntsh.so.* ${ORACLE_HOME}/libclntsh.so && \ + ln -s ${ORACLE_HOME}/libocci.so.* ${ORACLE_HOME}/libocci.so && \ + ln -s ${ORACLE_HOME}/lib* /usr/lib && \ + ln -s ${ORACLE_HOME}/sqlplus /usr/bin/sqlplus &&\ + ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so.1 && \ + ## Build OCI8 with PECL + echo "instantclient,${ORACLE_HOME}" | pecl install oci8 && \ + echo 'extension=oci8.so' > /etc/php7/conf.d/30-oci8.ini \ + # Clean up + apk del php7-pear php7-dev gcc musl-dev && \ + rm -rf /tmp/*.zip /tmp/pear/ && \ + docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/usr/local/instantclient \ + && docker-php-ext-configure pdo_dblib --with-libdir=/lib \ + && docker-php-ext-install pdo_oci \ + && docker-php-ext-enable oci8 \ + && docker-php-ext-install zip && \ + # Install the zip extension + docker-php-ext-configure zip && \ + php -m | grep -q 'zip' \ + ;fi # Install PostgreSQL drivers: ARG INSTALL_PGSQL=false RUN if [ ${INSTALL_PGSQL} = true ]; then \ - apk --update add postgresql-dev \ - && docker-php-ext-install pdo_pgsql \ -;fi + apk --update add postgresql-dev \ + && docker-php-ext-install pdo_pgsql \ + ;fi # Install ZipArchive: ARG INSTALL_ZIP_ARCHIVE=false RUN set -eux; \ if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ - apk --update add libzip-dev && \ - if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - docker-php-ext-configure zip; \ - else \ - docker-php-ext-configure zip --with-libzip; \ - fi && \ - # Install the zip extension - docker-php-ext-install zip \ -;fi + apk --update add libzip-dev && \ + if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ] || [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + docker-php-ext-configure zip; \ + else \ + docker-php-ext-configure zip --with-libzip; \ + fi && \ + # Install the zip extension + docker-php-ext-install zip \ + ;fi # Install MySQL Client: ARG INSTALL_MYSQL_CLIENT=false RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \ - apk --update add mysql-client \ -;fi + apk --update add mysql-client \ + ;fi # Install FFMPEG: ARG INSTALL_FFMPEG=false RUN if [ ${INSTALL_FFMPEG} = true ]; then \ - apk --update add ffmpeg \ -;fi + apk --update add ffmpeg \ + ;fi # Install BBC Audio Waveform Image Generator: ARG INSTALL_AUDIOWAVEFORM=false RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ - apk add git make cmake gcc g++ libmad-dev libid3tag-dev libsndfile-dev gd-dev boost-dev libgd libpng-dev zlib-dev \ - && apk add autoconf automake libtool gettext \ - && wget https://github.com/xiph/flac/archive/1.3.3.tar.gz \ - && tar xzf 1.3.3.tar.gz \ - && cd flac-1.3.3 \ - && ./autogen.sh \ - && ./configure --enable-shared=no \ - && make \ - && make install \ - && cd .. \ - && git clone https://github.com/bbc/audiowaveform.git \ - && cd audiowaveform \ - && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ - && tar xzf release-1.10.0.tar.gz \ - && ln -s googletest-release-1.10.0/googletest googletest \ - && ln -s googletest-release-1.10.0/googlemock googlemock \ - && mkdir build \ - && cd build \ - && cmake .. \ - && make \ - && make install \ -;fi + apk add git make cmake gcc g++ libmad-dev libid3tag-dev libsndfile-dev gd-dev boost-dev libgd libpng-dev zlib-dev \ + && apk add autoconf automake libtool gettext \ + && wget https://github.com/xiph/flac/archive/1.3.3.tar.gz \ + && tar xzf 1.3.3.tar.gz \ + && cd flac-1.3.3 \ + && ./autogen.sh \ + && ./configure --enable-shared=no \ + && make \ + && make install \ + && cd .. \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ + && tar xzf release-1.10.0.tar.gz \ + && ln -s googletest-release-1.10.0/googletest googletest \ + && ln -s googletest-release-1.10.0/googlemock googlemock \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ + ;fi # Install AMQP: ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ - apk --update add -q rabbitmq-c rabbitmq-c-dev && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - printf "\n" | pecl install amqp-1.11.0beta; \ - else \ - printf "\n" | pecl install amqp; \ - fi && \ - docker-php-ext-enable amqp && \ - apk del -q rabbitmq-c-dev && \ - docker-php-ext-install sockets \ -;fi + apk --update add -q rabbitmq-c rabbitmq-c-dev && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + printf "\n" | pecl install amqp-1.11.0beta; \ + else \ + printf "\n" | pecl install amqp; \ + fi && \ + docker-php-ext-enable amqp && \ + apk del -q rabbitmq-c-dev && \ + docker-php-ext-install sockets \ + ;fi # Install Gearman: ARG INSTALL_GEARMAN=false RUN if [ ${INSTALL_GEARMAN} = true ]; then \ - sed -i "\$ahttp://dl-cdn.alpinelinux.org/alpine/edge/main" /etc/apk/repositories && \ - sed -i "\$ahttp://dl-cdn.alpinelinux.org/alpine/edge/community" /etc/apk/repositories && \ - sed -i "\$ahttp://dl-cdn.alpinelinux.org/alpine/edge/testing" /etc/apk/repositories && \ - apk --update add php7-gearman && \ - sh -c 'echo "extension=/usr/lib/php7/modules/gearman.so" > /usr/local/etc/php/conf.d/gearman.ini' \ -;fi + sed -i "\$ahttp://dl-cdn.alpinelinux.org/alpine/edge/main" /etc/apk/repositories && \ + sed -i "\$ahttp://dl-cdn.alpinelinux.org/alpine/edge/community" /etc/apk/repositories && \ + sed -i "\$ahttp://dl-cdn.alpinelinux.org/alpine/edge/testing" /etc/apk/repositories && \ + apk --update add php7-gearman && \ + sh -c 'echo "extension=/usr/lib/php7/modules/gearman.so" > /usr/local/etc/php/conf.d/gearman.ini' \ + ;fi # Install Cassandra drivers: ARG INSTALL_CASSANDRA=false RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ + echo "PHP Driver for Cassandra is not supported for PHP 8.0."; \ else \ - apk add --update --no-cache cassandra-cpp-driver libuv gmp \ - && apk add --update --no-cache cassandra-cpp-driver-dev gmp-dev --virtual .build-sec \ - && cd /usr/src \ - && git clone https://github.com/datastax/php-driver.git \ - && cd php-driver/ext \ - && phpize \ - && mkdir -p /usr/src/php-driver/build \ - && cd /usr/src/php-driver/build \ - && ../ext/configure > /dev/null \ - && make clean > /dev/null \ - && make > /dev/null 2>&1 \ - && make install \ - && docker-php-ext-enable cassandra \ - && apk del .build-sec; \ + apk add --update --no-cache cassandra-cpp-driver libuv gmp \ + && apk add --update --no-cache cassandra-cpp-driver-dev gmp-dev --virtual .build-sec \ + && cd /usr/src \ + && git clone https://github.com/datastax/php-driver.git \ + && cd php-driver/ext \ + && phpize \ + && mkdir -p /usr/src/php-driver/build \ + && cd /usr/src/php-driver/build \ + && ../ext/configure > /dev/null \ + && make clean > /dev/null \ + && make > /dev/null 2>&1 \ + && make install \ + && docker-php-ext-enable cassandra \ + && apk del .build-sec; \ fi \ -;fi + ;fi # Install Phalcon ext ARG INSTALL_PHALCON=false @@ -305,38 +305,38 @@ ARG PHALCON_VERSION ENV PHALCON_VERSION ${PHALCON_VERSION} RUN if [ $INSTALL_PHALCON = true ]; then \ - apk --update add unzip gcc make re2c bash\ - && git clone https://github.com/jbboehr/php-psr.git \ - && cd php-psr \ - && phpize \ - && ./configure \ - && make \ - && make test \ - && make install \ - && curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.zip \ - && unzip -d /tmp/ /tmp/cphalcon.zip \ - && cd /tmp/cphalcon-${PHALCON_VERSION}/build \ - && ./install \ - && rm -rf /tmp/cphalcon* \ -;fi + apk --update add unzip gcc make re2c bash\ + && git clone https://github.com/jbboehr/php-psr.git \ + && cd php-psr \ + && phpize \ + && ./configure \ + && make \ + && make test \ + && make install \ + && curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.zip \ + && unzip -d /tmp/ /tmp/cphalcon.zip \ + && cd /tmp/cphalcon-${PHALCON_VERSION}/build \ + && ./install \ + && rm -rf /tmp/cphalcon* \ + ;fi ARG INSTALL_GHOSTSCRIPT=false RUN if [ $INSTALL_GHOSTSCRIPT = true ]; then \ - apk --update add ghostscript \ -;fi + apk --update add ghostscript \ + ;fi # Install Redis package: ARG INSTALL_REDIS=false RUN if [ ${INSTALL_REDIS} = true ]; then \ - # Install Redis Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - printf "\n" | pecl install -o -f redis-4.3.0; \ - else \ - printf "\n" | pecl install -o -f redis; \ - fi; \ - rm -rf /tmp/pear; \ - docker-php-ext-enable redis \ -;fi + # Install Redis Extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + printf "\n" | pecl install -o -f redis-4.3.0; \ + else \ + printf "\n" | pecl install -o -f redis; \ + fi; \ + rm -rf /tmp/pear; \ + docker-php-ext-enable redis \ + ;fi ########################################################################### # Swoole EXTENSION @@ -345,19 +345,19 @@ RUN if [ ${INSTALL_REDIS} = true ]; then \ ARG INSTALL_SWOOLE=false RUN if [ ${INSTALL_SWOOLE} = true ]; then \ - # Install Php Swoole Extension - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ - echo '' | pecl -q install swoole-2.0.10; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ - echo '' | pecl -q install swoole-4.3.5; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ - echo '' | pecl -q install swoole-4.5.11; \ - else \ - echo '' | pecl -q install swoole; \ - fi; \ - docker-php-ext-enable swoole \ - && php -m | grep -q 'swoole' \ -;fi + # Install Php Swoole Extension + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ + echo '' | pecl -q install swoole-2.0.10; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + echo '' | pecl -q install swoole-4.3.5; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + echo '' | pecl -q install swoole-4.5.11; \ + else \ + echo '' | pecl -q install swoole; \ + fi; \ + docker-php-ext-enable swoole \ + && php -m | grep -q 'swoole' \ + ;fi ########################################################################### # Taint EXTENSION @@ -366,15 +366,15 @@ RUN if [ ${INSTALL_SWOOLE} = true ]; then \ ARG INSTALL_TAINT=false RUN if [ ${INSTALL_TAINT} = true ]; then \ - # Install Php TAINT Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - pecl install taint; \ - docker-php-ext-enable taint; \ - php -m | grep -q 'taint'; \ - else \ - echo 'taint not Support'; \ - fi \ -;fi + # Install Php TAINT Extension + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + pecl install taint; \ + docker-php-ext-enable taint; \ + php -m | grep -q 'taint'; \ + else \ + echo 'taint not Support'; \ + fi \ + ;fi ########################################################################### # Imap EXTENSION @@ -383,10 +383,10 @@ RUN if [ ${INSTALL_TAINT} = true ]; then \ ARG INSTALL_IMAP=false RUN if [ ${INSTALL_IMAP} = true ]; then \ - apk add --update imap-dev && \ - docker-php-ext-configure imap --with-imap --with-imap-ssl && \ - docker-php-ext-install imap \ -;fi + apk add --update imap-dev && \ + docker-php-ext-configure imap --with-imap --with-imap-ssl && \ + docker-php-ext-install imap \ + ;fi ########################################################################### # XMLRPC: @@ -395,14 +395,14 @@ RUN if [ ${INSTALL_IMAP} = true ]; then \ ARG INSTALL_XMLRPC=false RUN if [ ${INSTALL_XMLRPC} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install xmlrpc-1.0.0RC2; \ - docker-php-ext-enable xmlrpc; \ - else \ - docker-php-ext-install xmlrpc; \ - fi; \ - php -m | grep -r 'xmlrpc'; \ - fi + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ + pecl install xmlrpc-1.0.0RC2; \ + docker-php-ext-enable xmlrpc; \ + else \ + docker-php-ext-install xmlrpc; \ + fi; \ + php -m | grep -r 'xmlrpc'; \ + fi ########################################################################### # PHP Memcached: @@ -414,13 +414,44 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \ apk --update add libmemcached-dev; \ # Install the php memcached extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install memcached-2.2.0; \ + pecl install memcached-2.2.0; \ else \ - pecl install memcached; \ + pecl install memcached; \ fi; \ docker-php-ext-enable memcached; \ php -m | grep -r 'memcached'; \ -fi + fi + +########################################################################### +# SQL SERVER: +########################################################################### + +ARG INSTALL_MSSQL=false + +RUN set -eux; \ + if [ ${INSTALL_MSSQL} = true ]; then \ + apk add --update gnupg \ + ########################################################################### + # Ref from: + # - https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15#alpine17 + ########################################################################### + # Add Microsoft repo for Microsoft ODBC Driver 17 for Linux + # Driver version 17.5 or higher is required for Alpine support. + # Download the desired package(s) + && curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.8.1.1-1_amd64.apk \ + # Verify signature, if 'gpg' is missing install it using 'apk add gnupg': + && curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.8.1.1-1_amd64.sig \ + && curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import - \ + && gpg --verify msodbcsql17_17.8.1.1-1_amd64.sig msodbcsql17_17.8.1.1-1_amd64.apk \ + # Install the package(s) + && apk add --allow-untrusted msodbcsql17_17.8.1.1-1_amd64.apk unixodbc-dev \ + && pecl install sqlsrv pdo_sqlsrv \ + # && echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/10_pdo_sqlsrv.ini + # && echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/00_sqlsrv.ini + && docker-php-ext-enable pdo_sqlsrv sqlsrv \ + && php -m | grep -q 'pdo_sqlsrv' \ + && php -m | grep -q 'sqlsrv' \ + ;fi ########################################################################### # PHP SSDB: @@ -431,23 +462,23 @@ USER root ARG INSTALL_SSDB=false RUN set -xe; \ - if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ - apk --update add sudo wget && \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ - else \ - curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ - fi \ - && mkdir -p /tmp/ssdb-client-php \ - && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ - && cd /tmp/ssdb-client-php \ - && phpize \ - && ./configure \ - && make \ - && make install \ - && rm /tmp/ssdb-client-php.tar.gz \ - && docker-php-ext-enable ssdb \ -;fi + if [ ${INSTALL_SSDB} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") != "8" ]; then \ + apk --update add sudo wget && \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/php7.tar.gz; \ + else \ + curl -L -o /tmp/ssdb-client-php.tar.gz https://github.com/jonnywang/phpssdb/archive/master.tar.gz; \ + fi \ + && mkdir -p /tmp/ssdb-client-php \ + && tar -C /tmp/ssdb-client-php -zxvf /tmp/ssdb-client-php.tar.gz --strip 1 \ + && cd /tmp/ssdb-client-php \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && rm /tmp/ssdb-client-php.tar.gz \ + && docker-php-ext-enable ssdb \ + ;fi # #-------------------------------------------------------------------------- @@ -469,7 +500,7 @@ ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"] # # If you need to modify this image, feel free to do it right here. # - # -- Your awesome modifications go here -- # +# -- Your awesome modifications go here -- # # #-------------------------------------------------------------------------- @@ -487,6 +518,6 @@ RUN php -v | head -n 1 | grep -q "PHP ${PHP_VERSION}." # Clean up RUN rm /var/cache/apk/* \ - && mkdir -p /var/www + && mkdir -p /var/www WORKDIR /etc/supervisor/conf.d/ From 2d09864c96b55ce1208a33b75726273d1703c822 Mon Sep 17 00:00:00 2001 From: Nisar Ahmed Date: Mon, 6 Sep 2021 12:00:58 +1000 Subject: [PATCH 266/372] PHP-FPM: Fix arguments passed to PHP-FPM Dockerfile to install NEWRELIC --- php-fpm/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 531b68bc..d6638a9e 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1132,8 +1132,8 @@ RUN if [ ${NEW_RELIC} = true ]; then \ /tmp/newrelic-php5-*/newrelic-install install && \ rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* && \ sed -i \ - -e 's/"REPLACE_WITH_REAL_KEY"/"${NEW_RELIC_KEY}"/' \ - -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "${NEW_RELIC_APP_NAME}"/' \ + -e 's/"REPLACE_WITH_REAL_KEY"/"'${NEW_RELIC_KEY}'"/' \ + -e 's/newrelic.appname = "PHP Application"/newrelic.appname = "'${NEW_RELIC_APP_NAME}'"/' \ -e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.daemon.app_connect_timeout=15s/' \ -e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.start_timeout=5s/' \ /usr/local/etc/php/conf.d/newrelic.ini \ From 2117e7765bb9485a398bd637963c688efcf71a2f Mon Sep 17 00:00:00 2001 From: lila Date: Tue, 7 Sep 2021 22:46:51 +0800 Subject: [PATCH 267/372] laravel octane nginx configuration added --- nginx/sites/octane.conf.example | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 nginx/sites/octane.conf.example diff --git a/nginx/sites/octane.conf.example b/nginx/sites/octane.conf.example new file mode 100644 index 00000000..57b5e7d4 --- /dev/null +++ b/nginx/sites/octane.conf.example @@ -0,0 +1,56 @@ +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +upstream octane { + server workspace:8000 weight=5 max_fails=3 fail_timeout=30s; + keepalive 16; +} + +server { + listen 80; + listen [::]:80; + server_name octane.test; + server_tokens off; + root /var/www/octane/public; + + index index.php; + + charset utf-8; + + location /index.php { + try_files /not_exists @octane; + } + + location / { + try_files $uri $uri/ @octane; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + error_page 404 /index.php; + + location @octane { + set $suffix ""; + + if ($uri = /index.php) { + set $suffix ?$query_string; + } + + proxy_http_version 1.1; + proxy_set_header Host $http_host; + proxy_set_header Scheme $scheme; + proxy_set_header SERVER_PORT $server_port; + proxy_set_header REMOTE_ADDR $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + proxy_pass http://octane$suffix; + } + + error_log /var/log/nginx/octane_error.log; + access_log /var/log/nginx/octane_access.log; +} \ No newline at end of file From 71d73e0d837f961219dce86fd8f15b908996d4a1 Mon Sep 17 00:00:00 2001 From: lila Date: Tue, 7 Sep 2021 22:47:55 +0800 Subject: [PATCH 268/372] fix for laravel octane watch --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index 4bd260d9..3794dac9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -192,6 +192,7 @@ services: - DOCKER_TLS_VERIFY=1 - DOCKER_TLS_CERTDIR=/certs - DOCKER_CERT_PATH=/certs/client + - CHOKIDAR_USEPOLLING=true networks: - frontend - backend From a8be1768b92be739fff4ff73f18653d73b4bbdf3 Mon Sep 17 00:00:00 2001 From: eric-reichenbach <8860625+eric-reichenbach@users.noreply.github.com> Date: Fri, 10 Sep 2021 09:04:53 +0200 Subject: [PATCH 269/372] Fix the python dependancies in laravel echo server The build fail with the previous Dockerfile --- laravel-echo-server/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/laravel-echo-server/Dockerfile b/laravel-echo-server/Dockerfile index 26a64c1a..5f6d41b8 100644 --- a/laravel-echo-server/Dockerfile +++ b/laravel-echo-server/Dockerfile @@ -16,8 +16,8 @@ RUN if [ ${CHANGE_SOURCE} = true ]; then \ ;fi RUN apk add --update \ - python \ - python-dev \ + python3 \ + python3-dev \ py-pip \ build-base From 70ff1d6da74ae9bc1f1ee8b8de1caecf47823e30 Mon Sep 17 00:00:00 2001 From: Adam Ducho Date: Fri, 10 Sep 2021 09:32:43 +0200 Subject: [PATCH 270/372] php fix oci8 versions --- php-fpm/Dockerfile | 6 ++++-- workspace/Dockerfile | 12 +++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d6638a9e..19c45270 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -602,9 +602,11 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ freetds-dev && \ # Install PHP extensions if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.10; \ - else \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.12; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ + else \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ fi \ && docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/opt/oracle/instantclient_12_1,12.1 \ && docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index d017a9d6..97be9629 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -903,11 +903,13 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ && apt-get install --no-install-recommends -y \ libaio-dev && \ # Install PHP extensions - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.10; \ - else \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ - fi \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.12; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ + else \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ + fi \ && echo "extension=oci8.so" >> /etc/php/${LARADOCK_PHP_VERSION}/cli/php.ini \ && php -m | grep -q 'oci8' \ ;fi From 5b04b8a6d192d5a0c97348ed0741053de1b96ce9 Mon Sep 17 00:00:00 2001 From: Adam Ducho Date: Fri, 10 Sep 2021 09:36:58 +0200 Subject: [PATCH 271/372] php fix oci8 versions --- workspace/Dockerfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 97be9629..80e6978a 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -903,13 +903,13 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ && apt-get install --no-install-recommends -y \ libaio-dev && \ # Install PHP extensions - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.12; \ - elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ - else \ - echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ - fi \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.12; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ + else \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ + fi \ && echo "extension=oci8.so" >> /etc/php/${LARADOCK_PHP_VERSION}/cli/php.ini \ && php -m | grep -q 'oci8' \ ;fi From 7511d4f148ccf3ab55a86b8fc800339a25842f3a Mon Sep 17 00:00:00 2001 From: Geovanek Date: Tue, 14 Sep 2021 09:43:27 -0300 Subject: [PATCH 272/372] Set phyton version to work laravel-echo-server --- .env.example | 1027 -------------------------------- laravel-echo-server/Dockerfile | 6 +- workspace/crontab/laradock | 2 + 3 files changed, 5 insertions(+), 1030 deletions(-) delete mode 100644 .env.example diff --git a/.env.example b/.env.example deleted file mode 100644 index bad14536..00000000 --- a/.env.example +++ /dev/null @@ -1,1027 +0,0 @@ -########################################################### -###################### General Setup ###################### -########################################################### - -### Paths ################################################# - -# Point to the path of your applications code on your host -APP_CODE_PATH_HOST=../ - -# Point to where the `APP_CODE_PATH_HOST` should be in the container -APP_CODE_PATH_CONTAINER=/var/www - -# You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy` -APP_CODE_CONTAINER_FLAG=:cached - -# Choose storage path on your machine. For all storage systems -DATA_PATH_HOST=~/.laradock/data - -### Drivers ################################################ - -# All volumes driver -VOLUMES_DRIVER=local - -# All Networks driver -NETWORKS_DRIVER=bridge - -### Docker compose files ################################## - -# Select which docker-compose files to include. If using docker-sync append `:docker-compose.sync.yml` at the end -COMPOSE_FILE=docker-compose.yml - -# Change the separator from : to ; on Windows -COMPOSE_PATH_SEPARATOR=: - -# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have separate containers per project. -COMPOSE_PROJECT_NAME=laradock - -### PHP Version ########################################### - -# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). -# Accepted values: 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 -PHP_VERSION=7.3 - -### Phalcon Version ########################################### - -# Select a Phalcon version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 3.4.0+ -PHALCON_VERSION=4.0.5 - -### PHP Interpreter ####################################### - -# Select the PHP Interpreter. Accepted values: hhvm - php-fpm -PHP_INTERPRETER=php-fpm - -### Docker Host IP ######################################## - -# Enter your Docker Host IP (will be appended to /etc/hosts). Default is `10.0.75.1` -DOCKER_HOST_IP=10.0.75.1 - -### Remote Interpreter #################################### - -# Choose a Remote Interpreter entry matching name. Default is `laradock` -PHP_IDE_CONFIG=serverName=laradock - -### PHP DOWNGRADEOPENSSL TLS AND SECLEVEL ################# - -PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=false - -### Windows Path ########################################## - -# A fix for Windows users, to ensure the application path works -COMPOSE_CONVERT_WINDOWS_PATHS=1 - -### Environment ########################################### - -# If you need to change the sources (i.e. to China), set CHANGE_SOURCE to true -CHANGE_SOURCE=false -# Set ORACLE INSTANT_CLIENT_MIRROR option if you want to use Intranet improve download, you can download files first -ORACLE_INSTANT_CLIENT_MIRROR=https://github.com/diogomascarenha/oracle-instantclient/raw/master/ - -### Docker Sync ########################################### - -# If you are using Docker Sync. For `osx` use 'native_osx', for `windows` use 'unison', for `linux` docker-sync is not required -DOCKER_SYNC_STRATEGY=native_osx - -### Install Oh My ZSH! #################################### - -# If you want to use "Oh My ZSH!" with Laravel autocomplete plugin, set SHELL_OH_MY_ZSH to true. - -SHELL_OH_MY_ZSH=false -SHELL_OH_MY_ZSH_AUTOSUGESTIONS=false -SHELL_OH_MY_ZSH_ALIASES=false - -########################################################### -################ Containers Customization ################# -########################################################### - -### WORKSPACE ############################################# - -WORKSPACE_BASE_IMAGE_TAG_PREFIX=latest -WORKSPACE_COMPOSER_GLOBAL_INSTALL=true -WORKSPACE_COMPOSER_VERSION=2 -WORKSPACE_COMPOSER_AUTH=false -WORKSPACE_COMPOSER_REPO_PACKAGIST= -WORKSPACE_NVM_NODEJS_ORG_MIRROR= -WORKSPACE_INSTALL_NODE=true -WORKSPACE_NODE_VERSION=node -WORKSPACE_NPM_REGISTRY= -WORKSPACE_NPM_FETCH_RETRIES=2 -WORKSPACE_NPM_FETCH_RETRY_FACTOR=10 -WORKSPACE_NPM_FETCH_RETRY_MINTIMEOUT=10000 -WORKSPACE_NPM_FETCH_RETRY_MAXTIMEOUT=60000 -WORKSPACE_INSTALL_PNPM=false -WORKSPACE_INSTALL_YARN=true -WORKSPACE_YARN_VERSION=latest -WORKSPACE_INSTALL_NPM_GULP=true -WORKSPACE_INSTALL_NPM_BOWER=false -WORKSPACE_INSTALL_NPM_VUE_CLI=true -WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false -WORKSPACE_INSTALL_PHPREDIS=true -WORKSPACE_INSTALL_WORKSPACE_SSH=false -WORKSPACE_INSTALL_SUBVERSION=false -WORKSPACE_INSTALL_BZ2=false -WORKSPACE_INSTALL_GMP=false -WORKSPACE_INSTALL_GNUPG=false -WORKSPACE_INSTALL_XDEBUG=false -WORKSPACE_INSTALL_PCOV=false -WORKSPACE_INSTALL_PHPDBG=false -WORKSPACE_INSTALL_SSH2=false -WORKSPACE_INSTALL_LDAP=false -WORKSPACE_INSTALL_SOAP=false -WORKSPACE_INSTALL_XSL=false -WORKSPACE_INSTALL_SMB=false -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.4.6 -WORKSPACE_INSTALL_DRUPAL_CONSOLE=false -WORKSPACE_INSTALL_WP_CLI=false -WORKSPACE_INSTALL_AEROSPIKE=false -WORKSPACE_INSTALL_OCI8=false -WORKSPACE_INSTALL_V8JS=false -WORKSPACE_INSTALL_LARAVEL_ENVOY=false -WORKSPACE_INSTALL_LARAVEL_INSTALLER=false -WORKSPACE_INSTALL_DEPLOYER=false -WORKSPACE_INSTALL_PRESTISSIMO=false -WORKSPACE_INSTALL_LINUXBREW=false -WORKSPACE_INSTALL_MC=false -WORKSPACE_INSTALL_SYMFONY=false -WORKSPACE_INSTALL_PYTHON=false -WORKSPACE_INSTALL_PYTHON3=false -WORKSPACE_INSTALL_POWERLINE=false -WORKSPACE_INSTALL_SUPERVISOR=false -WORKSPACE_INSTALL_IMAGE_OPTIMIZERS=false -WORKSPACE_INSTALL_IMAGEMAGICK=false -WORKSPACE_IMAGEMAGICK_VERSION=latest -WORKSPACE_INSTALL_TERRAFORM=false -WORKSPACE_INSTALL_DUSK_DEPS=false -WORKSPACE_INSTALL_PG_CLIENT=false -WORKSPACE_INSTALL_PHALCON=false -WORKSPACE_INSTALL_SWOOLE=false -WORKSPACE_INSTALL_TAINT=false -WORKSPACE_INSTALL_LIBPNG=false -WORKSPACE_INSTALL_GRAPHVIZ=false -WORKSPACE_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592 -WORKSPACE_INSTALL_MYSQL_CLIENT=false -WORKSPACE_INSTALL_PING=false -WORKSPACE_INSTALL_SSHPASS=false -WORKSPACE_INSTALL_INOTIFY=false -WORKSPACE_INSTALL_FSWATCH=false -WORKSPACE_INSTALL_YAML=false -WORKSPACE_INSTALL_RDKAFKA=false -WORKSPACE_INSTALL_MAILPARSE=false -WORKSPACE_INSTALL_XMLRPC=false -WORKSPACE_PUID=1000 -WORKSPACE_PGID=1000 -WORKSPACE_CHROME_DRIVER_VERSION=2.42 -WORKSPACE_TIMEZONE=UTC -WORKSPACE_SSH_PORT=2222 -WORKSPACE_INSTALL_FFMPEG=false -WORKSPACE_INSTALL_AUDIOWAVEFORM=false -WORKSPACE_INSTALL_WKHTMLTOPDF=false -WORKSPACE_INSTALL_GNU_PARALLEL=false -WORKSPACE_INSTALL_AST=true -WORKSPACE_AST_VERSION=1.0.10 -WORKSPACE_BROWSERSYNC_HOST_PORT=3000 -WORKSPACE_BROWSERSYNC_UI_HOST_PORT=3001 -WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080 -WORKSPACE_VUE_CLI_UI_HOST_PORT=8001 -WORKSPACE_ANGULAR_CLI_SERVE_HOST_PORT=4200 -WORKSPACE_INSTALL_GIT_PROMPT=false -WORKSPACE_INSTALL_DOCKER_CLIENT=false -WORKSPACE_INSTALL_LNAV=false -WORKSPACE_INSTALL_PROTOC=false -WORKSPACE_INSTALL_PHPDECIMAL=false -WORKSPACE_INSTALL_ZOOKEEPER=false -WORKSPACE_INSTALL_SSDB=false -WORKSPACE_PROTOC_VERSION=latest -WORKSPACE_INSTALL_MEMCACHED=true - -### PHP_FPM ############################################### - -PHP_FPM_BASE_IMAGE_TAG_PREFIX=latest -PHP_FPM_INSTALL_BCMATH=true -PHP_FPM_INSTALL_MYSQLI=true -PHP_FPM_INSTALL_INTL=true -PHP_FPM_INSTALL_IMAGEMAGICK=true -PHP_FPM_IMAGEMAGICK_VERSION=latest -PHP_FPM_INSTALL_OPCACHE=true -PHP_FPM_INSTALL_IMAGE_OPTIMIZERS=true -PHP_FPM_INSTALL_PHPREDIS=true -PHP_FPM_INSTALL_MEMCACHED=false -PHP_FPM_INSTALL_BZ2=false -PHP_FPM_INSTALL_ENCHANT=false -PHP_FPM_INSTALL_GMP=false -PHP_FPM_INSTALL_GNUPG=false -PHP_FPM_INSTALL_XDEBUG=false -PHP_FPM_INSTALL_PCOV=false -PHP_FPM_INSTALL_XHPROF=false -PHP_FPM_INSTALL_PHPDBG=false -PHP_FPM_INSTALL_SMB=false -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 -PHP_FPM_INSTALL_XSL=false -PHP_FPM_INSTALL_EXIF=false -PHP_FPM_INSTALL_AEROSPIKE=false -PHP_FPM_INSTALL_OCI8=false -PHP_FPM_INSTALL_PGSQL=false -PHP_FPM_INSTALL_GHOSTSCRIPT=false -PHP_FPM_INSTALL_LDAP=false -PHP_FPM_INSTALL_PHALCON=false -PHP_FPM_INSTALL_SWOOLE=false -PHP_FPM_INSTALL_TAINT=false -PHP_FPM_INSTALL_PG_CLIENT=false -PHP_FPM_INSTALL_POSTGIS=false -PHP_FPM_INSTALL_PCNTL=false -PHP_FPM_INSTALL_CALENDAR=false -PHP_FPM_INSTALL_FAKETIME=false -PHP_FPM_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592 -PHP_FPM_INSTALL_RDKAFKA=false -PHP_FPM_INSTALL_GETTEXT=false -PHP_FPM_INSTALL_XMLRPC=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_INSTALL_WKHTMLTOPDF=false -PHP_FPM_INSTALL_PHPDECIMAL=false -PHP_FPM_INSTALL_ZOOKEEPER=false -PHP_FPM_INSTALL_SSDB=false -PHP_FPM_FFMPEG=false -PHP_FPM_AUDIOWAVEFORM=false -PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" -PHP_FPM_INSTALL_DOCKER_CLIENT=false -PHP_FPM_DEFAULT_LOCALE=POSIX -PHP_FPM_XDEBUG_PORT=9003 - -PHP_FPM_PUID=1000 -PHP_FPM_PGID=1000 - -### PHP_FPM_NEW_RELIC ##################################### - -PHP_FPM_NEW_RELIC=false -PHP_FPM_NEW_RELIC_KEY=0000 -PHP_FPM_NEW_RELIC_APP_NAME=app_name - -### PHP_WORKER ############################################ - -PHP_WORKER_INSTALL_BZ2=false -PHP_WORKER_INSTALL_GD=false -PHP_WORKER_INSTALL_IMAGEMAGICK=false -PHP_WORKER_IMAGEMAGICK_VERSION=latest -PHP_WORKER_INSTALL_GMP=false -PHP_WORKER_INSTALL_GNUPG=false -PHP_WORKER_INSTALL_LDAP=false -PHP_WORKER_INSTALL_PGSQL=false -PHP_WORKER_INSTALL_MONGO=false -PHP_WORKER_INSTALL_BCMATH=false -PHP_WORKER_INSTALL_MEMCACHED=false -# PHP_WORKER_INSTALL_OCI8 Does not work in php5.6 version -PHP_WORKER_INSTALL_OCI8=false -PHP_WORKER_INSTALL_MSSQL=false -PHP_WORKER_INSTALL_PHALCON=false -PHP_WORKER_INSTALL_SOAP=false -PHP_WORKER_INSTALL_ZIP_ARCHIVE=false -PHP_WORKER_INSTALL_MYSQL_CLIENT=false -PHP_WORKER_INSTALL_AMQP=false -PHP_WORKER_INSTALL_GHOSTSCRIPT=false -PHP_WORKER_INSTALL_SWOOLE=false -PHP_WORKER_INSTALL_TAINT=false -PHP_WORKER_INSTALL_FFMPEG=false -PHP_WORKER_INSTALL_AUDIOWAVEFORM=false -PHP_WORKER_INSTALL_CASSANDRA=false -PHP_WORKER_INSTALL_GEARMAN=false -PHP_WORKER_INSTALL_REDIS=false -PHP_WORKER_INSTALL_IMAP=false -PHP_WORKER_INSTALL_XMLRPC=false -PHP_WORKER_INSTALL_SSDB=false - -PHP_WORKER_PUID=1000 -PHP_WORKER_PGID=1000 - -### NGINX ################################################# - -NGINX_HOST_HTTP_PORT=80 -NGINX_HOST_HTTPS_PORT=443 -NGINX_HOST_LOG_PATH=./logs/nginx/ -NGINX_SITES_PATH=./nginx/sites/ -NGINX_PHP_UPSTREAM_CONTAINER=php-fpm -NGINX_PHP_UPSTREAM_PORT=9000 -NGINX_SSL_PATH=./nginx/ssl/ - -### OpenResty ################################################# - -OPENRESTY_HOST_HTTP_PORT=80 -OPENRESTY_HOST_HTTPS_PORT=443 -OPENRESTY_HOST_LOG_PATH=./logs/openresty/ -OPENRESTY_SITES_PATH=./openresty/sites/ -OPENRESTY_PHP_UPSTREAM_CONTAINER=php-fpm -OPENRESTY_PHP_UPSTREAM_PORT=9000 -OPENRESTY_SSL_PATH=./openresty/ssl/ - -### LARAVEL_HORIZON ################################################ - -LARAVEL_HORIZON_INSTALL_BZ2=false -LARAVEL_HORIZON_INSTALL_GD=false -LARAVEL_HORIZON_INSTALL_GMP=false -LARAVEL_HORIZON_INSTALL_GNUPG=false -LARAVEL_HORIZON_INSTALL_LDAP=false -LARAVEL_HORIZON_INSTALL_IMAGEMAGICK=false -LARAVEL_HORIZON_IMAGEMAGICK_VERSION=latest -LARAVEL_HORIZON_INSTALL_SOCKETS=false -LARAVEL_HORIZON_INSTALL_YAML=false -LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE=false -LARAVEL_HORIZON_INSTALL_PHPREDIS=false -LARAVEL_HORIZON_INSTALL_MONGO=false -LARAVEL_HORIZON_INSTALL_CASSANDRA=false -LARAVEL_HORIZON_INSTALL_FFMPEG=false -LARAVEL_HORIZON_INSTALL_AUDIOWAVEFORM=false -LARAVEL_HORIZON_PGID=1000 -LARAVEL_HORIZON_PUID=1000 - -### APACHE ################################################ - -APACHE_HOST_HTTP_PORT=80 -APACHE_HOST_HTTPS_PORT=443 -APACHE_HOST_LOG_PATH=./logs/apache2 -APACHE_SITES_PATH=./apache2/sites -APACHE_PHP_UPSTREAM_CONTAINER=php-fpm -APACHE_PHP_UPSTREAM_PORT=9000 -APACHE_PHP_UPSTREAM_TIMEOUT=60 -APACHE_DOCUMENT_ROOT=/var/www/ -APACHE_SSL_PATH=./apache2/ssl/ -APACHE_INSTALL_HTTP2=false - -### MYSQL ################################################# - -MYSQL_VERSION=latest -MYSQL_DATABASE=default -MYSQL_USER=default -MYSQL_PASSWORD=secret -MYSQL_PORT=3306 -MYSQL_ROOT_PASSWORD=root -MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d - -### CLICKHOUSE ################################################# - -CLICKHOUSE_VERSION=20.9.4.76 -CLICKHOUSE_GOSU_VERSION=1.10 -CLICKHOUSE_CUSTOM_CONFIG=./clickhouse/config.xml -CLICKHOUSE_USERS_CUSTOM_CONFIG=./clickhouse/users.xml -CLICKHOUSE_USER=default -CLICKHOUSE_PASSWORD=HAHA -CLICKHOUSE_HTTP_PORT=8123 -CLICKHOUSE_CLIENT_PORT=9000 -CLICKHOUSE_NATIVE_PORT=9009 -CLICKHOUSE_ENTRYPOINT_INITDB=./clickhouse/docker-entrypoint-initdb.d -CLICKHOUSE_HOST_LOG_PATH=./logs/clickhouse - -### REDIS ################################################# - -REDIS_PORT=6379 - -### REDIS CLUSTER ######################################### - -REDIS_CLUSTER_PORT_RANGE=7000-7005 - -### SSDB ################################################# - -SSDB_PORT=16801 - -### ZooKeeper ############################################# - -ZOOKEEPER_PORT=2181 - -### Percona ############################################### - -PERCONA_DATABASE=homestead -PERCONA_USER=homestead -PERCONA_PASSWORD=secret -PERCONA_PORT=3306 -PERCONA_ROOT_PASSWORD=root -PERCONA_ENTRYPOINT_INITDB=./percona/docker-entrypoint-initdb.d - -### MSSQL ################################################# - -MSSQL_DATABASE=master -MSSQL_PASSWORD="yourStrong(!)Password" -MSSQL_PORT=1433 - -### MARIADB ############################################### - -MARIADB_VERSION=latest -MARIADB_DATABASE=default -MARIADB_USER=default -MARIADB_PASSWORD=secret -MARIADB_PORT=3306 -MARIADB_ROOT_PASSWORD=root -MARIADB_ENTRYPOINT_INITDB=./mariadb/docker-entrypoint-initdb.d - -### POSTGRES ############################################## - -POSTGRES_VERSION=alpine -POSTGRES_DB=default -POSTGRES_USER=default -POSTGRES_PASSWORD=secret -POSTGRES_PORT=5432 -POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d - -### SQS ############################################## - -SQS_NODE_HOST_PORT=9324 -SQS_MANAGEMENT_HTTP_HOST_PORT=9325 - -### RABBITMQ ############################################## - -RABBITMQ_NODE_HOST_PORT=5672 -RABBITMQ_MANAGEMENT_HTTP_HOST_PORT=15672 -RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671 - -### MERCURE ############################################## - -MERCURE_NODE_HOST_HTTP_PORT=1337 -MERCURE_NODE_HOST_HTTPS_PORT=1338 -MERCURE_PUBLISHER_JWT_KEY=secret -MERCURE_SUBSCRIBER_JWT_KEY=another_secret -MERCURE_DEBUG=debug -MERCURE_SERVER_NAME=:80 - -### MEILISEARCH ########################################### - -MEILISEARCH_HOST_PORT=7700 -MEILISEARCH_KEY=masterkey - -### ELASTICSEARCH ######################################### - -ELASTICSEARCH_HOST_HTTP_PORT=9200 -ELASTICSEARCH_HOST_TRANSPORT_PORT=9300 - -### KIBANA ################################################ - -KIBANA_HTTP_PORT=5601 - -### DEJAVU ################################################ - -DEJAVU_HTTP_PORT=1358 - -### MEMCACHED ############################################# - -MEMCACHED_HOST_PORT=11211 - -### BEANSTALKD CONSOLE #################################### - -BEANSTALKD_CONSOLE_BUILD_PATH=./beanstalkd-console -BEANSTALKD_CONSOLE_CONTAINER_NAME=beanstalkd-console -BEANSTALKD_CONSOLE_HOST_PORT=2080 - -### BEANSTALKD ############################################ - -BEANSTALKD_HOST_PORT=11300 - -### SELENIUM ############################################## - -SELENIUM_PORT=4444 - -### MINIO ################################################# - -MINIO_PORT=9000 -MINIO_CONSOLE_PORT=9001 -MINIO_ROOT_USER=laradock -MINIO_ROOT_PASSWORD=laradock - -### ADMINER ############################################### - -ADM_PORT=8081 -ADM_INSTALL_MSSQL=false -ADM_PLUGINS= -ADM_DESIGN=pepa-linha -ADM_DEFAULT_SERVER=mysql - -### PHP MY ADMIN ########################################## - -# Accepted values: mariadb - mysql - -PMA_DB_ENGINE=mysql - -# Credentials/Port: - -PMA_USER=default -PMA_PASSWORD=secret -PMA_ROOT_PASSWORD=secret -PMA_PORT=8081 -PMA_MAX_EXECUTION_TIME=600 -PMA_MEMORY_LIMIT=256M -PMA_UPLOAD_LIMIT=2G - -### MAILDEV ############################################### - -MAILDEV_HTTP_PORT=1080 -MAILDEV_SMTP_PORT=25 - -### VARNISH ############################################### - -VARNISH_CONFIG=/etc/varnish/default.vcl -VARNISH_PORT=6081 -VARNISH_BACKEND_PORT=81 -VARNISHD_PARAMS="-p default_ttl=3600 -p default_grace=3600" - -### Varnish ############################################### - -# Proxy 1 -VARNISH_PROXY1_CACHE_SIZE=128m -VARNISH_PROXY1_BACKEND_HOST=workspace -VARNISH_PROXY1_SERVER=SERVER1 - -# Proxy 2 -VARNISH_PROXY2_CACHE_SIZE=128m -VARNISH_PROXY2_BACKEND_HOST=workspace -VARNISH_PROXY2_SERVER=SERVER2 - -### HAPROXY ############################################### - -HAPROXY_HOST_HTTP_PORT=8085 - -### JENKINS ############################################### - -JENKINS_HOST_HTTP_PORT=8090 -JENKINS_HOST_SLAVE_AGENT_PORT=50000 -JENKINS_HOME=./jenkins/jenkins_home - -### CONFLUENCE ############################################### -CONFLUENCE_POSTGRES_INIT=true -CONFLUENCE_VERSION=6.13-ubuntu-18.04-adoptopenjdk8 -CONFLUENCE_POSTGRES_DB=laradock_confluence -CONFLUENCE_POSTGRES_USER=laradock_confluence -CONFLUENCE_POSTGRES_PASSWORD=laradock_confluence -CONFLUENCE_HOST_HTTP_PORT=8090 - -### GRAFANA ############################################### - -GRAFANA_PORT=3000 - -### GRAYLOG ############################################### - -# password must be 16 characters long -GRAYLOG_PASSWORD=somesupersecretpassword -# sha256 representation of the password -GRAYLOG_SHA256_PASSWORD=b1cb6e31e172577918c9e7806c572b5ed8477d3f57aa737bee4b5b1db3696f09 -GRAYLOG_PORT=9000 -GRAYLOG_SYSLOG_TCP_PORT=514 -GRAYLOG_SYSLOG_UDP_PORT=514 -GRAYLOG_GELF_TCP_PORT=12201 -GRAYLOG_GELF_UDP_PORT=12201 - -### BLACKFIRE ############################################# - -# Create an account on blackfire.io. Don't enable blackfire and xDebug at the same time. # visit https://blackfire.io/docs/24-days/06-installation#install-probe-debian for more info. -INSTALL_BLACKFIRE=false -BLACKFIRE_CLIENT_ID="" -BLACKFIRE_CLIENT_TOKEN="" -BLACKFIRE_SERVER_ID="" -BLACKFIRE_SERVER_TOKEN="" - -### AEROSPIKE ############################################# - -AEROSPIKE_SERVICE_PORT=3000 -AEROSPIKE_FABRIC_PORT=3001 -AEROSPIKE_HEARTBEAT_PORT=3002 -AEROSPIKE_INFO_PORT=3003 -AEROSPIKE_STORAGE_GB=1 -AEROSPIKE_MEM_GB=1 -AEROSPIKE_NAMESPACE=test - -### RETHINKDB ############################################# - -RETHINKDB_PORT=8090 - -### MONGODB ############################################### - -MONGODB_PORT=27017 - -### CADDY ################################################# - -CADDY_HOST_HTTP_PORT=80 -CADDY_HOST_HTTPS_PORT=443 -CADDY_HOST_LOG_PATH=./logs/caddy -CADDY_CONFIG_PATH=./caddy/caddy - -### LARAVEL ECHO SERVER ################################### - -LARAVEL_ECHO_SERVER_PORT=6001 - -### THUMBOR ############################################################################################################ - -THUMBOR_PORT=8000 -THUMBOR_LOG_FORMAT="%(asctime)s %(name)s:%(levelname)s %(message)s" -THUMBOR_LOG_DATE_FORMAT="%Y-%m-%d %H:%M:%S" -MAX_WIDTH=0 -MAX_HEIGHT=0 -MIN_WIDTH=1 -MIN_HEIGHT=1 -ALLOWED_SOURCES=[] -QUALITY=80 -WEBP_QUALITY=None -PNG_COMPRESSION_LEVEL=6 -AUTO_WEBP=False -MAX_AGE=86400 -MAX_AGE_TEMP_IMAGE=0 -RESPECT_ORIENTATION=False -IGNORE_SMART_ERRORS=False -PRESERVE_EXIF_INFO=False -ALLOW_ANIMATED_GIFS=True -USE_GIFSICLE_ENGINE=False -USE_BLACKLIST=False -LOADER=thumbor.loaders.http_loader -STORAGE=thumbor.storages.file_storage -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -RESULT_STORAGE=thumbor.result_storages.file_storage -ENGINE=thumbor.engines.pil -SECURITY_KEY="MY_SECURE_KEY" -ALLOW_UNSAFE_URL=True -ALLOW_OLD_URLS=True -FILE_LOADER_ROOT_PATH=/data/loader -HTTP_LOADER_CONNECT_TIMEOUT=5 -HTTP_LOADER_REQUEST_TIMEOUT=20 -HTTP_LOADER_FOLLOW_REDIRECTS=True -HTTP_LOADER_MAX_REDIRECTS=5 -HTTP_LOADER_FORWARD_USER_AGENT=False -HTTP_LOADER_DEFAULT_USER_AGENT="Thumbor/5.2.1" -HTTP_LOADER_PROXY_HOST=None -HTTP_LOADER_PROXY_PORT=None -HTTP_LOADER_PROXY_USERNAME=None -HTTP_LOADER_PROXY_PASSWORD=None -HTTP_LOADER_CA_CERTS=None -HTTP_LOADER_VALIDATE_CERTS=True -HTTP_LOADER_CLIENT_KEY=None -HTTP_LOADER_CLIENT_CERT=None -HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT=False -STORAGE_EXPIRATION_SECONDS=2592000 -STORES_CRYPTO_KEY_FOR_EACH_IMAGE=False -FILE_STORAGE_ROOT_PATH=/data/storage -UPLOAD_MAX_SIZE=0 -UPLOAD_ENABLED=False -UPLOAD_PHOTO_STORAGE=thumbor.storages.file_storage -UPLOAD_DELETE_ALLOWED=False -UPLOAD_PUT_ALLOWED=False -UPLOAD_DEFAULT_FILENAME=image -MONGO_STORAGE_SERVER_HOST=mongo -MONGO_STORAGE_SERVER_PORT=27017 -MONGO_STORAGE_SERVER_DB=thumbor -MONGO_STORAGE_SERVER_COLLECTION=images -REDIS_STORAGE_SERVER_HOST=redis -REDIS_STORAGE_SERVER_PORT=6379 -REDIS_STORAGE_SERVER_DB=0 -REDIS_STORAGE_SERVER_PASSWORD=None -REDIS_RESULT_STORAGE_SERVER_HOST=redis -REDIS_RESULT_STORAGE_SERVER_PORT=6379 -REDIS_RESULT_STORAGE_SERVER_DB=0 -REDIS_RESULT_STORAGE_SERVER_PASSWORD=None -MEMCACHE_STORAGE_SERVERS=["localhost:11211",] -MIXED_STORAGE_FILE_STORAGE=thumbor.storages.no_storage -MIXED_STORAGE_CRYPTO_STORAGE=thumbor.storages.no_storage -MIXED_STORAGE_DETECTOR_STORAGE=thumbor.storages.no_storage -META_CALLBACK_NAME=None -DETECTORS=[] -FACE_DETECTOR_CASCADE_FILE=haarcascade_frontalface_alt.xml -OPTIMIZERS=[] -JPEGTRAN_PATH=/usr/bin/jpegtran -PROGRESSIVE_JPEG=True -FILTERS="[thumbor.filters.brightness, thumbor.filters.contrast, thumbor.filters.rgb, thumbor.filters.round_corner, thumbor.filters.quality, thumbor.filters.noise, thumbor.filters.watermark, thumbor.filters.equalize, thumbor.filters.fill, thumbor.filters.sharpen, thumbor.filters.strip_icc, thumbor.filters.frame, thumbor.filters.grayscale, thumbor.filters.rotate, thumbor.filters.format, thumbor.filters.max_bytes, thumbor.filters.convolution, thumbor.filters.blur, thumbor.filters.extract_focal, thumbor.filters.no_upscale]" -RESULT_STORAGE_EXPIRATION_SECONDS=0 -RESULT_STORAGE_FILE_STORAGE_ROOT_PATH=/data/result_storage -RESULT_STORAGE_STORES_UNSAFE=False -REDIS_QUEUE_SERVER_HOST=redis -REDIS_QUEUE_SERVER_PORT=6379 -REDIS_QUEUE_SERVER_DB="0" -REDIS_QUEUE_SERVER_PASSWORD=None -SQS_QUEUE_KEY_ID=None -SQS_QUEUE_KEY_SECRET=None -SQS_QUEUE_REGION=us-east-1 -USE_CUSTOM_ERROR_HANDLING=False -ERROR_HANDLER_MODULE=thumbor.error_handlers.sentry -ERROR_FILE_LOGGER=None -ERROR_FILE_NAME_USE_CONTEXT="False" -SENTRY_DSN_URL= -TC_AWS_REGION=eu-west-1 -TC_AWS_ENDPOINT=None -TC_AWS_STORAGE_BUCKET= -TC_AWS_STORAGE_ROOT_PATH= -TC_AWS_LOADER_BUCKET= -TC_AWS_LOADER_ROOT_PATH= -TC_AWS_RESULT_STORAGE_BUCKET= -TC_AWS_RESULT_STORAGE_ROOT_PATH= -TC_AWS_STORAGE_SSE=False -TC_AWS_STORAGE_RRS=False -TC_AWS_ENABLE_HTTP_LOADER=False -TC_AWS_ALLOWED_BUCKETS=False -TC_AWS_STORE_METADATA=False - -### SOLR ################################################## - -SOLR_VERSION=5.5 -SOLR_PORT=8983 -SOLR_DATAIMPORTHANDLER_MYSQL=false -SOLR_DATAIMPORTHANDLER_MSSQL=false - -### GITLAB ############################################### -GITLAB_POSTGRES_INIT=true -GITLAB_HOST_HTTP_PORT=8989 -GITLAB_HOST_HTTPS_PORT=9898 -GITLAB_HOST_SSH_PORT=2289 -GITLAB_DOMAIN_NAME=http://localhost -GITLAB_ROOT_PASSWORD=laradock -GITLAB_HOST_LOG_PATH=./logs/gitlab -GITLAB_POSTGRES_HOST=postgres -GITLAB_POSTGRES_USER=laradock_gitlab -GITLAB_POSTGRES_PASSWORD=laradock_gitlab -GITLAB_POSTGRES_DB=laradock_gitlab - -### GITLAB-RUNNER ############################################### -GITLAB_CI_SERVER_URL=http://localhost:8989 -GITLAB_RUNNER_REGISTRATION_TOKEN="" -GITLAB_REGISTER_NON_INTERACTIVE=true - -### JUPYTERHUB ############################################### -JUPYTERHUB_POSTGRES_INIT=true -JUPYTERHUB_POSTGRES_HOST=postgres -JUPYTERHUB_POSTGRES_USER=laradock_jupyterhub -JUPYTERHUB_POSTGRES_PASSWORD=laradock_jupyterhub -JUPYTERHUB_POSTGRES_DB=laradock_jupyterhub -JUPYTERHUB_PORT=9991 -JUPYTERHUB_OAUTH_CALLBACK_URL=http://laradock:9991/hub/oauth_callback -JUPYTERHUB_OAUTH_CLIENT_ID={GITHUB_CLIENT_ID} -JUPYTERHUB_OAUTH_CLIENT_SECRET={GITHUB_CLIENT_SECRET} -JUPYTERHUB_CUSTOM_CONFIG=./jupyterhub/jupyterhub_config.py -JUPYTERHUB_USER_DATA=/jupyterhub -JUPYTERHUB_USER_LIST=./jupyterhub/userlist -JUPYTERHUB_ENABLE_NVIDIA=false - -### IPYTHON ################################################## -LARADOCK_IPYTHON_CONTROLLER_IP=127.0.0.1 - -### NETDATA ############################################### -NETDATA_PORT=19999 - -### REDISWEBUI ######################################### -REDIS_WEBUI_USERNAME=laradock -REDIS_WEBUI_PASSWORD=laradock -REDIS_WEBUI_CONNECT_HOST=redis -REDIS_WEBUI_CONNECT_PORT=6379 -REDIS_WEBUI_PORT=9987 - -### MONGOWEBUI ############################################### -MONGO_WEBUI_PORT=3000 -MONGO_WEBUI_ROOT_URL=http://localhost -MONGO_WEBUI_MONGO_URL=mongodb://mongo:27017/ -MONGO_WEBUI_INSTALL_MONGO=false - -### METABASE ############################################### -METABASE_PORT=3030 -METABASE_DB_FILE=metabase.db -METABASE_JAVA_TIMEZONE=US/Pacific - -### IDE ############################################### -IDE_THEIA_PORT=987 -IDE_WEBIDE_PORT=984 -IDE_CODIAD_PORT=985 -IDE_ICECODER_PORT=986 - -### DOCKERREGISTRY ############################################### -DOCKER_REGISTRY_PORT=5000 - -### DOCKERWEBUI ############################################### -DOCKER_WEBUI_REGISTRY_HOST=docker-registry -DOCKER_WEBUI_REGISTRY_PORT=5000 -# if have use https proxy please set to 1 -DOCKER_REGISTRY_USE_SSL=0 -DOCKER_REGISTRY_BROWSE_ONLY=false -DOCKER_WEBUI_PORT=8754 - -### MAILU ############################################### -MAILU_VERSION=latest -MAILU_RECAPTCHA_PUBLIC_KEY="" -MAILU_RECAPTCHA_PRIVATE_KEY="" -# Main mail domain -MAILU_HTTP_PORT=6080 -MAILU_HTTPS_PORT=60443 -MAILU_DOMAIN=example.com -MAILU_INIT_ADMIN_USERNAME=laradock -MAILU_INIT_ADMIN_PASSWORD=laradock -# Hostnames for this server, separated with comas -MAILU_HOSTNAMES=mail.example.com,alternative.example.com,yetanother.example.com -# Postmaster local part (will append the main mail domain) -MAILU_POSTMASTER=admin -# Set to a randomly generated 16 bytes string -MAILU_SECRET_KEY=ChangeMeChangeMe -# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail) -MAILU_TLS_FLAVOR=cert -# Authentication rate limit (per source IP address) -MAILU_AUTH_RATELIMIT="10/minute;1000/hour" -# Opt-out of statistics, replace with "True" to opt out -MAILU_DISABLE_STATISTICS=False -# Message size limit in bytes -# Default: accept messages up to 50MB -MAILU_MESSAGE_SIZE_LIMIT=50000000 -# Will relay all outgoing mails if configured -MAILU_RELAYHOST= -# Networks granted relay permissions, make sure that you include your Docker -# internal network (default to 172.17.0.0/16) -MAILU_RELAYNETS=172.16.0.0/12 -# Fetchmail delay -MAILU_FETCHMAIL_DELAY=600 -# Recipient delimiter, character used to delimiter localpart from custom address part -# e.g. localpart+custom@domain;tld -MAILU_RECIPIENT_DELIMITER=+ -# DMARC rua and ruf email -MAILU_DMARC_RUA=admin -MAILU_DMARC_RUF=admin -# Welcome email, enable and set a topic and body if you wish to send welcome -# emails to all users. -MAILU_WELCOME=True -MAILU_WELCOME_SUBJECT="Welcome to your new email account" -MAILU_WELCOME_BODY="Welcome to your new email account, if you can read this, then it is configured properly!" -# Path to the admin interface if enabled -MAILU_WEB_ADMIN=/admin -# Path to the webmail if enabled -MAILU_WEB_WEBMAIL=/webmail -# Website name -MAILU_SITENAME="Example Mail" -# Linked Website URL -MAILU_WEBSITE=http://mail.example.com -# Default password scheme used for newly created accounts and changed passwords -# (value: SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT) -MAILU_PASSWORD_SCHEME=SHA512-CRYPT -# Expose the admin interface (value: true, false) -MAILU_ADMIN=true -# Choose which webmail to run if any (values: roundcube, rainloop, none) -MAILU_WEBMAIL=rainloop -# Dav server implementation (value: radicale, none) -MAILU_WEBDAV=radicale - - -### TRAEFIK ################################################# - -TRAEFIK_HOST_HTTP_PORT=80 -TRAEFIK_HOST_HTTPS_PORT=443 -TRAEFIK_DASHBOARD_PORT=8888 -# basic authentication for traefik dashboard username: admin password:admin -TRAEFIK_DASHBOARD_USER=admin:$2y$10$lXaL3lj6raFic6rFqr2.lOBoCudAIhB6zyoqObNg290UFppiUzTTi -ACME_DOMAIN=example.org -ACME_EMAIL=email@example.org - - -### MOSQUITTO ################################################# - -MOSQUITTO_PORT=9001 - -### COUCHDB ################################################### - -COUCHDB_PORT=5984 - -### Manticore Search ########################################## - -MANTICORE_CONFIG_PATH=./manticore/config -MANTICORE_API_PORT=9312 -MANTICORE_SPHINXQL_PORT=9306 -MANTICORE_HTTP_PORT=9308 - -### pgadmin ################################################## -# use this address http://ip6-localhost:5050 -PGADMIN_PORT=5050 -PGADMIN_DEFAULT_EMAIL=pgadmin4@pgadmin.org -PGADMIN_DEFAULT_PASSWORD=admin - -### SWAGGER EDITOR ########################################### - -SWAGGER_EDITOR_PORT=5151 - -### SWAGGER UI ############################################### - -SWAGGER_API_URL=http://generator.swagger.io/api/swagger.json -SWAGGER_UI_PORT=5555 - -### SONARQUBE ################################################ -## docker-compose up -d sonarqube -## (If you encounter a database error) -## docker-compose exec --user=root postgres -## source docker-entrypoint-initdb.d/init_sonarqube_db.sh -## (If you encounter logs error) -## docker-compose run --user=root --rm sonarqube chown sonarqube:sonarqube /opt/sonarqube/logs - -SONARQUBE_HOSTNAME=sonar.example.com -SONARQUBE_PORT=9000 -SONARQUBE_POSTGRES_INIT=true -SONARQUBE_POSTGRES_HOST=postgres -SONARQUBE_POSTGRES_DB=sonar -SONARQUBE_POSTGRES_USER=sonar -SONARQUBE_POSTGRES_PASSWORD=sonarPass - -### TOMCAT ################################################ -TOMCAT_VERSION=8.5.43 -TOMCAT_HOST_HTTP_PORT=8080 - -### CASSANDRA ################################################ - -# Cassandra Version, supported tags can be found at https://hub.docker.com/r/bitnami/cassandra/ -CASSANDRA_VERSION=latest -# Inter-node cluster communication port. Default: 7000 -CASSANDRA_TRANSPORT_PORT_NUMBER=7000 -# JMX connections port. Default: 7199 -CASSANDRA_JMX_PORT_NUMBER=7199 -# Client port. Default: 9042. -CASSANDRA_CQL_PORT_NUMBER=9042 -# Cassandra user name. Defaults: cassandra -CASSANDRA_USER=cassandra -# Password seeder will change the Cassandra default credentials at initialization. In clusters, only one node should be marked as password seeder. Default: no -CASSANDRA_PASSWORD_SEEDER=no -# Cassandra user password. Default: cassandra -CASSANDRA_PASSWORD=cassandra -# Number of tokens for the node. Default: 256. -CASSANDRA_NUM_TOKENS=256 -# Hostname used to configure Cassandra. It can be either an IP or a domain. If left empty, it will be resolved to the machine IP. -CASSANDRA_HOST= -# Cluster name to configure Cassandra.. Defaults: My Cluster -CASSANDRA_CLUSTER_NAME="My Cluster" -# : Hosts that will act as Cassandra seeds. No defaults. -CASSANDRA_SEEDS= - # Snitch name (which determines which data centers and racks nodes belong to). Default SimpleSnitch -CASSANDRA_ENDPOINT_SNITCH=SimpleSnitch - # Enable the thrift RPC endpoint. Default :true -CASSANDRA_ENABLE_RPC=true -# Datacenter name for the cluster. Ignored in SimpleSnitch endpoint snitch. Default: dc1. -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: 4730) -GEARMAN_PORT=4730 -# 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 - -### ELK Stack ################################################## -ELK_VERSION=7.9.1 - -### Tarantool ################################################## -TARANTOOL_PORT=3301 -TARANTOOL_ADMIN_PORT=8002 - -### NATS ################################################## -NATS_CLIENT_PORT=4222 -NATS_MONITORING_PORT=6222 -NATS_ROUTE_PORT=8222 diff --git a/laravel-echo-server/Dockerfile b/laravel-echo-server/Dockerfile index 26a64c1a..bbdd54d5 100644 --- a/laravel-echo-server/Dockerfile +++ b/laravel-echo-server/Dockerfile @@ -16,9 +16,9 @@ RUN if [ ${CHANGE_SOURCE} = true ]; then \ ;fi RUN apk add --update \ - python \ - python-dev \ - py-pip \ + python3 \ + python3-dev \ + py3-pip \ build-base RUN npm install diff --git a/workspace/crontab/laradock b/workspace/crontab/laradock index d21529bf..0ebfe935 100644 --- a/workspace/crontab/laradock +++ b/workspace/crontab/laradock @@ -1 +1,3 @@ * * * * * laradock /usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1 + +* * * * * cd /var/www/artisan && php artisan schedule:run >> /dev/null 2>&1 \ No newline at end of file From 2dc5954bbfd909e7cefe89ccb5c2b632d7361ae7 Mon Sep 17 00:00:00 2001 From: Marcos Kubis Date: Sun, 19 Sep 2021 17:48:42 -0300 Subject: [PATCH 273/372] Add php trader extension --- .env.example | 2 ++ docker-compose.yml | 2 ++ php-fpm/Dockerfile | 13 +++++++++++++ workspace/Dockerfile | 15 +++++++++++++++ 4 files changed, 32 insertions(+) diff --git a/.env.example b/.env.example index bad14536..37a46465 100644 --- a/.env.example +++ b/.env.example @@ -198,6 +198,7 @@ WORKSPACE_INSTALL_PROTOC=false WORKSPACE_INSTALL_PHPDECIMAL=false WORKSPACE_INSTALL_ZOOKEEPER=false WORKSPACE_INSTALL_SSDB=false +WORKSPACE_INSTALL_TRADER=false WORKSPACE_PROTOC_VERSION=latest WORKSPACE_INSTALL_MEMCACHED=true @@ -262,6 +263,7 @@ PHP_FPM_INSTALL_WKHTMLTOPDF=false PHP_FPM_INSTALL_PHPDECIMAL=false PHP_FPM_INSTALL_ZOOKEEPER=false PHP_FPM_INSTALL_SSDB=false +PHP_FPM_INSTALL_TRADER=false PHP_FPM_FFMPEG=false PHP_FPM_AUDIOWAVEFORM=false PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" diff --git a/docker-compose.yml b/docker-compose.yml index 0538fe9f..295be6c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -166,6 +166,7 @@ services: - INSTALL_PHPDECIMAL=${WORKSPACE_INSTALL_PHPDECIMAL} - INSTALL_ZOOKEEPER=${WORKSPACE_INSTALL_ZOOKEEPER} - INSTALL_SSDB=${WORKSPACE_INSTALL_SSDB} + - INSTALL_TRADER=${WORKSPACE_INSTALL_TRADER} - PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION} - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} - INSTALL_MEMCACHED=${WORKSPACE_INSTALL_MEMCACHED} @@ -267,6 +268,7 @@ services: - INSTALL_PHPDECIMAL=${PHP_FPM_INSTALL_PHPDECIMAL} - INSTALL_ZOOKEEPER=${PHP_FPM_INSTALL_ZOOKEEPER} - INSTALL_SSDB=${PHP_FPM_INSTALL_SSDB} + - INSTALL_TRADER=${PHP_FPM_INSTALL_TRADER} - DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d6638a9e..ab63bccd 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1029,6 +1029,19 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ && apt -f install \ ;fi +##################################### +# trader: +##################################### + +USER root + +ARG INSTALL_TRADER=false + +RUN if [ ${INSTALL_TRADER} = true ]; then \ + pecl install trader \ + && echo "extension=trader.so" >> $PHP_INI_DIR/conf.d/trader.ini \ +;fi + ########################################################################### # Mailparse extension: ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index d017a9d6..a44f27c7 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1668,6 +1668,21 @@ RUN set -xe; \ && rm /tmp/ssdb-client-php.tar.gz \ && docker-php-ext-enable ssdb \ ;fi + +##################################### +# trader: +##################################### + +USER root + +ARG INSTALL_TRADER=false + +RUN if [ ${INSTALL_TRADER} = true ]; then \ + pecl install trader \ + && echo "extension=trader.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/trader.ini \ + && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/trader.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-trader.ini \ +;fi + # #-------------------------------------------------------------------------- # Final Touch From aaf04367e61b4d83cc3f3eeb7854aeaaee637b02 Mon Sep 17 00:00:00 2001 From: Gautier DELEGLISE Date: Mon, 20 Sep 2021 11:11:45 +0200 Subject: [PATCH 274/372] :bug: duplicates apt-get install --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d6638a9e..3ec7ecdd 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -787,7 +787,7 @@ RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \ ARG INSTALL_SMB=false RUN if [ ${INSTALL_SMB} = true ]; then \ - apt-get install apt-get install -yqq smbclient libsmbclient-dev coreutils && \ + apt-get install -yqq smbclient libsmbclient-dev coreutils && \ pecl install smbclient && \ docker-php-ext-enable smbclient \ ;fi From 147ff33530b6ec40c75de303a97bc49f158042a7 Mon Sep 17 00:00:00 2001 From: Gautier DELEGLISE Date: Mon, 20 Sep 2021 11:13:00 +0200 Subject: [PATCH 275/372] :sparkles: added mongo credentials --- docker-compose.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 0538fe9f..796d3d60 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -656,6 +656,9 @@ services: build: ./mongo ports: - "${MONGODB_PORT}:27017" + environment: + - MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME} + - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD} volumes: - ${DATA_PATH_HOST}/mongo:/data/db - ${DATA_PATH_HOST}/mongo_config:/data/configdb From 00a3e0cb64782ae8df4cf4386f431316f1380945 Mon Sep 17 00:00:00 2001 From: Gautier DELEGLISE Date: Mon, 20 Sep 2021 11:13:47 +0200 Subject: [PATCH 276/372] :sparkles: added mongo credentials --- .env.example | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.env.example b/.env.example index bad14536..4cb24645 100644 --- a/.env.example +++ b/.env.example @@ -612,6 +612,8 @@ RETHINKDB_PORT=8090 ### MONGODB ############################################### MONGODB_PORT=27017 +MONGO_USERNAME=root +MONGO_PASSWORD=example ### CADDY ################################################# From cb9d98476a05518e3d7b576c124d31a5b1b6b4d1 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Wed, 22 Sep 2021 17:20:45 +0800 Subject: [PATCH 277/372] Fix #3060 --- .env.example | 1027 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1027 insertions(+) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..bad14536 --- /dev/null +++ b/.env.example @@ -0,0 +1,1027 @@ +########################################################### +###################### General Setup ###################### +########################################################### + +### Paths ################################################# + +# Point to the path of your applications code on your host +APP_CODE_PATH_HOST=../ + +# Point to where the `APP_CODE_PATH_HOST` should be in the container +APP_CODE_PATH_CONTAINER=/var/www + +# You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy` +APP_CODE_CONTAINER_FLAG=:cached + +# Choose storage path on your machine. For all storage systems +DATA_PATH_HOST=~/.laradock/data + +### Drivers ################################################ + +# All volumes driver +VOLUMES_DRIVER=local + +# All Networks driver +NETWORKS_DRIVER=bridge + +### Docker compose files ################################## + +# Select which docker-compose files to include. If using docker-sync append `:docker-compose.sync.yml` at the end +COMPOSE_FILE=docker-compose.yml + +# Change the separator from : to ; on Windows +COMPOSE_PATH_SEPARATOR=: + +# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have separate containers per project. +COMPOSE_PROJECT_NAME=laradock + +### PHP Version ########################################### + +# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). +# Accepted values: 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 +PHP_VERSION=7.3 + +### Phalcon Version ########################################### + +# Select a Phalcon version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 3.4.0+ +PHALCON_VERSION=4.0.5 + +### PHP Interpreter ####################################### + +# Select the PHP Interpreter. Accepted values: hhvm - php-fpm +PHP_INTERPRETER=php-fpm + +### Docker Host IP ######################################## + +# Enter your Docker Host IP (will be appended to /etc/hosts). Default is `10.0.75.1` +DOCKER_HOST_IP=10.0.75.1 + +### Remote Interpreter #################################### + +# Choose a Remote Interpreter entry matching name. Default is `laradock` +PHP_IDE_CONFIG=serverName=laradock + +### PHP DOWNGRADEOPENSSL TLS AND SECLEVEL ################# + +PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=false + +### Windows Path ########################################## + +# A fix for Windows users, to ensure the application path works +COMPOSE_CONVERT_WINDOWS_PATHS=1 + +### Environment ########################################### + +# If you need to change the sources (i.e. to China), set CHANGE_SOURCE to true +CHANGE_SOURCE=false +# Set ORACLE INSTANT_CLIENT_MIRROR option if you want to use Intranet improve download, you can download files first +ORACLE_INSTANT_CLIENT_MIRROR=https://github.com/diogomascarenha/oracle-instantclient/raw/master/ + +### Docker Sync ########################################### + +# If you are using Docker Sync. For `osx` use 'native_osx', for `windows` use 'unison', for `linux` docker-sync is not required +DOCKER_SYNC_STRATEGY=native_osx + +### Install Oh My ZSH! #################################### + +# If you want to use "Oh My ZSH!" with Laravel autocomplete plugin, set SHELL_OH_MY_ZSH to true. + +SHELL_OH_MY_ZSH=false +SHELL_OH_MY_ZSH_AUTOSUGESTIONS=false +SHELL_OH_MY_ZSH_ALIASES=false + +########################################################### +################ Containers Customization ################# +########################################################### + +### WORKSPACE ############################################# + +WORKSPACE_BASE_IMAGE_TAG_PREFIX=latest +WORKSPACE_COMPOSER_GLOBAL_INSTALL=true +WORKSPACE_COMPOSER_VERSION=2 +WORKSPACE_COMPOSER_AUTH=false +WORKSPACE_COMPOSER_REPO_PACKAGIST= +WORKSPACE_NVM_NODEJS_ORG_MIRROR= +WORKSPACE_INSTALL_NODE=true +WORKSPACE_NODE_VERSION=node +WORKSPACE_NPM_REGISTRY= +WORKSPACE_NPM_FETCH_RETRIES=2 +WORKSPACE_NPM_FETCH_RETRY_FACTOR=10 +WORKSPACE_NPM_FETCH_RETRY_MINTIMEOUT=10000 +WORKSPACE_NPM_FETCH_RETRY_MAXTIMEOUT=60000 +WORKSPACE_INSTALL_PNPM=false +WORKSPACE_INSTALL_YARN=true +WORKSPACE_YARN_VERSION=latest +WORKSPACE_INSTALL_NPM_GULP=true +WORKSPACE_INSTALL_NPM_BOWER=false +WORKSPACE_INSTALL_NPM_VUE_CLI=true +WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false +WORKSPACE_INSTALL_PHPREDIS=true +WORKSPACE_INSTALL_WORKSPACE_SSH=false +WORKSPACE_INSTALL_SUBVERSION=false +WORKSPACE_INSTALL_BZ2=false +WORKSPACE_INSTALL_GMP=false +WORKSPACE_INSTALL_GNUPG=false +WORKSPACE_INSTALL_XDEBUG=false +WORKSPACE_INSTALL_PCOV=false +WORKSPACE_INSTALL_PHPDBG=false +WORKSPACE_INSTALL_SSH2=false +WORKSPACE_INSTALL_LDAP=false +WORKSPACE_INSTALL_SOAP=false +WORKSPACE_INSTALL_XSL=false +WORKSPACE_INSTALL_SMB=false +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.4.6 +WORKSPACE_INSTALL_DRUPAL_CONSOLE=false +WORKSPACE_INSTALL_WP_CLI=false +WORKSPACE_INSTALL_AEROSPIKE=false +WORKSPACE_INSTALL_OCI8=false +WORKSPACE_INSTALL_V8JS=false +WORKSPACE_INSTALL_LARAVEL_ENVOY=false +WORKSPACE_INSTALL_LARAVEL_INSTALLER=false +WORKSPACE_INSTALL_DEPLOYER=false +WORKSPACE_INSTALL_PRESTISSIMO=false +WORKSPACE_INSTALL_LINUXBREW=false +WORKSPACE_INSTALL_MC=false +WORKSPACE_INSTALL_SYMFONY=false +WORKSPACE_INSTALL_PYTHON=false +WORKSPACE_INSTALL_PYTHON3=false +WORKSPACE_INSTALL_POWERLINE=false +WORKSPACE_INSTALL_SUPERVISOR=false +WORKSPACE_INSTALL_IMAGE_OPTIMIZERS=false +WORKSPACE_INSTALL_IMAGEMAGICK=false +WORKSPACE_IMAGEMAGICK_VERSION=latest +WORKSPACE_INSTALL_TERRAFORM=false +WORKSPACE_INSTALL_DUSK_DEPS=false +WORKSPACE_INSTALL_PG_CLIENT=false +WORKSPACE_INSTALL_PHALCON=false +WORKSPACE_INSTALL_SWOOLE=false +WORKSPACE_INSTALL_TAINT=false +WORKSPACE_INSTALL_LIBPNG=false +WORKSPACE_INSTALL_GRAPHVIZ=false +WORKSPACE_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592 +WORKSPACE_INSTALL_MYSQL_CLIENT=false +WORKSPACE_INSTALL_PING=false +WORKSPACE_INSTALL_SSHPASS=false +WORKSPACE_INSTALL_INOTIFY=false +WORKSPACE_INSTALL_FSWATCH=false +WORKSPACE_INSTALL_YAML=false +WORKSPACE_INSTALL_RDKAFKA=false +WORKSPACE_INSTALL_MAILPARSE=false +WORKSPACE_INSTALL_XMLRPC=false +WORKSPACE_PUID=1000 +WORKSPACE_PGID=1000 +WORKSPACE_CHROME_DRIVER_VERSION=2.42 +WORKSPACE_TIMEZONE=UTC +WORKSPACE_SSH_PORT=2222 +WORKSPACE_INSTALL_FFMPEG=false +WORKSPACE_INSTALL_AUDIOWAVEFORM=false +WORKSPACE_INSTALL_WKHTMLTOPDF=false +WORKSPACE_INSTALL_GNU_PARALLEL=false +WORKSPACE_INSTALL_AST=true +WORKSPACE_AST_VERSION=1.0.10 +WORKSPACE_BROWSERSYNC_HOST_PORT=3000 +WORKSPACE_BROWSERSYNC_UI_HOST_PORT=3001 +WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080 +WORKSPACE_VUE_CLI_UI_HOST_PORT=8001 +WORKSPACE_ANGULAR_CLI_SERVE_HOST_PORT=4200 +WORKSPACE_INSTALL_GIT_PROMPT=false +WORKSPACE_INSTALL_DOCKER_CLIENT=false +WORKSPACE_INSTALL_LNAV=false +WORKSPACE_INSTALL_PROTOC=false +WORKSPACE_INSTALL_PHPDECIMAL=false +WORKSPACE_INSTALL_ZOOKEEPER=false +WORKSPACE_INSTALL_SSDB=false +WORKSPACE_PROTOC_VERSION=latest +WORKSPACE_INSTALL_MEMCACHED=true + +### PHP_FPM ############################################### + +PHP_FPM_BASE_IMAGE_TAG_PREFIX=latest +PHP_FPM_INSTALL_BCMATH=true +PHP_FPM_INSTALL_MYSQLI=true +PHP_FPM_INSTALL_INTL=true +PHP_FPM_INSTALL_IMAGEMAGICK=true +PHP_FPM_IMAGEMAGICK_VERSION=latest +PHP_FPM_INSTALL_OPCACHE=true +PHP_FPM_INSTALL_IMAGE_OPTIMIZERS=true +PHP_FPM_INSTALL_PHPREDIS=true +PHP_FPM_INSTALL_MEMCACHED=false +PHP_FPM_INSTALL_BZ2=false +PHP_FPM_INSTALL_ENCHANT=false +PHP_FPM_INSTALL_GMP=false +PHP_FPM_INSTALL_GNUPG=false +PHP_FPM_INSTALL_XDEBUG=false +PHP_FPM_INSTALL_PCOV=false +PHP_FPM_INSTALL_XHPROF=false +PHP_FPM_INSTALL_PHPDBG=false +PHP_FPM_INSTALL_SMB=false +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 +PHP_FPM_INSTALL_XSL=false +PHP_FPM_INSTALL_EXIF=false +PHP_FPM_INSTALL_AEROSPIKE=false +PHP_FPM_INSTALL_OCI8=false +PHP_FPM_INSTALL_PGSQL=false +PHP_FPM_INSTALL_GHOSTSCRIPT=false +PHP_FPM_INSTALL_LDAP=false +PHP_FPM_INSTALL_PHALCON=false +PHP_FPM_INSTALL_SWOOLE=false +PHP_FPM_INSTALL_TAINT=false +PHP_FPM_INSTALL_PG_CLIENT=false +PHP_FPM_INSTALL_POSTGIS=false +PHP_FPM_INSTALL_PCNTL=false +PHP_FPM_INSTALL_CALENDAR=false +PHP_FPM_INSTALL_FAKETIME=false +PHP_FPM_INSTALL_IONCUBE=false # PHP 8.0 is not supported yet. Reference: https://forum.ioncube.com/viewtopic.php?t=4592 +PHP_FPM_INSTALL_RDKAFKA=false +PHP_FPM_INSTALL_GETTEXT=false +PHP_FPM_INSTALL_XMLRPC=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_INSTALL_WKHTMLTOPDF=false +PHP_FPM_INSTALL_PHPDECIMAL=false +PHP_FPM_INSTALL_ZOOKEEPER=false +PHP_FPM_INSTALL_SSDB=false +PHP_FPM_FFMPEG=false +PHP_FPM_AUDIOWAVEFORM=false +PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" +PHP_FPM_INSTALL_DOCKER_CLIENT=false +PHP_FPM_DEFAULT_LOCALE=POSIX +PHP_FPM_XDEBUG_PORT=9003 + +PHP_FPM_PUID=1000 +PHP_FPM_PGID=1000 + +### PHP_FPM_NEW_RELIC ##################################### + +PHP_FPM_NEW_RELIC=false +PHP_FPM_NEW_RELIC_KEY=0000 +PHP_FPM_NEW_RELIC_APP_NAME=app_name + +### PHP_WORKER ############################################ + +PHP_WORKER_INSTALL_BZ2=false +PHP_WORKER_INSTALL_GD=false +PHP_WORKER_INSTALL_IMAGEMAGICK=false +PHP_WORKER_IMAGEMAGICK_VERSION=latest +PHP_WORKER_INSTALL_GMP=false +PHP_WORKER_INSTALL_GNUPG=false +PHP_WORKER_INSTALL_LDAP=false +PHP_WORKER_INSTALL_PGSQL=false +PHP_WORKER_INSTALL_MONGO=false +PHP_WORKER_INSTALL_BCMATH=false +PHP_WORKER_INSTALL_MEMCACHED=false +# PHP_WORKER_INSTALL_OCI8 Does not work in php5.6 version +PHP_WORKER_INSTALL_OCI8=false +PHP_WORKER_INSTALL_MSSQL=false +PHP_WORKER_INSTALL_PHALCON=false +PHP_WORKER_INSTALL_SOAP=false +PHP_WORKER_INSTALL_ZIP_ARCHIVE=false +PHP_WORKER_INSTALL_MYSQL_CLIENT=false +PHP_WORKER_INSTALL_AMQP=false +PHP_WORKER_INSTALL_GHOSTSCRIPT=false +PHP_WORKER_INSTALL_SWOOLE=false +PHP_WORKER_INSTALL_TAINT=false +PHP_WORKER_INSTALL_FFMPEG=false +PHP_WORKER_INSTALL_AUDIOWAVEFORM=false +PHP_WORKER_INSTALL_CASSANDRA=false +PHP_WORKER_INSTALL_GEARMAN=false +PHP_WORKER_INSTALL_REDIS=false +PHP_WORKER_INSTALL_IMAP=false +PHP_WORKER_INSTALL_XMLRPC=false +PHP_WORKER_INSTALL_SSDB=false + +PHP_WORKER_PUID=1000 +PHP_WORKER_PGID=1000 + +### NGINX ################################################# + +NGINX_HOST_HTTP_PORT=80 +NGINX_HOST_HTTPS_PORT=443 +NGINX_HOST_LOG_PATH=./logs/nginx/ +NGINX_SITES_PATH=./nginx/sites/ +NGINX_PHP_UPSTREAM_CONTAINER=php-fpm +NGINX_PHP_UPSTREAM_PORT=9000 +NGINX_SSL_PATH=./nginx/ssl/ + +### OpenResty ################################################# + +OPENRESTY_HOST_HTTP_PORT=80 +OPENRESTY_HOST_HTTPS_PORT=443 +OPENRESTY_HOST_LOG_PATH=./logs/openresty/ +OPENRESTY_SITES_PATH=./openresty/sites/ +OPENRESTY_PHP_UPSTREAM_CONTAINER=php-fpm +OPENRESTY_PHP_UPSTREAM_PORT=9000 +OPENRESTY_SSL_PATH=./openresty/ssl/ + +### LARAVEL_HORIZON ################################################ + +LARAVEL_HORIZON_INSTALL_BZ2=false +LARAVEL_HORIZON_INSTALL_GD=false +LARAVEL_HORIZON_INSTALL_GMP=false +LARAVEL_HORIZON_INSTALL_GNUPG=false +LARAVEL_HORIZON_INSTALL_LDAP=false +LARAVEL_HORIZON_INSTALL_IMAGEMAGICK=false +LARAVEL_HORIZON_IMAGEMAGICK_VERSION=latest +LARAVEL_HORIZON_INSTALL_SOCKETS=false +LARAVEL_HORIZON_INSTALL_YAML=false +LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE=false +LARAVEL_HORIZON_INSTALL_PHPREDIS=false +LARAVEL_HORIZON_INSTALL_MONGO=false +LARAVEL_HORIZON_INSTALL_CASSANDRA=false +LARAVEL_HORIZON_INSTALL_FFMPEG=false +LARAVEL_HORIZON_INSTALL_AUDIOWAVEFORM=false +LARAVEL_HORIZON_PGID=1000 +LARAVEL_HORIZON_PUID=1000 + +### APACHE ################################################ + +APACHE_HOST_HTTP_PORT=80 +APACHE_HOST_HTTPS_PORT=443 +APACHE_HOST_LOG_PATH=./logs/apache2 +APACHE_SITES_PATH=./apache2/sites +APACHE_PHP_UPSTREAM_CONTAINER=php-fpm +APACHE_PHP_UPSTREAM_PORT=9000 +APACHE_PHP_UPSTREAM_TIMEOUT=60 +APACHE_DOCUMENT_ROOT=/var/www/ +APACHE_SSL_PATH=./apache2/ssl/ +APACHE_INSTALL_HTTP2=false + +### MYSQL ################################################# + +MYSQL_VERSION=latest +MYSQL_DATABASE=default +MYSQL_USER=default +MYSQL_PASSWORD=secret +MYSQL_PORT=3306 +MYSQL_ROOT_PASSWORD=root +MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d + +### CLICKHOUSE ################################################# + +CLICKHOUSE_VERSION=20.9.4.76 +CLICKHOUSE_GOSU_VERSION=1.10 +CLICKHOUSE_CUSTOM_CONFIG=./clickhouse/config.xml +CLICKHOUSE_USERS_CUSTOM_CONFIG=./clickhouse/users.xml +CLICKHOUSE_USER=default +CLICKHOUSE_PASSWORD=HAHA +CLICKHOUSE_HTTP_PORT=8123 +CLICKHOUSE_CLIENT_PORT=9000 +CLICKHOUSE_NATIVE_PORT=9009 +CLICKHOUSE_ENTRYPOINT_INITDB=./clickhouse/docker-entrypoint-initdb.d +CLICKHOUSE_HOST_LOG_PATH=./logs/clickhouse + +### REDIS ################################################# + +REDIS_PORT=6379 + +### REDIS CLUSTER ######################################### + +REDIS_CLUSTER_PORT_RANGE=7000-7005 + +### SSDB ################################################# + +SSDB_PORT=16801 + +### ZooKeeper ############################################# + +ZOOKEEPER_PORT=2181 + +### Percona ############################################### + +PERCONA_DATABASE=homestead +PERCONA_USER=homestead +PERCONA_PASSWORD=secret +PERCONA_PORT=3306 +PERCONA_ROOT_PASSWORD=root +PERCONA_ENTRYPOINT_INITDB=./percona/docker-entrypoint-initdb.d + +### MSSQL ################################################# + +MSSQL_DATABASE=master +MSSQL_PASSWORD="yourStrong(!)Password" +MSSQL_PORT=1433 + +### MARIADB ############################################### + +MARIADB_VERSION=latest +MARIADB_DATABASE=default +MARIADB_USER=default +MARIADB_PASSWORD=secret +MARIADB_PORT=3306 +MARIADB_ROOT_PASSWORD=root +MARIADB_ENTRYPOINT_INITDB=./mariadb/docker-entrypoint-initdb.d + +### POSTGRES ############################################## + +POSTGRES_VERSION=alpine +POSTGRES_DB=default +POSTGRES_USER=default +POSTGRES_PASSWORD=secret +POSTGRES_PORT=5432 +POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d + +### SQS ############################################## + +SQS_NODE_HOST_PORT=9324 +SQS_MANAGEMENT_HTTP_HOST_PORT=9325 + +### RABBITMQ ############################################## + +RABBITMQ_NODE_HOST_PORT=5672 +RABBITMQ_MANAGEMENT_HTTP_HOST_PORT=15672 +RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671 + +### MERCURE ############################################## + +MERCURE_NODE_HOST_HTTP_PORT=1337 +MERCURE_NODE_HOST_HTTPS_PORT=1338 +MERCURE_PUBLISHER_JWT_KEY=secret +MERCURE_SUBSCRIBER_JWT_KEY=another_secret +MERCURE_DEBUG=debug +MERCURE_SERVER_NAME=:80 + +### MEILISEARCH ########################################### + +MEILISEARCH_HOST_PORT=7700 +MEILISEARCH_KEY=masterkey + +### ELASTICSEARCH ######################################### + +ELASTICSEARCH_HOST_HTTP_PORT=9200 +ELASTICSEARCH_HOST_TRANSPORT_PORT=9300 + +### KIBANA ################################################ + +KIBANA_HTTP_PORT=5601 + +### DEJAVU ################################################ + +DEJAVU_HTTP_PORT=1358 + +### MEMCACHED ############################################# + +MEMCACHED_HOST_PORT=11211 + +### BEANSTALKD CONSOLE #################################### + +BEANSTALKD_CONSOLE_BUILD_PATH=./beanstalkd-console +BEANSTALKD_CONSOLE_CONTAINER_NAME=beanstalkd-console +BEANSTALKD_CONSOLE_HOST_PORT=2080 + +### BEANSTALKD ############################################ + +BEANSTALKD_HOST_PORT=11300 + +### SELENIUM ############################################## + +SELENIUM_PORT=4444 + +### MINIO ################################################# + +MINIO_PORT=9000 +MINIO_CONSOLE_PORT=9001 +MINIO_ROOT_USER=laradock +MINIO_ROOT_PASSWORD=laradock + +### ADMINER ############################################### + +ADM_PORT=8081 +ADM_INSTALL_MSSQL=false +ADM_PLUGINS= +ADM_DESIGN=pepa-linha +ADM_DEFAULT_SERVER=mysql + +### PHP MY ADMIN ########################################## + +# Accepted values: mariadb - mysql + +PMA_DB_ENGINE=mysql + +# Credentials/Port: + +PMA_USER=default +PMA_PASSWORD=secret +PMA_ROOT_PASSWORD=secret +PMA_PORT=8081 +PMA_MAX_EXECUTION_TIME=600 +PMA_MEMORY_LIMIT=256M +PMA_UPLOAD_LIMIT=2G + +### MAILDEV ############################################### + +MAILDEV_HTTP_PORT=1080 +MAILDEV_SMTP_PORT=25 + +### VARNISH ############################################### + +VARNISH_CONFIG=/etc/varnish/default.vcl +VARNISH_PORT=6081 +VARNISH_BACKEND_PORT=81 +VARNISHD_PARAMS="-p default_ttl=3600 -p default_grace=3600" + +### Varnish ############################################### + +# Proxy 1 +VARNISH_PROXY1_CACHE_SIZE=128m +VARNISH_PROXY1_BACKEND_HOST=workspace +VARNISH_PROXY1_SERVER=SERVER1 + +# Proxy 2 +VARNISH_PROXY2_CACHE_SIZE=128m +VARNISH_PROXY2_BACKEND_HOST=workspace +VARNISH_PROXY2_SERVER=SERVER2 + +### HAPROXY ############################################### + +HAPROXY_HOST_HTTP_PORT=8085 + +### JENKINS ############################################### + +JENKINS_HOST_HTTP_PORT=8090 +JENKINS_HOST_SLAVE_AGENT_PORT=50000 +JENKINS_HOME=./jenkins/jenkins_home + +### CONFLUENCE ############################################### +CONFLUENCE_POSTGRES_INIT=true +CONFLUENCE_VERSION=6.13-ubuntu-18.04-adoptopenjdk8 +CONFLUENCE_POSTGRES_DB=laradock_confluence +CONFLUENCE_POSTGRES_USER=laradock_confluence +CONFLUENCE_POSTGRES_PASSWORD=laradock_confluence +CONFLUENCE_HOST_HTTP_PORT=8090 + +### GRAFANA ############################################### + +GRAFANA_PORT=3000 + +### GRAYLOG ############################################### + +# password must be 16 characters long +GRAYLOG_PASSWORD=somesupersecretpassword +# sha256 representation of the password +GRAYLOG_SHA256_PASSWORD=b1cb6e31e172577918c9e7806c572b5ed8477d3f57aa737bee4b5b1db3696f09 +GRAYLOG_PORT=9000 +GRAYLOG_SYSLOG_TCP_PORT=514 +GRAYLOG_SYSLOG_UDP_PORT=514 +GRAYLOG_GELF_TCP_PORT=12201 +GRAYLOG_GELF_UDP_PORT=12201 + +### BLACKFIRE ############################################# + +# Create an account on blackfire.io. Don't enable blackfire and xDebug at the same time. # visit https://blackfire.io/docs/24-days/06-installation#install-probe-debian for more info. +INSTALL_BLACKFIRE=false +BLACKFIRE_CLIENT_ID="" +BLACKFIRE_CLIENT_TOKEN="" +BLACKFIRE_SERVER_ID="" +BLACKFIRE_SERVER_TOKEN="" + +### AEROSPIKE ############################################# + +AEROSPIKE_SERVICE_PORT=3000 +AEROSPIKE_FABRIC_PORT=3001 +AEROSPIKE_HEARTBEAT_PORT=3002 +AEROSPIKE_INFO_PORT=3003 +AEROSPIKE_STORAGE_GB=1 +AEROSPIKE_MEM_GB=1 +AEROSPIKE_NAMESPACE=test + +### RETHINKDB ############################################# + +RETHINKDB_PORT=8090 + +### MONGODB ############################################### + +MONGODB_PORT=27017 + +### CADDY ################################################# + +CADDY_HOST_HTTP_PORT=80 +CADDY_HOST_HTTPS_PORT=443 +CADDY_HOST_LOG_PATH=./logs/caddy +CADDY_CONFIG_PATH=./caddy/caddy + +### LARAVEL ECHO SERVER ################################### + +LARAVEL_ECHO_SERVER_PORT=6001 + +### THUMBOR ############################################################################################################ + +THUMBOR_PORT=8000 +THUMBOR_LOG_FORMAT="%(asctime)s %(name)s:%(levelname)s %(message)s" +THUMBOR_LOG_DATE_FORMAT="%Y-%m-%d %H:%M:%S" +MAX_WIDTH=0 +MAX_HEIGHT=0 +MIN_WIDTH=1 +MIN_HEIGHT=1 +ALLOWED_SOURCES=[] +QUALITY=80 +WEBP_QUALITY=None +PNG_COMPRESSION_LEVEL=6 +AUTO_WEBP=False +MAX_AGE=86400 +MAX_AGE_TEMP_IMAGE=0 +RESPECT_ORIENTATION=False +IGNORE_SMART_ERRORS=False +PRESERVE_EXIF_INFO=False +ALLOW_ANIMATED_GIFS=True +USE_GIFSICLE_ENGINE=False +USE_BLACKLIST=False +LOADER=thumbor.loaders.http_loader +STORAGE=thumbor.storages.file_storage +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +RESULT_STORAGE=thumbor.result_storages.file_storage +ENGINE=thumbor.engines.pil +SECURITY_KEY="MY_SECURE_KEY" +ALLOW_UNSAFE_URL=True +ALLOW_OLD_URLS=True +FILE_LOADER_ROOT_PATH=/data/loader +HTTP_LOADER_CONNECT_TIMEOUT=5 +HTTP_LOADER_REQUEST_TIMEOUT=20 +HTTP_LOADER_FOLLOW_REDIRECTS=True +HTTP_LOADER_MAX_REDIRECTS=5 +HTTP_LOADER_FORWARD_USER_AGENT=False +HTTP_LOADER_DEFAULT_USER_AGENT="Thumbor/5.2.1" +HTTP_LOADER_PROXY_HOST=None +HTTP_LOADER_PROXY_PORT=None +HTTP_LOADER_PROXY_USERNAME=None +HTTP_LOADER_PROXY_PASSWORD=None +HTTP_LOADER_CA_CERTS=None +HTTP_LOADER_VALIDATE_CERTS=True +HTTP_LOADER_CLIENT_KEY=None +HTTP_LOADER_CLIENT_CERT=None +HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT=False +STORAGE_EXPIRATION_SECONDS=2592000 +STORES_CRYPTO_KEY_FOR_EACH_IMAGE=False +FILE_STORAGE_ROOT_PATH=/data/storage +UPLOAD_MAX_SIZE=0 +UPLOAD_ENABLED=False +UPLOAD_PHOTO_STORAGE=thumbor.storages.file_storage +UPLOAD_DELETE_ALLOWED=False +UPLOAD_PUT_ALLOWED=False +UPLOAD_DEFAULT_FILENAME=image +MONGO_STORAGE_SERVER_HOST=mongo +MONGO_STORAGE_SERVER_PORT=27017 +MONGO_STORAGE_SERVER_DB=thumbor +MONGO_STORAGE_SERVER_COLLECTION=images +REDIS_STORAGE_SERVER_HOST=redis +REDIS_STORAGE_SERVER_PORT=6379 +REDIS_STORAGE_SERVER_DB=0 +REDIS_STORAGE_SERVER_PASSWORD=None +REDIS_RESULT_STORAGE_SERVER_HOST=redis +REDIS_RESULT_STORAGE_SERVER_PORT=6379 +REDIS_RESULT_STORAGE_SERVER_DB=0 +REDIS_RESULT_STORAGE_SERVER_PASSWORD=None +MEMCACHE_STORAGE_SERVERS=["localhost:11211",] +MIXED_STORAGE_FILE_STORAGE=thumbor.storages.no_storage +MIXED_STORAGE_CRYPTO_STORAGE=thumbor.storages.no_storage +MIXED_STORAGE_DETECTOR_STORAGE=thumbor.storages.no_storage +META_CALLBACK_NAME=None +DETECTORS=[] +FACE_DETECTOR_CASCADE_FILE=haarcascade_frontalface_alt.xml +OPTIMIZERS=[] +JPEGTRAN_PATH=/usr/bin/jpegtran +PROGRESSIVE_JPEG=True +FILTERS="[thumbor.filters.brightness, thumbor.filters.contrast, thumbor.filters.rgb, thumbor.filters.round_corner, thumbor.filters.quality, thumbor.filters.noise, thumbor.filters.watermark, thumbor.filters.equalize, thumbor.filters.fill, thumbor.filters.sharpen, thumbor.filters.strip_icc, thumbor.filters.frame, thumbor.filters.grayscale, thumbor.filters.rotate, thumbor.filters.format, thumbor.filters.max_bytes, thumbor.filters.convolution, thumbor.filters.blur, thumbor.filters.extract_focal, thumbor.filters.no_upscale]" +RESULT_STORAGE_EXPIRATION_SECONDS=0 +RESULT_STORAGE_FILE_STORAGE_ROOT_PATH=/data/result_storage +RESULT_STORAGE_STORES_UNSAFE=False +REDIS_QUEUE_SERVER_HOST=redis +REDIS_QUEUE_SERVER_PORT=6379 +REDIS_QUEUE_SERVER_DB="0" +REDIS_QUEUE_SERVER_PASSWORD=None +SQS_QUEUE_KEY_ID=None +SQS_QUEUE_KEY_SECRET=None +SQS_QUEUE_REGION=us-east-1 +USE_CUSTOM_ERROR_HANDLING=False +ERROR_HANDLER_MODULE=thumbor.error_handlers.sentry +ERROR_FILE_LOGGER=None +ERROR_FILE_NAME_USE_CONTEXT="False" +SENTRY_DSN_URL= +TC_AWS_REGION=eu-west-1 +TC_AWS_ENDPOINT=None +TC_AWS_STORAGE_BUCKET= +TC_AWS_STORAGE_ROOT_PATH= +TC_AWS_LOADER_BUCKET= +TC_AWS_LOADER_ROOT_PATH= +TC_AWS_RESULT_STORAGE_BUCKET= +TC_AWS_RESULT_STORAGE_ROOT_PATH= +TC_AWS_STORAGE_SSE=False +TC_AWS_STORAGE_RRS=False +TC_AWS_ENABLE_HTTP_LOADER=False +TC_AWS_ALLOWED_BUCKETS=False +TC_AWS_STORE_METADATA=False + +### SOLR ################################################## + +SOLR_VERSION=5.5 +SOLR_PORT=8983 +SOLR_DATAIMPORTHANDLER_MYSQL=false +SOLR_DATAIMPORTHANDLER_MSSQL=false + +### GITLAB ############################################### +GITLAB_POSTGRES_INIT=true +GITLAB_HOST_HTTP_PORT=8989 +GITLAB_HOST_HTTPS_PORT=9898 +GITLAB_HOST_SSH_PORT=2289 +GITLAB_DOMAIN_NAME=http://localhost +GITLAB_ROOT_PASSWORD=laradock +GITLAB_HOST_LOG_PATH=./logs/gitlab +GITLAB_POSTGRES_HOST=postgres +GITLAB_POSTGRES_USER=laradock_gitlab +GITLAB_POSTGRES_PASSWORD=laradock_gitlab +GITLAB_POSTGRES_DB=laradock_gitlab + +### GITLAB-RUNNER ############################################### +GITLAB_CI_SERVER_URL=http://localhost:8989 +GITLAB_RUNNER_REGISTRATION_TOKEN="" +GITLAB_REGISTER_NON_INTERACTIVE=true + +### JUPYTERHUB ############################################### +JUPYTERHUB_POSTGRES_INIT=true +JUPYTERHUB_POSTGRES_HOST=postgres +JUPYTERHUB_POSTGRES_USER=laradock_jupyterhub +JUPYTERHUB_POSTGRES_PASSWORD=laradock_jupyterhub +JUPYTERHUB_POSTGRES_DB=laradock_jupyterhub +JUPYTERHUB_PORT=9991 +JUPYTERHUB_OAUTH_CALLBACK_URL=http://laradock:9991/hub/oauth_callback +JUPYTERHUB_OAUTH_CLIENT_ID={GITHUB_CLIENT_ID} +JUPYTERHUB_OAUTH_CLIENT_SECRET={GITHUB_CLIENT_SECRET} +JUPYTERHUB_CUSTOM_CONFIG=./jupyterhub/jupyterhub_config.py +JUPYTERHUB_USER_DATA=/jupyterhub +JUPYTERHUB_USER_LIST=./jupyterhub/userlist +JUPYTERHUB_ENABLE_NVIDIA=false + +### IPYTHON ################################################## +LARADOCK_IPYTHON_CONTROLLER_IP=127.0.0.1 + +### NETDATA ############################################### +NETDATA_PORT=19999 + +### REDISWEBUI ######################################### +REDIS_WEBUI_USERNAME=laradock +REDIS_WEBUI_PASSWORD=laradock +REDIS_WEBUI_CONNECT_HOST=redis +REDIS_WEBUI_CONNECT_PORT=6379 +REDIS_WEBUI_PORT=9987 + +### MONGOWEBUI ############################################### +MONGO_WEBUI_PORT=3000 +MONGO_WEBUI_ROOT_URL=http://localhost +MONGO_WEBUI_MONGO_URL=mongodb://mongo:27017/ +MONGO_WEBUI_INSTALL_MONGO=false + +### METABASE ############################################### +METABASE_PORT=3030 +METABASE_DB_FILE=metabase.db +METABASE_JAVA_TIMEZONE=US/Pacific + +### IDE ############################################### +IDE_THEIA_PORT=987 +IDE_WEBIDE_PORT=984 +IDE_CODIAD_PORT=985 +IDE_ICECODER_PORT=986 + +### DOCKERREGISTRY ############################################### +DOCKER_REGISTRY_PORT=5000 + +### DOCKERWEBUI ############################################### +DOCKER_WEBUI_REGISTRY_HOST=docker-registry +DOCKER_WEBUI_REGISTRY_PORT=5000 +# if have use https proxy please set to 1 +DOCKER_REGISTRY_USE_SSL=0 +DOCKER_REGISTRY_BROWSE_ONLY=false +DOCKER_WEBUI_PORT=8754 + +### MAILU ############################################### +MAILU_VERSION=latest +MAILU_RECAPTCHA_PUBLIC_KEY="" +MAILU_RECAPTCHA_PRIVATE_KEY="" +# Main mail domain +MAILU_HTTP_PORT=6080 +MAILU_HTTPS_PORT=60443 +MAILU_DOMAIN=example.com +MAILU_INIT_ADMIN_USERNAME=laradock +MAILU_INIT_ADMIN_PASSWORD=laradock +# Hostnames for this server, separated with comas +MAILU_HOSTNAMES=mail.example.com,alternative.example.com,yetanother.example.com +# Postmaster local part (will append the main mail domain) +MAILU_POSTMASTER=admin +# Set to a randomly generated 16 bytes string +MAILU_SECRET_KEY=ChangeMeChangeMe +# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail) +MAILU_TLS_FLAVOR=cert +# Authentication rate limit (per source IP address) +MAILU_AUTH_RATELIMIT="10/minute;1000/hour" +# Opt-out of statistics, replace with "True" to opt out +MAILU_DISABLE_STATISTICS=False +# Message size limit in bytes +# Default: accept messages up to 50MB +MAILU_MESSAGE_SIZE_LIMIT=50000000 +# Will relay all outgoing mails if configured +MAILU_RELAYHOST= +# Networks granted relay permissions, make sure that you include your Docker +# internal network (default to 172.17.0.0/16) +MAILU_RELAYNETS=172.16.0.0/12 +# Fetchmail delay +MAILU_FETCHMAIL_DELAY=600 +# Recipient delimiter, character used to delimiter localpart from custom address part +# e.g. localpart+custom@domain;tld +MAILU_RECIPIENT_DELIMITER=+ +# DMARC rua and ruf email +MAILU_DMARC_RUA=admin +MAILU_DMARC_RUF=admin +# Welcome email, enable and set a topic and body if you wish to send welcome +# emails to all users. +MAILU_WELCOME=True +MAILU_WELCOME_SUBJECT="Welcome to your new email account" +MAILU_WELCOME_BODY="Welcome to your new email account, if you can read this, then it is configured properly!" +# Path to the admin interface if enabled +MAILU_WEB_ADMIN=/admin +# Path to the webmail if enabled +MAILU_WEB_WEBMAIL=/webmail +# Website name +MAILU_SITENAME="Example Mail" +# Linked Website URL +MAILU_WEBSITE=http://mail.example.com +# Default password scheme used for newly created accounts and changed passwords +# (value: SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT) +MAILU_PASSWORD_SCHEME=SHA512-CRYPT +# Expose the admin interface (value: true, false) +MAILU_ADMIN=true +# Choose which webmail to run if any (values: roundcube, rainloop, none) +MAILU_WEBMAIL=rainloop +# Dav server implementation (value: radicale, none) +MAILU_WEBDAV=radicale + + +### TRAEFIK ################################################# + +TRAEFIK_HOST_HTTP_PORT=80 +TRAEFIK_HOST_HTTPS_PORT=443 +TRAEFIK_DASHBOARD_PORT=8888 +# basic authentication for traefik dashboard username: admin password:admin +TRAEFIK_DASHBOARD_USER=admin:$2y$10$lXaL3lj6raFic6rFqr2.lOBoCudAIhB6zyoqObNg290UFppiUzTTi +ACME_DOMAIN=example.org +ACME_EMAIL=email@example.org + + +### MOSQUITTO ################################################# + +MOSQUITTO_PORT=9001 + +### COUCHDB ################################################### + +COUCHDB_PORT=5984 + +### Manticore Search ########################################## + +MANTICORE_CONFIG_PATH=./manticore/config +MANTICORE_API_PORT=9312 +MANTICORE_SPHINXQL_PORT=9306 +MANTICORE_HTTP_PORT=9308 + +### pgadmin ################################################## +# use this address http://ip6-localhost:5050 +PGADMIN_PORT=5050 +PGADMIN_DEFAULT_EMAIL=pgadmin4@pgadmin.org +PGADMIN_DEFAULT_PASSWORD=admin + +### SWAGGER EDITOR ########################################### + +SWAGGER_EDITOR_PORT=5151 + +### SWAGGER UI ############################################### + +SWAGGER_API_URL=http://generator.swagger.io/api/swagger.json +SWAGGER_UI_PORT=5555 + +### SONARQUBE ################################################ +## docker-compose up -d sonarqube +## (If you encounter a database error) +## docker-compose exec --user=root postgres +## source docker-entrypoint-initdb.d/init_sonarqube_db.sh +## (If you encounter logs error) +## docker-compose run --user=root --rm sonarqube chown sonarqube:sonarqube /opt/sonarqube/logs + +SONARQUBE_HOSTNAME=sonar.example.com +SONARQUBE_PORT=9000 +SONARQUBE_POSTGRES_INIT=true +SONARQUBE_POSTGRES_HOST=postgres +SONARQUBE_POSTGRES_DB=sonar +SONARQUBE_POSTGRES_USER=sonar +SONARQUBE_POSTGRES_PASSWORD=sonarPass + +### TOMCAT ################################################ +TOMCAT_VERSION=8.5.43 +TOMCAT_HOST_HTTP_PORT=8080 + +### CASSANDRA ################################################ + +# Cassandra Version, supported tags can be found at https://hub.docker.com/r/bitnami/cassandra/ +CASSANDRA_VERSION=latest +# Inter-node cluster communication port. Default: 7000 +CASSANDRA_TRANSPORT_PORT_NUMBER=7000 +# JMX connections port. Default: 7199 +CASSANDRA_JMX_PORT_NUMBER=7199 +# Client port. Default: 9042. +CASSANDRA_CQL_PORT_NUMBER=9042 +# Cassandra user name. Defaults: cassandra +CASSANDRA_USER=cassandra +# Password seeder will change the Cassandra default credentials at initialization. In clusters, only one node should be marked as password seeder. Default: no +CASSANDRA_PASSWORD_SEEDER=no +# Cassandra user password. Default: cassandra +CASSANDRA_PASSWORD=cassandra +# Number of tokens for the node. Default: 256. +CASSANDRA_NUM_TOKENS=256 +# Hostname used to configure Cassandra. It can be either an IP or a domain. If left empty, it will be resolved to the machine IP. +CASSANDRA_HOST= +# Cluster name to configure Cassandra.. Defaults: My Cluster +CASSANDRA_CLUSTER_NAME="My Cluster" +# : Hosts that will act as Cassandra seeds. No defaults. +CASSANDRA_SEEDS= + # Snitch name (which determines which data centers and racks nodes belong to). Default SimpleSnitch +CASSANDRA_ENDPOINT_SNITCH=SimpleSnitch + # Enable the thrift RPC endpoint. Default :true +CASSANDRA_ENABLE_RPC=true +# Datacenter name for the cluster. Ignored in SimpleSnitch endpoint snitch. Default: dc1. +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: 4730) +GEARMAN_PORT=4730 +# 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 + +### ELK Stack ################################################## +ELK_VERSION=7.9.1 + +### Tarantool ################################################## +TARANTOOL_PORT=3301 +TARANTOOL_ADMIN_PORT=8002 + +### NATS ################################################## +NATS_CLIENT_PORT=4222 +NATS_MONITORING_PORT=6222 +NATS_ROUTE_PORT=8222 From 306a8a6050bc842c8cef62f90a44e6ac5e314466 Mon Sep 17 00:00:00 2001 From: Nisar Ahmed Date: Tue, 28 Sep 2021 12:57:04 +1000 Subject: [PATCH 278/372] Update newrelic PHP Agent version to support PHP 8.x --- php-fpm/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d6638a9e..eae6e0c3 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1126,7 +1126,7 @@ ARG NEW_RELIC_KEY=${NEW_RELIC_KEY} ARG NEW_RELIC_APP_NAME=${NEW_RELIC_APP_NAME} RUN if [ ${NEW_RELIC} = true ]; then \ - curl -L http://download.newrelic.com/php_agent/archive/9.9.0.260/newrelic-php5-9.9.0.260-linux.tar.gz | tar -C /tmp -zx && \ + curl -L http://download.newrelic.com/php_agent/release/newrelic-php5-9.18.1.303-linux.tar.gz | tar -C /tmp -zx && \ export NR_INSTALL_USE_CP_NOT_LN=1 && \ export NR_INSTALL_SILENT=1 && \ /tmp/newrelic-php5-*/newrelic-install install && \ From 42abd8b39098bb5fe95febf08a8d07c527ad703e Mon Sep 17 00:00:00 2001 From: dhtmdgkr123 Date: Mon, 4 Oct 2021 17:59:11 +0900 Subject: [PATCH 279/372] fix docker-compose up error FIx docker-compose up error --- weaver/conf/sample.env | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/weaver/conf/sample.env b/weaver/conf/sample.env index ccb48de5..eb6d8c3b 100644 --- a/weaver/conf/sample.env +++ b/weaver/conf/sample.env @@ -1,8 +1,8 @@ GIN_MODE=debug # Weaver -WEAVER_AUTH_KEY=arachnys-weaver -WEAVER_ATHENA_CMD=athenapdf -S +WEAVER_AUTH_KEY="arachnys-weaver" +WEAVER_ATHENA_CMD="athenapdf -S" WEAVER_MAX_WORKERS=10 WEAVER_MAX_CONVERSION_QUEUE=50 WEAVER_WORKER_TIMEOUT=90 @@ -16,4 +16,4 @@ WEAVER_CONVERSION_FALLBACK=false # Monitoring # STATSD_ADDRESS= # STATSD_PREFIX= -# SENTRY_DSN= \ No newline at end of file +# SENTRY_DSN= From c393bf226b45a69902fe2510f27f57faf2957294 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 7 Oct 2021 21:57:09 +0800 Subject: [PATCH 280/372] workspace: add ionCube Loader enabled check --- workspace/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 49c89b96..1d525c41 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -659,6 +659,7 @@ RUN if [ ${INSTALL_IONCUBE} = true ]; then \ && echo "zend_extension=ioncube_loader.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/ioncube.ini \ && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/ioncube.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/0ioncube.ini \ && rm -rf /tmp/ioncube* \ + && php -m | grep -oiE '^ionCube Loader$' \ ;fi \ ;fi From ee9955025829adda6ab8a6a23006488cd041bd46 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 7 Oct 2021 22:04:06 +0800 Subject: [PATCH 281/372] CI: skip ENCHANT --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8fe4e51c..97a324cb 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -43,6 +43,7 @@ jobs: sed -i -- 's/V8JS=true/V8JS=false/g' .env sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env sed -i -- 's/SSDB=true/SSDB=false/g' .env + sed -i -- 's/ENCHANT=true/ENCHANT=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m From ee80578fc6267d53cdcf27c7ccccce94222cb6fb Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 7 Oct 2021 22:49:24 +0800 Subject: [PATCH 282/372] php7.0 mongodb fixed version number --- php-fpm/Dockerfile | 16 +++++++++++----- workspace/Dockerfile | 24 +++++++++++++++--------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 46503669..44b296d2 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -358,12 +358,18 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ # Install the mongodb extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install mongo && \ - docker-php-ext-enable mongo \ - ;else \ - pecl install mongodb && \ + docker-php-ext-enable mongo; \ + php -m | grep -oiE '^mongo$'; \ + else \ + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install mongodb-1.9.2; \ + else \ + pecl install mongodb; \ + fi; \ docker-php-ext-enable mongodb \ - ;fi \ -;fi + php -m | grep -oiE '^mongodb$'; \ + fi; \ +fi ########################################################################### # Xhprof: diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 1d525c41..092e7115 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -452,15 +452,21 @@ ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ # Install the mongodb extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install mongo && \ - echo "extension=mongo.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongo.ini \ - ;else \ - pecl install mongodb && \ - echo "extension=mongodb.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongodb.ini \ - ;fi \ -;fi + pecl install mongo; \ + echo "extension=mongo.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongo.ini; \ + php -m | grep -oiE '^mongo$'; \ + else \ + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install mongodb-1.9.2; \ + else \ + pecl install mongodb; \ + fi; \ + echo "extension=mongodb.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongodb.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongodb.ini; \ + php -m | grep -oiE '^mongodb$'; \ + fi; \ +fi ########################################################################### # AMQP: From 4439c16acd22586b7700477dffead81ada7161d0 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 7 Oct 2021 22:58:28 +0800 Subject: [PATCH 283/372] CI: skip install PG_CLIENT --- .github/workflows/main-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 97a324cb..6721cc70 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -44,6 +44,7 @@ jobs: sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env sed -i -- 's/SSDB=true/SSDB=false/g' .env sed -i -- 's/ENCHANT=true/ENCHANT=false/g' .env + sed -i -- 's/PG_CLIENT=true/PG_CLIENT=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m From 67b7d186071b83761e010c60fda0c1de0d70285e Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 7 Oct 2021 23:32:57 +0800 Subject: [PATCH 284/372] fix typo --- php-fpm/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 44b296d2..1f99e726 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -357,7 +357,7 @@ ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ # Install the mongodb extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install mongo && \ + pecl install mongo; \ docker-php-ext-enable mongo; \ php -m | grep -oiE '^mongo$'; \ else \ @@ -366,7 +366,7 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ else \ pecl install mongodb; \ fi; \ - docker-php-ext-enable mongodb \ + docker-php-ext-enable mongodb; \ php -m | grep -oiE '^mongodb$'; \ fi; \ fi From 50300f5bb14591866afbd0cad84722e9c2c4d22c Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Thu, 7 Oct 2021 23:39:34 +0800 Subject: [PATCH 285/372] php-worker mongodb --- php-worker/Dockerfile | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 8dabe290..0f6335d7 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -141,13 +141,19 @@ RUN if [ ${INSTALL_SOAP} = true ]; then \ # Install MongoDB drivers: ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ - pecl install mongo; \ - docker-php-ext-enable mongo; \ - else \ - pecl install mongodb; \ - docker-php-ext-enable mongodb; \ - fi; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ + pecl install mongo; \ + docker-php-ext-enable mongo; \ + php -m | grep -oiE '^mongo$'; \ + else \ + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install mongodb-1.9.2; \ + else \ + pecl install mongodb; \ + fi; \ + docker-php-ext-enable mongodb; \ + php -m | grep -oiE '^mongodb$'; \ + fi; \ fi ########################################################################### From 986deb692530619af53556bf4313f92e3bdd7811 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Fri, 8 Oct 2021 08:42:30 +0800 Subject: [PATCH 286/372] CI: skip install MSSQL --- .github/workflows/main-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 6721cc70..dee2275e 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -43,8 +43,7 @@ jobs: sed -i -- 's/V8JS=true/V8JS=false/g' .env sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env sed -i -- 's/SSDB=true/SSDB=false/g' .env - sed -i -- 's/ENCHANT=true/ENCHANT=false/g' .env - sed -i -- 's/PG_CLIENT=true/PG_CLIENT=false/g' .env + sed -i -- 's/MSSQL=true/MSSQL=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} docker-compose exec -T -- ${{ matrix.service }} php -m From 45a7f9ad6fc7f557a2ccba650e0c03ecc7750d3d Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Fri, 8 Oct 2021 08:51:33 +0800 Subject: [PATCH 287/372] CI: skip ENCHANT, PG_CLIENT --- .github/workflows/main-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index dee2275e..3fa12814 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -43,6 +43,8 @@ jobs: sed -i -- 's/V8JS=true/V8JS=false/g' .env sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env sed -i -- 's/SSDB=true/SSDB=false/g' .env + sed -i -- 's/ENCHANT=true/ENCHANT=false/g' .env + sed -i -- 's/PG_CLIENT=true/PG_CLIENT=false/g' .env sed -i -- 's/MSSQL=true/MSSQL=false/g' .env docker-compose build ${{ matrix.service }} docker-compose up -d --no-deps -- ${{ matrix.service }} From 6c50719b75b3030c1c696ae00143facd60ddd60b Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 9 Oct 2021 01:18:32 +0800 Subject: [PATCH 288/372] fix php5.6 php-worker swoole --- php-worker/Dockerfile | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 0f6335d7..d386f239 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -25,6 +25,7 @@ RUN apk --update add wget \ build-base \ libmcrypt-dev \ libxml2-dev \ + linux-headers \ pcre-dev \ zlib-dev \ autoconf \ @@ -350,20 +351,21 @@ RUN if [ ${INSTALL_REDIS} = true ]; then \ ARG INSTALL_SWOOLE=false -RUN if [ ${INSTALL_SWOOLE} = true ]; then \ - # Install Php Swoole Extension - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ - echo '' | pecl -q install swoole-2.0.10; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ - echo '' | pecl -q install swoole-4.3.5; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ - echo '' | pecl -q install swoole-4.5.11; \ - else \ - echo '' | pecl -q install swoole; \ - fi; \ - docker-php-ext-enable swoole \ - && php -m | grep -q 'swoole' \ - ;fi +RUN set -eux; \ + if [ ${INSTALL_SWOOLE} = true ]; then \ + # Install Php Swoole Extension + if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ + pecl install swoole-2.0.10; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + pecl install swoole-4.3.5; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + pecl install swoole-4.5.11; \ + else \ + pecl install swoole; \ + fi; \ + docker-php-ext-enable swoole; \ + php -m | grep -oiE '^swoole$'; \ + fi ########################################################################### # Taint EXTENSION From 9a451684f2949c5cf3c5b21e9d07f164c6e6caa9 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 9 Oct 2021 10:44:21 +0800 Subject: [PATCH 289/372] up php default version to 7.4 --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 78fb7f1a..248bcb19 100644 --- a/.env.example +++ b/.env.example @@ -39,7 +39,7 @@ COMPOSE_PROJECT_NAME=laradock # Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). # Accepted values: 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 -PHP_VERSION=7.3 +PHP_VERSION=7.4 ### Phalcon Version ########################################### From d5e990caba08a62d54cedbf834348539cd6fc621 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 9 Oct 2021 10:45:57 +0800 Subject: [PATCH 290/372] php-fpm: add ionCube Loader enabled check --- php-fpm/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 1f99e726..06fa37cd 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -636,6 +636,7 @@ RUN if [ ${INSTALL_IONCUBE} = true ]; then \ && mv /tmp/ioncube/ioncube_loader_lin_${LARADOCK_PHP_VERSION}.so $(php -r "echo ini_get('extension_dir');")/ioncube_loader.so \ && printf "zend_extension=ioncube_loader.so\n" > $PHP_INI_DIR/conf.d/0ioncube.ini \ && rm -rf /tmp/ioncube* \ + && php -m | grep -oiE '^ionCube Loader$' \ ;fi \ ;fi From 3a7631c673252175ff64cd8bea863f26ab15c567 Mon Sep 17 00:00:00 2001 From: "Shao Yu-Lung (Allen)" Date: Sat, 9 Oct 2021 15:48:30 +0800 Subject: [PATCH 291/372] CI build enable install ioncube --- .github/workflows/main-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 3fa12814..f50d1a0e 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -39,7 +39,6 @@ jobs: sed -i -- 's/RDKAFKA=true/RDKAFKA=false/g' .env sed -i -- 's/MAILPARSE=true/MAILPARSE=false/g' .env sed -i -- 's/OCI8=true/OCI8=false/g' .env - sed -i -- 's/IONCUBE=true/IONCUBE=false/g' .env sed -i -- 's/V8JS=true/V8JS=false/g' .env sed -i -- 's/AUDIOWAVEFORM=true/AUDIOWAVEFORM=false/g' .env sed -i -- 's/SSDB=true/SSDB=false/g' .env From 145864fab2fc2b170add5448feb5c4969d337bf2 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 12 Oct 2021 12:40:28 +0200 Subject: [PATCH 292/372] fix crontab --- workspace/crontab/laradock | 2 -- 1 file changed, 2 deletions(-) diff --git a/workspace/crontab/laradock b/workspace/crontab/laradock index 0ebfe935..d21529bf 100644 --- a/workspace/crontab/laradock +++ b/workspace/crontab/laradock @@ -1,3 +1 @@ * * * * * laradock /usr/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1 - -* * * * * cd /var/www/artisan && php artisan schedule:run >> /dev/null 2>&1 \ No newline at end of file From 4183251b7579a5680faccb4b2bbbf3e5f4f0c616 Mon Sep 17 00:00:00 2001 From: Artem Davletshin <49448966+davlet42@users.noreply.github.com> Date: Sat, 16 Oct 2021 00:03:02 +0300 Subject: [PATCH 293/372] Add RabbitMQ Web STOMP --- .env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/.env.example b/.env.example index 248bcb19..168ae649 100644 --- a/.env.example +++ b/.env.example @@ -453,6 +453,7 @@ SQS_MANAGEMENT_HTTP_HOST_PORT=9325 RABBITMQ_NODE_HOST_PORT=5672 RABBITMQ_MANAGEMENT_HTTP_HOST_PORT=15672 RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671 +RABBITMQ_WEB_STOMP_HOST_PORT=15674 ### MERCURE ############################################## From 1d7477b68648ba7e43b00f78eea3586a122eb343 Mon Sep 17 00:00:00 2001 From: Artem Davletshin <49448966+davlet42@users.noreply.github.com> Date: Sat, 16 Oct 2021 00:04:28 +0300 Subject: [PATCH 294/372] Add RabbitMQ Web STOMP --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index a9fe7c90..24035d6b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -809,6 +809,7 @@ services: - "${RABBITMQ_NODE_HOST_PORT}:5672" - "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672" - "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671" + - "${RABBITMQ_WEB_STOMP_HOST_PORT}:15674" privileged: true hostname: laradock-rabbitmq volumes: From 780d0bb764017554f95404d679c7edbf13261cef Mon Sep 17 00:00:00 2001 From: VVVi <2038584+VVVi@users.noreply.github.com> Date: Sun, 17 Oct 2021 11:45:27 +0200 Subject: [PATCH 295/372] Xdebug compatibilyti improvement Please take a look at https://xdebug.org/docs/compat , for now with PHP 8, 7.3, 7.4 should be used xdebug 3.1. --- php-fpm/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 06fa37cd..80bf946c 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -219,8 +219,9 @@ ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install xdebug-3.0.0; \ + # https://xdebug.org/docs/compat + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \ + pecl install xdebug-3.1.1; \ else \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install xdebug-2.5.5; \ From 986ea489698137ce905691e474082c9c4e3214f7 Mon Sep 17 00:00:00 2001 From: DowneyL Date: Thu, 28 Oct 2021 19:39:07 +0800 Subject: [PATCH 296/372] update jenkins version --- jenkins/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jenkins/Dockerfile b/jenkins/Dockerfile index df66c423..99d71acd 100644 --- a/jenkins/Dockerfile +++ b/jenkins/Dockerfile @@ -36,11 +36,11 @@ COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-agent-port.groov # jenkins version being bundled in this docker image ARG JENKINS_VERSION -ENV JENKINS_VERSION ${JENKINS_VERSION:-2.89.2} +ENV JENKINS_VERSION ${JENKINS_VERSION:-2.303.2} # jenkins.war checksum, download will be validated using it -# 2.89.2 -ARG JENKINS_SHA=014f669f32bc6e925e926e260503670b32662f006799b133a031a70a794c8a14 +# 2.303.2 +ARG JENKINS_SHA=c4b8532e25a33001a3d8883d3cd87a664953ace239b486839b683065817d29cf # Can be used to customize where jenkins.war get downloaded from From 292783b76e1cf2456e8ca4bcf2aca296a0059457 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 12 Nov 2021 15:22:34 +0100 Subject: [PATCH 297/372] display more logos --- DOCUMENTATION/content/introduction/index.md | 40 +++++++++++++++++++++ README.md | 40 +++++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 0c726d49..689ab442 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -442,6 +442,13 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + +

### Bronze Sponsors @@ -481,6 +488,39 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

diff --git a/README.md b/README.md index fbe581eb..125db955 100644 --- a/README.md +++ b/README.md @@ -249,6 +249,13 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + +

### Bronze Sponsors @@ -288,6 +295,39 @@ Sponsoring is an act of giving in a different fashion. 🌱 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

From 2b04ed5e0e3a1aaed76862f1a688c21e42843bc7 Mon Sep 17 00:00:00 2001 From: vaiil Date: Sun, 14 Nov 2021 16:19:09 +0300 Subject: [PATCH 298/372] Migrate to official DockerHub repository From readme of [phpmyadmin/docker](https://github.com/phpmyadmin/docker) > Note that since phpMyAdmin has been accepted in to the official DockerHub repository, you can use either that or this older phpMyAdmin repository for your Docker installation. This is maintained as a courtesy to users who have not migrated. P.S. version from `phpmyadmin` supports `caching_sha2_password`, that makes me happy :) --- phpmyadmin/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpmyadmin/Dockerfile b/phpmyadmin/Dockerfile index 75812d9b..367e3134 100644 --- a/phpmyadmin/Dockerfile +++ b/phpmyadmin/Dockerfile @@ -1,4 +1,4 @@ -FROM phpmyadmin/phpmyadmin +FROM phpmyadmin LABEL maintainer="Bo-Yi Wu " From e8137d0c758ff743bca7c09a44c9513f2ce26b7f Mon Sep 17 00:00:00 2001 From: Johnathan Douglas de Souza Santos Date: Tue, 14 Dec 2021 10:39:20 -0300 Subject: [PATCH 299/372] Extension for Oracle Database, php 8.0 Error: pecl/oci8 requires PHP (version >= 8.1.0), installed version is 8.0.13 --------- https://pecl.php.net/package/oci8 The OCI8 extension lets you access Oracle Database. Use 'pecl install oci8' to install for PHP 8.1. Use 'pecl install oci8-3.0.1' to install for PHP 8.0. Use 'pecl install oci8-2.2.0' to install for PHP 7. Use 'pecl install oci8-2.0.12' to install for PHP 5.2 - PHP 5.6. Use 'pecl install oci8-1.4.10' to install for PHP 4.3.9 - PHP 5.1. --- workspace/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 092e7115..28eb2622 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -914,6 +914,8 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.12; \ elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ + elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "80000" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-3.0.1; \ else \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ fi \ From 4debd4f9653789745847d0e27320f753ad0f0b22 Mon Sep 17 00:00:00 2001 From: Erik Niebla Date: Tue, 14 Dec 2021 09:53:23 -0500 Subject: [PATCH 300/372] Add PHP 8.1 ini file --- php-fpm/php8.1.ini | 1948 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1948 insertions(+) create mode 100644 php-fpm/php8.1.ini diff --git a/php-fpm/php8.1.ini b/php-fpm/php8.1.ini new file mode 100644 index 00000000..604059bf --- /dev/null +++ b/php-fpm/php8.1.ini @@ -0,0 +1,1948 @@ +[PHP] + +;;;;;;;;;;;;;;;;;;; +; About php.ini ; +;;;;;;;;;;;;;;;;;;; +; PHP's initialization file, generally called php.ini, is responsible for +; configuring many of the aspects of PHP's behavior. + +; PHP attempts to find and load this configuration from a number of locations. +; The following is a summary of its search order: +; 1. SAPI module specific location. +; 2. The PHPRC environment variable. (As of PHP 5.2.0) +; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) +; 4. Current working directory (except CLI) +; 5. The web server's directory (for SAPI modules), or directory of PHP +; (otherwise in Windows) +; 6. The directory from the --with-config-file-path compile time option, or the +; Windows directory (usually C:\windows) +; See the PHP docs for more specific information. +; https://php.net/configuration.file + +; The syntax of the file is extremely simple. Whitespace and lines +; beginning with a semicolon are silently ignored (as you probably guessed). +; Section headers (e.g. [Foo]) are also silently ignored, even though +; they might mean something in the future. + +; Directives following the section heading [PATH=/www/mysite] only +; apply to PHP files in the /www/mysite directory. Directives +; following the section heading [HOST=www.example.com] only apply to +; PHP files served from www.example.com. Directives set in these +; special sections cannot be overridden by user-defined INI files or +; at runtime. Currently, [PATH=] and [HOST=] sections only work under +; CGI/FastCGI. +; https://php.net/ini.sections + +; Directives are specified using the following syntax: +; directive = value +; Directive names are *case sensitive* - foo=bar is different from FOO=bar. +; Directives are variables used to configure PHP or PHP extensions. +; There is no name validation. If PHP can't find an expected +; directive because it is not set or is mistyped, a default value will be used. + +; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one +; of the INI constants (On, Off, True, False, Yes, No and None) or an expression +; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a +; previously set variable or directive (e.g. ${foo}) + +; Expressions in the INI file are limited to bitwise operators and parentheses: +; | bitwise OR +; ^ bitwise XOR +; & bitwise AND +; ~ bitwise NOT +; ! boolean NOT + +; Boolean flags can be turned on using the values 1, On, True or Yes. +; They can be turned off using the values 0, Off, False or No. + +; An empty string can be denoted by simply not writing anything after the equal +; sign, or by using the None keyword: + +; foo = ; sets foo to an empty string +; foo = None ; sets foo to an empty string +; foo = "None" ; sets foo to the string 'None' + +; If you use constants in your value, and these constants belong to a +; dynamically loaded extension (either a PHP extension or a Zend extension), +; you may only use these constants *after* the line that loads the extension. + +;;;;;;;;;;;;;;;;;;; +; About this file ; +;;;;;;;;;;;;;;;;;;; +; PHP comes packaged with two INI files. One that is recommended to be used +; in production environments and one that is recommended to be used in +; development environments. + +; php.ini-production contains settings which hold security, performance and +; best practices at its core. But please be aware, these settings may break +; compatibility with older or less security conscience applications. We +; recommending using the production ini in production and testing environments. + +; php.ini-development is very similar to its production variant, except it is +; much more verbose when it comes to errors. We recommend using the +; development version only in development environments, as errors shown to +; application users can inadvertently leak otherwise secure information. + +; This is the php.ini-development INI file. + +;;;;;;;;;;;;;;;;;;; +; Quick Reference ; +;;;;;;;;;;;;;;;;;;; + +; The following are all the settings which are different in either the production +; or development versions of the INIs with respect to PHP's default behavior. +; Please see the actual settings later in the document for more details as to why +; we recommend these changes in PHP's behavior. + +; display_errors +; Default Value: On +; Development Value: On +; Production Value: Off + +; display_startup_errors +; Default Value: On +; Development Value: On +; Production Value: Off + +; error_reporting +; Default Value: E_ALL +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT + +; log_errors +; Default Value: Off +; Development Value: On +; Production Value: On + +; max_input_time +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) + +; output_buffering +; Default Value: Off +; Development Value: 4096 +; Production Value: 4096 + +; register_argc_argv +; Default Value: On +; Development Value: Off +; Production Value: Off + +; request_order +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" + +; session.gc_divisor +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 + +; session.sid_bits_per_character +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 + +; short_open_tag +; Default Value: On +; Development Value: Off +; Production Value: Off + +; variables_order +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS" + +; zend.exception_ignore_args +; Default Value: Off +; Development Value: Off +; Production Value: On + +; zend.exception_string_param_max_len +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 + +;;;;;;;;;;;;;;;;;;;; +; php.ini Options ; +;;;;;;;;;;;;;;;;;;;; +; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" +;user_ini.filename = ".user.ini" + +; To disable this feature set this option to an empty value +;user_ini.filename = + +; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) +;user_ini.cache_ttl = 300 + +;;;;;;;;;;;;;;;;;;;; +; Language Options ; +;;;;;;;;;;;;;;;;;;;; + +; Enable the PHP scripting language engine under Apache. +; https://php.net/engine +engine = On + +; This directive determines whether or not PHP will recognize code between +; tags as PHP source which should be processed as such. It is +; generally recommended that should be used and that this feature +; should be disabled, as enabling it may result in issues when generating XML +; documents, however this remains supported for backward compatibility reasons. +; Note that this directive does not control the would work. +; https://php.net/syntax-highlighting +;highlight.string = #DD0000 +;highlight.comment = #FF9900 +;highlight.keyword = #007700 +;highlight.default = #0000BB +;highlight.html = #000000 + +; If enabled, the request will be allowed to complete even if the user aborts +; the request. Consider enabling it if executing long requests, which may end up +; being interrupted by the user or a browser timing out. PHP's default behavior +; is to disable this feature. +; https://php.net/ignore-user-abort +;ignore_user_abort = On + +; Determines the size of the realpath cache to be used by PHP. This value should +; be increased on systems where PHP opens many files to reflect the quantity of +; the file operations performed. +; Note: if open_basedir is set, the cache is disabled +; https://php.net/realpath-cache-size +;realpath_cache_size = 4096k + +; Duration of time, in seconds for which to cache realpath information for a given +; file or directory. For systems with rarely changing files, consider increasing this +; value. +; https://php.net/realpath-cache-ttl +;realpath_cache_ttl = 120 + +; Enables or disables the circular reference collector. +; https://php.net/zend.enable-gc +zend.enable_gc = On + +; If enabled, scripts may be written in encodings that are incompatible with +; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such +; encodings. To use this feature, mbstring extension must be enabled. +;zend.multibyte = Off + +; Allows to set the default encoding for the scripts. This value will be used +; unless "declare(encoding=...)" directive appears at the top of the script. +; Only affects if zend.multibyte is set. +;zend.script_encoding = + +; Allows to include or exclude arguments from stack traces generated for exceptions. +; In production, it is recommended to turn this setting on to prohibit the output +; of sensitive information in stack traces +; Default Value: Off +; Development Value: Off +; Production Value: On +zend.exception_ignore_args = Off + +; Allows setting the maximum string length in an argument of a stringified stack trace +; to a value between 0 and 1000000. +; This has no effect when zend.exception_ignore_args is enabled. +; Default Value: 15 +; Development Value: 15 +; Production Value: 0 +zend.exception_string_param_max_len = 15 + +;;;;;;;;;;;;;;;;; +; Miscellaneous ; +;;;;;;;;;;;;;;;;; + +; Decides whether PHP may expose the fact that it is installed on the server +; (e.g. by adding its signature to the Web server header). It is no security +; threat in any way, but it makes it possible to determine whether you use PHP +; on your server or not. +; https://php.net/expose-php +expose_php = On + +;;;;;;;;;;;;;;;;;;; +; Resource Limits ; +;;;;;;;;;;;;;;;;;;; + +; Maximum execution time of each script, in seconds +; https://php.net/max-execution-time +; Note: This directive is hardcoded to 0 for the CLI SAPI +max_execution_time = 30 + +; Maximum amount of time each script may spend parsing request data. It's a good +; idea to limit this time on productions servers in order to eliminate unexpectedly +; long running scripts. +; Note: This directive is hardcoded to -1 for the CLI SAPI +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) +; https://php.net/max-input-time +max_input_time = 60 + +; Maximum input variable nesting level +; https://php.net/max-input-nesting-level +;max_input_nesting_level = 64 + +; How many GET/POST/COOKIE input variables may be accepted +;max_input_vars = 1000 + +; Maximum amount of memory a script may consume +; https://php.net/memory-limit +memory_limit = 128M + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Error handling and logging ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; This directive informs PHP of which errors, warnings and notices you would like +; it to take action for. The recommended way of setting values for this +; directive is through the use of the error level constants and bitwise +; operators. The error level constants are below here for convenience as well as +; some common settings and their meanings. +; By default, PHP is set to take action on all errors, notices and warnings EXCEPT +; those related to E_NOTICE and E_STRICT, which together cover best practices and +; recommended coding standards in PHP. For performance reasons, this is the +; recommend error reporting setting. Your production server shouldn't be wasting +; resources complaining about best practices and coding standards. That's what +; development servers and development settings are for. +; Note: The php.ini-development file has this setting as E_ALL. This +; means it pretty much reports everything which is exactly what you want during +; development and early testing. +; +; Error Level Constants: +; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) +; E_ERROR - fatal run-time errors +; E_RECOVERABLE_ERROR - almost fatal run-time errors +; E_WARNING - run-time warnings (non-fatal errors) +; E_PARSE - compile-time parse errors +; E_NOTICE - run-time notices (these are warnings which often result +; from a bug in your code, but it's possible that it was +; intentional (e.g., using an uninitialized variable and +; relying on the fact it is automatically initialized to an +; empty string) +; E_STRICT - run-time notices, enable to have PHP suggest changes +; to your code which will ensure the best interoperability +; and forward compatibility of your code +; E_CORE_ERROR - fatal errors that occur during PHP's initial startup +; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's +; initial startup +; E_COMPILE_ERROR - fatal compile-time errors +; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) +; E_USER_ERROR - user-generated error message +; E_USER_WARNING - user-generated warning message +; E_USER_NOTICE - user-generated notice message +; E_DEPRECATED - warn about code that will not work in future versions +; of PHP +; E_USER_DEPRECATED - user-generated deprecation warnings +; +; Common Values: +; E_ALL (Show all errors, warnings and notices including coding standards.) +; E_ALL & ~E_NOTICE (Show all errors, except for notices) +; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) +; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) +; Default Value: E_ALL +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT +; https://php.net/error-reporting +error_reporting = E_ALL + +; This directive controls whether or not and where PHP will output errors, +; notices and warnings too. Error output is very useful during development, but +; it could be very dangerous in production environments. Depending on the code +; which is triggering the error, sensitive information could potentially leak +; out of your application such as database usernames and passwords or worse. +; For production environments, we recommend logging errors rather than +; sending them to STDOUT. +; Possible Values: +; Off = Do not display any errors +; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) +; On or stdout = Display errors to STDOUT +; Default Value: On +; Development Value: On +; Production Value: Off +; https://php.net/display-errors +display_errors = On + +; The display of errors which occur during PHP's startup sequence are handled +; separately from display_errors. We strongly recommend you set this to 'off' +; for production servers to avoid leaking configuration details. +; Default Value: On +; Development Value: On +; Production Value: Off +; https://php.net/display-startup-errors +display_startup_errors = On + +; Besides displaying errors, PHP can also log errors to locations such as a +; server-specific log, STDERR, or a location specified by the error_log +; directive found below. While errors should not be displayed on productions +; servers they should still be monitored and logging is a great way to do that. +; Default Value: Off +; Development Value: On +; Production Value: On +; https://php.net/log-errors +log_errors = On + +; Do not log repeated messages. Repeated errors must occur in same file on same +; line unless ignore_repeated_source is set true. +; https://php.net/ignore-repeated-errors +ignore_repeated_errors = Off + +; Ignore source of message when ignoring repeated messages. When this setting +; is On you will not log errors with repeated messages from different files or +; source lines. +; https://php.net/ignore-repeated-source +ignore_repeated_source = Off + +; If this parameter is set to Off, then memory leaks will not be shown (on +; stdout or in the log). This is only effective in a debug compile, and if +; error reporting includes E_WARNING in the allowed list +; https://php.net/report-memleaks +report_memleaks = On + +; This setting is off by default. +;report_zend_debug = 0 + +; Turn off normal error reporting and emit XML-RPC error XML +; https://php.net/xmlrpc-errors +;xmlrpc_errors = 0 + +; An XML-RPC faultCode +;xmlrpc_error_number = 0 + +; When PHP displays or logs an error, it has the capability of formatting the +; error message as HTML for easier reading. This directive controls whether +; the error message is formatted as HTML or not. +; Note: This directive is hardcoded to Off for the CLI SAPI +; https://php.net/html-errors +;html_errors = On + +; If html_errors is set to On *and* docref_root is not empty, then PHP +; produces clickable error messages that direct to a page describing the error +; or function causing the error in detail. +; You can download a copy of the PHP manual from https://php.net/docs +; and change docref_root to the base URL of your local copy including the +; leading '/'. You must also specify the file extension being used including +; the dot. PHP's default behavior is to leave these settings empty, in which +; case no links to documentation are generated. +; Note: Never use this feature for production boxes. +; https://php.net/docref-root +; Examples +;docref_root = "/phpmanual/" + +; https://php.net/docref-ext +;docref_ext = .html + +; String to output before an error message. PHP's default behavior is to leave +; this setting blank. +; https://php.net/error-prepend-string +; Example: +;error_prepend_string = "" + +; String to output after an error message. PHP's default behavior is to leave +; this setting blank. +; https://php.net/error-append-string +; Example: +;error_append_string = "" + +; Log errors to specified file. PHP's default behavior is to leave this value +; empty. +; https://php.net/error-log +; Example: +;error_log = php_errors.log +; Log errors to syslog (Event Log on Windows). +;error_log = syslog + +; The syslog ident is a string which is prepended to every message logged +; to syslog. Only used when error_log is set to syslog. +;syslog.ident = php + +; The syslog facility is used to specify what type of program is logging +; the message. Only used when error_log is set to syslog. +;syslog.facility = user + +; Set this to disable filtering control characters (the default). +; Some loggers only accept NVT-ASCII, others accept anything that's not +; control characters. If your logger accepts everything, then no filtering +; is needed at all. +; Allowed values are: +; ascii (all printable ASCII characters and NL) +; no-ctrl (all characters except control characters) +; all (all characters) +; raw (like "all", but messages are not split at newlines) +; https://php.net/syslog.filter +;syslog.filter = ascii + +;windows.show_crt_warning +; Default value: 0 +; Development value: 0 +; Production value: 0 + +;;;;;;;;;;;;;;;;; +; Data Handling ; +;;;;;;;;;;;;;;;;; + +; The separator used in PHP generated URLs to separate arguments. +; PHP's default setting is "&". +; https://php.net/arg-separator.output +; Example: +;arg_separator.output = "&" + +; List of separator(s) used by PHP to parse input URLs into variables. +; PHP's default setting is "&". +; NOTE: Every character in this directive is considered as separator! +; https://php.net/arg-separator.input +; Example: +;arg_separator.input = ";&" + +; This directive determines which super global arrays are registered when PHP +; starts up. G,P,C,E & S are abbreviations for the following respective super +; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty +; paid for the registration of these arrays and because ENV is not as commonly +; used as the others, ENV is not recommended on productions servers. You +; can still get access to the environment variables through getenv() should you +; need to. +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS"; +; https://php.net/variables-order +variables_order = "GPCS" + +; This directive determines which super global data (G,P & C) should be +; registered into the super global array REQUEST. If so, it also determines +; the order in which that data is registered. The values for this directive +; are specified in the same manner as the variables_order directive, +; EXCEPT one. Leaving this value empty will cause PHP to use the value set +; in the variables_order directive. It does not mean it will leave the super +; globals array REQUEST empty. +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" +; https://php.net/request-order +request_order = "GP" + +; This directive determines whether PHP registers $argv & $argc each time it +; runs. $argv contains an array of all the arguments passed to PHP when a script +; is invoked. $argc contains an integer representing the number of arguments +; that were passed when the script was invoked. These arrays are extremely +; useful when running scripts from the command line. When this directive is +; enabled, registering these variables consumes CPU cycles and memory each time +; a script is executed. For performance reasons, this feature should be disabled +; on production servers. +; Note: This directive is hardcoded to On for the CLI SAPI +; Default Value: On +; Development Value: Off +; Production Value: Off +; https://php.net/register-argc-argv +register_argc_argv = Off + +; When enabled, the ENV, REQUEST and SERVER variables are created when they're +; first used (Just In Time) instead of when the script starts. If these +; variables are not used within a script, having this directive on will result +; in a performance gain. The PHP directive register_argc_argv must be disabled +; for this directive to have any effect. +; https://php.net/auto-globals-jit +auto_globals_jit = On + +; Whether PHP will read the POST data. +; This option is enabled by default. +; Most likely, you won't want to disable this option globally. It causes $_POST +; and $_FILES to always be empty; the only way you will be able to read the +; POST data will be through the php://input stream wrapper. This can be useful +; to proxy requests or to process the POST data in a memory efficient fashion. +; https://php.net/enable-post-data-reading +;enable_post_data_reading = Off + +; Maximum size of POST data that PHP will accept. +; Its value may be 0 to disable the limit. It is ignored if POST data reading +; is disabled through enable_post_data_reading. +; https://php.net/post-max-size +post_max_size = 8M + +; Automatically add files before PHP document. +; https://php.net/auto-prepend-file +auto_prepend_file = + +; Automatically add files after PHP document. +; https://php.net/auto-append-file +auto_append_file = + +; By default, PHP will output a media type using the Content-Type header. To +; disable this, simply set it to be empty. +; +; PHP's built-in default media type is set to text/html. +; https://php.net/default-mimetype +default_mimetype = "text/html" + +; PHP's default character set is set to UTF-8. +; https://php.net/default-charset +default_charset = "UTF-8" + +; PHP internal character encoding is set to empty. +; If empty, default_charset is used. +; https://php.net/internal-encoding +;internal_encoding = + +; PHP input character encoding is set to empty. +; If empty, default_charset is used. +; https://php.net/input-encoding +;input_encoding = + +; PHP output character encoding is set to empty. +; If empty, default_charset is used. +; See also output_buffer. +; https://php.net/output-encoding +;output_encoding = + +;;;;;;;;;;;;;;;;;;;;;;;;; +; Paths and Directories ; +;;;;;;;;;;;;;;;;;;;;;;;;; + +; UNIX: "/path1:/path2" +;include_path = ".:/php/includes" +; +; Windows: "\path1;\path2" +;include_path = ".;c:\php\includes" +; +; PHP's default setting for include_path is ".;/path/to/php/pear" +; https://php.net/include-path + +; The root of the PHP pages, used only if nonempty. +; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root +; if you are running php as a CGI under any web server (other than IIS) +; see documentation for security issues. The alternate is to use the +; cgi.force_redirect configuration below +; https://php.net/doc-root +doc_root = + +; The directory under which PHP opens the script using /~username used only +; if nonempty. +; https://php.net/user-dir +user_dir = + +; Directory in which the loadable extensions (modules) reside. +; https://php.net/extension-dir +;extension_dir = "./" +; On windows: +;extension_dir = "ext" + +; Directory where the temporary files should be placed. +; Defaults to the system default (see sys_get_temp_dir) +;sys_temp_dir = "/tmp" + +; Whether or not to enable the dl() function. The dl() function does NOT work +; properly in multithreaded servers, such as IIS or Zeus, and is automatically +; disabled on them. +; https://php.net/enable-dl +enable_dl = Off + +; cgi.force_redirect is necessary to provide security running PHP as a CGI under +; most web servers. Left undefined, PHP turns this on by default. You can +; turn it off here AT YOUR OWN RISK +; **You CAN safely turn this off for IIS, in fact, you MUST.** +; https://php.net/cgi.force-redirect +;cgi.force_redirect = 1 + +; if cgi.nph is enabled it will force cgi to always sent Status: 200 with +; every request. PHP's default behavior is to disable this feature. +;cgi.nph = 1 + +; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape +; (iPlanet) web servers, you MAY need to set an environment variable name that PHP +; will look for to know it is OK to continue execution. Setting this variable MAY +; cause security issues, KNOW WHAT YOU ARE DOING FIRST. +; https://php.net/cgi.redirect-status-env +;cgi.redirect_status_env = + +; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's +; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok +; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting +; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting +; of zero causes PHP to behave as before. Default is 1. You should fix your scripts +; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. +; https://php.net/cgi.fix-pathinfo +;cgi.fix_pathinfo=1 + +; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside +; of the web tree and people will not be able to circumvent .htaccess security. +;cgi.discard_path=1 + +; FastCGI under IIS supports the ability to impersonate +; security tokens of the calling client. This allows IIS to define the +; security context that the request runs under. mod_fastcgi under Apache +; does not currently support this feature (03/17/2002) +; Set to 1 if running under IIS. Default is zero. +; https://php.net/fastcgi.impersonate +;fastcgi.impersonate = 1 + +; Disable logging through FastCGI connection. PHP's default behavior is to enable +; this feature. +;fastcgi.logging = 0 + +; cgi.rfc2616_headers configuration option tells PHP what type of headers to +; use when sending HTTP response code. If set to 0, PHP sends Status: header that +; is supported by Apache. When this option is set to 1, PHP will send +; RFC2616 compliant header. +; Default is zero. +; https://php.net/cgi.rfc2616-headers +;cgi.rfc2616_headers = 0 + +; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #! +; (shebang) at the top of the running script. This line might be needed if the +; script support running both as stand-alone script and via PHP CGI<. PHP in CGI +; mode skips this line and ignores its content if this directive is turned on. +; https://php.net/cgi.check-shebang-line +;cgi.check_shebang_line=1 + +;;;;;;;;;;;;;;;; +; File Uploads ; +;;;;;;;;;;;;;;;; + +; Whether to allow HTTP file uploads. +; https://php.net/file-uploads +file_uploads = On + +; Temporary directory for HTTP uploaded files (will use system default if not +; specified). +; https://php.net/upload-tmp-dir +;upload_tmp_dir = + +; Maximum allowed size for uploaded files. +; https://php.net/upload-max-filesize +upload_max_filesize = 2M + +; Maximum number of files that can be uploaded via a single request +max_file_uploads = 20 + +;;;;;;;;;;;;;;;;;; +; Fopen wrappers ; +;;;;;;;;;;;;;;;;;; + +; Whether to allow the treatment of URLs (like http:// or ftp://) as files. +; https://php.net/allow-url-fopen +allow_url_fopen = On + +; Whether to allow include/require to open URLs (like https:// or ftp://) as files. +; https://php.net/allow-url-include +allow_url_include = Off + +; Define the anonymous ftp password (your email address). PHP's default setting +; for this is empty. +; https://php.net/from +;from="john@doe.com" + +; Define the User-Agent string. PHP's default setting for this is empty. +; https://php.net/user-agent +;user_agent="PHP" + +; Default timeout for socket based streams (seconds) +; https://php.net/default-socket-timeout +default_socket_timeout = 60 + +; If your scripts have to deal with files from Macintosh systems, +; or you are running on a Mac and need to deal with files from +; unix or win32 systems, setting this flag will cause PHP to +; automatically detect the EOL character in those files so that +; fgets() and file() will work regardless of the source of the file. +; https://php.net/auto-detect-line-endings +;auto_detect_line_endings = Off + +;;;;;;;;;;;;;;;;;;;;;; +; Dynamic Extensions ; +;;;;;;;;;;;;;;;;;;;;;; + +; If you wish to have an extension loaded automatically, use the following +; syntax: +; +; extension=modulename +; +; For example: +; +; extension=mysqli +; +; When the extension library to load is not located in the default extension +; directory, You may specify an absolute path to the library file: +; +; extension=/path/to/extension/mysqli.so +; +; Note : The syntax used in previous PHP versions ('extension=.so' and +; 'extension='php_.dll') is supported for legacy reasons and may be +; deprecated in a future PHP major version. So, when it is possible, please +; move to the new ('extension=) syntax. +; +; Notes for Windows environments : +; +; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) +; extension folders as well as the separate PECL DLL download (PHP 5+). +; Be sure to appropriately set the extension_dir directive. +; +;extension=bz2 +;extension=curl +;extension=ffi +;extension=ftp +;extension=fileinfo +;extension=gd +;extension=gettext +;extension=gmp +;extension=intl +;extension=imap +;extension=ldap +;extension=mbstring +;extension=exif ; Must be after mbstring as it depends on it +;extension=mysqli +;extension=oci8_12c ; Use with Oracle Database 12c Instant Client +;extension=oci8_19 ; Use with Oracle Database 19 Instant Client +;extension=odbc +;extension=openssl +;extension=pdo_firebird +;extension=pdo_mysql +;extension=pdo_oci +;extension=pdo_odbc +;extension=pdo_pgsql +;extension=pdo_sqlite +;extension=pgsql +;extension=shmop + +; The MIBS data available in the PHP distribution must be installed. +; See https://www.php.net/manual/en/snmp.installation.php +;extension=snmp + +;extension=soap +;extension=sockets +;extension=sodium +;extension=sqlite3 +;extension=tidy +;extension=xsl + +;zend_extension=opcache + +;;;;;;;;;;;;;;;;;;; +; Module Settings ; +;;;;;;;;;;;;;;;;;;; + +[CLI Server] +; Whether the CLI web server uses ANSI color coding in its terminal output. +cli_server.color = On + +[Date] +; Defines the default timezone used by the date functions +; https://php.net/date.timezone +;date.timezone = + +; https://php.net/date.default-latitude +;date.default_latitude = 31.7667 + +; https://php.net/date.default-longitude +;date.default_longitude = 35.2333 + +; https://php.net/date.sunrise-zenith +;date.sunrise_zenith = 90.833333 + +; https://php.net/date.sunset-zenith +;date.sunset_zenith = 90.833333 + +[filter] +; https://php.net/filter.default +;filter.default = unsafe_raw + +; https://php.net/filter.default-flags +;filter.default_flags = + +[iconv] +; Use of this INI entry is deprecated, use global input_encoding instead. +; If empty, default_charset or input_encoding or iconv.input_encoding is used. +; The precedence is: default_charset < input_encoding < iconv.input_encoding +;iconv.input_encoding = + +; Use of this INI entry is deprecated, use global internal_encoding instead. +; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. +; The precedence is: default_charset < internal_encoding < iconv.internal_encoding +;iconv.internal_encoding = + +; Use of this INI entry is deprecated, use global output_encoding instead. +; If empty, default_charset or output_encoding or iconv.output_encoding is used. +; The precedence is: default_charset < output_encoding < iconv.output_encoding +; To use an output encoding conversion, iconv's output handler must be set +; otherwise output encoding conversion cannot be performed. +;iconv.output_encoding = + +[imap] +; rsh/ssh logins are disabled by default. Use this INI entry if you want to +; enable them. Note that the IMAP library does not filter mailbox names before +; passing them to rsh/ssh command, thus passing untrusted data to this function +; with rsh/ssh enabled is insecure. +;imap.enable_insecure_rsh=0 + +[intl] +;intl.default_locale = +; This directive allows you to produce PHP errors when some error +; happens within intl functions. The value is the level of the error produced. +; Default is 0, which does not produce any errors. +;intl.error_level = E_WARNING +;intl.use_exceptions = 0 + +[sqlite3] +; Directory pointing to SQLite3 extensions +; https://php.net/sqlite3.extension-dir +;sqlite3.extension_dir = + +; SQLite defensive mode flag (only available from SQLite 3.26+) +; When the defensive flag is enabled, language features that allow ordinary +; SQL to deliberately corrupt the database file are disabled. This forbids +; writing directly to the schema, shadow tables (eg. FTS data tables), or +; the sqlite_dbpage virtual table. +; https://www.sqlite.org/c3ref/c_dbconfig_defensive.html +; (for older SQLite versions, this flag has no use) +;sqlite3.defensive = 1 + +[Pcre] +; PCRE library backtracking limit. +; https://php.net/pcre.backtrack-limit +;pcre.backtrack_limit=100000 + +; PCRE library recursion limit. +; Please note that if you set this value to a high number you may consume all +; the available process stack and eventually crash PHP (due to reaching the +; stack size limit imposed by the Operating System). +; https://php.net/pcre.recursion-limit +;pcre.recursion_limit=100000 + +; Enables or disables JIT compilation of patterns. This requires the PCRE +; library to be compiled with JIT support. +;pcre.jit=1 + +[Pdo] +; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" +; https://php.net/pdo-odbc.connection-pooling +;pdo_odbc.connection_pooling=strict + +[Pdo_mysql] +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +pdo_mysql.default_socket= + +[Phar] +; https://php.net/phar.readonly +;phar.readonly = On + +; https://php.net/phar.require-hash +;phar.require_hash = On + +;phar.cache_list = + +[mail function] +; For Win32 only. +; https://php.net/smtp +SMTP = localhost +; https://php.net/smtp-port +smtp_port = 25 + +; For Win32 only. +; https://php.net/sendmail-from +;sendmail_from = me@example.com + +; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). +; https://php.net/sendmail-path +;sendmail_path = + +; Force the addition of the specified parameters to be passed as extra parameters +; to the sendmail binary. These parameters will always replace the value of +; the 5th parameter to mail(). +;mail.force_extra_parameters = + +; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename +mail.add_x_header = Off + +; The path to a log file that will log all mail() calls. Log entries include +; the full path of the script, line number, To address and headers. +;mail.log = +; Log mail to syslog (Event Log on Windows). +;mail.log = syslog + +[ODBC] +; https://php.net/odbc.default-db +;odbc.default_db = Not yet implemented + +; https://php.net/odbc.default-user +;odbc.default_user = Not yet implemented + +; https://php.net/odbc.default-pw +;odbc.default_pw = Not yet implemented + +; Controls the ODBC cursor model. +; Default: SQL_CURSOR_STATIC (default). +;odbc.default_cursortype + +; Allow or prevent persistent links. +; https://php.net/odbc.allow-persistent +odbc.allow_persistent = On + +; Check that a connection is still valid before reuse. +; https://php.net/odbc.check-persistent +odbc.check_persistent = On + +; Maximum number of persistent links. -1 means no limit. +; https://php.net/odbc.max-persistent +odbc.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; https://php.net/odbc.max-links +odbc.max_links = -1 + +; Handling of LONG fields. Returns number of bytes to variables. 0 means +; passthru. +; https://php.net/odbc.defaultlrl +odbc.defaultlrl = 4096 + +; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. +; See the documentation on odbc_binmode and odbc_longreadlen for an explanation +; of odbc.defaultlrl and odbc.defaultbinmode +; https://php.net/odbc.defaultbinmode +odbc.defaultbinmode = 1 + +[MySQLi] + +; Maximum number of persistent links. -1 means no limit. +; https://php.net/mysqli.max-persistent +mysqli.max_persistent = -1 + +; Allow accessing, from PHP's perspective, local files with LOAD DATA statements +; https://php.net/mysqli.allow_local_infile +;mysqli.allow_local_infile = On + +; It allows the user to specify a folder where files that can be sent via LOAD DATA +; LOCAL can exist. It is ignored if mysqli.allow_local_infile is enabled. +;mysqli.local_infile_directory = + +; Allow or prevent persistent links. +; https://php.net/mysqli.allow-persistent +mysqli.allow_persistent = On + +; Maximum number of links. -1 means no limit. +; https://php.net/mysqli.max-links +mysqli.max_links = -1 + +; Default port number for mysqli_connect(). If unset, mysqli_connect() will use +; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the +; compile-time value defined MYSQL_PORT (in that order). Win32 will only look +; at MYSQL_PORT. +; https://php.net/mysqli.default-port +mysqli.default_port = 3306 + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; https://php.net/mysqli.default-socket +mysqli.default_socket = + +; Default host for mysqli_connect() (doesn't apply in safe mode). +; https://php.net/mysqli.default-host +mysqli.default_host = + +; Default user for mysqli_connect() (doesn't apply in safe mode). +; https://php.net/mysqli.default-user +mysqli.default_user = + +; Default password for mysqli_connect() (doesn't apply in safe mode). +; Note that this is generally a *bad* idea to store passwords in this file. +; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") +; and reveal this password! And of course, any users with read access to this +; file will be able to reveal the password as well. +; https://php.net/mysqli.default-pw +mysqli.default_pw = + +; Allow or prevent reconnect +mysqli.reconnect = Off + +; If this option is enabled, closing a persistent connection will rollback +; any pending transactions of this connection, before it is put back +; into the persistent connection pool. +;mysqli.rollback_on_cached_plink = Off + +[mysqlnd] +; Enable / Disable collection of general statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +mysqlnd.collect_statistics = On + +; Enable / Disable collection of memory usage statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +mysqlnd.collect_memory_statistics = On + +; Records communication from all extensions using mysqlnd to the specified log +; file. +; https://php.net/mysqlnd.debug +;mysqlnd.debug = + +; Defines which queries will be logged. +;mysqlnd.log_mask = 0 + +; Default size of the mysqlnd memory pool, which is used by result sets. +;mysqlnd.mempool_default_size = 16000 + +; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. +;mysqlnd.net_cmd_buffer_size = 2048 + +; Size of a pre-allocated buffer used for reading data sent by the server in +; bytes. +;mysqlnd.net_read_buffer_size = 32768 + +; Timeout for network requests in seconds. +;mysqlnd.net_read_timeout = 31536000 + +; SHA-256 Authentication Plugin related. File with the MySQL server public RSA +; key. +;mysqlnd.sha256_server_public_key = + +[OCI8] + +; Connection: Enables privileged connections using external +; credentials (OCI_SYSOPER, OCI_SYSDBA) +; https://php.net/oci8.privileged-connect +;oci8.privileged_connect = Off + +; Connection: The maximum number of persistent OCI8 connections per +; process. Using -1 means no limit. +; https://php.net/oci8.max-persistent +;oci8.max_persistent = -1 + +; Connection: The maximum number of seconds a process is allowed to +; maintain an idle persistent connection. Using -1 means idle +; persistent connections will be maintained forever. +; https://php.net/oci8.persistent-timeout +;oci8.persistent_timeout = -1 + +; Connection: The number of seconds that must pass before issuing a +; ping during oci_pconnect() to check the connection validity. When +; set to 0, each oci_pconnect() will cause a ping. Using -1 disables +; pings completely. +; https://php.net/oci8.ping-interval +;oci8.ping_interval = 60 + +; Connection: Set this to a user chosen connection class to be used +; for all pooled server requests with Oracle 11g Database Resident +; Connection Pooling (DRCP). To use DRCP, this value should be set to +; the same string for all web servers running the same application, +; the database pool must be configured, and the connection string must +; specify to use a pooled server. +;oci8.connection_class = + +; High Availability: Using On lets PHP receive Fast Application +; Notification (FAN) events generated when a database node fails. The +; database must also be configured to post FAN events. +;oci8.events = Off + +; Tuning: This option enables statement caching, and specifies how +; many statements to cache. Using 0 disables statement caching. +; https://php.net/oci8.statement-cache-size +;oci8.statement_cache_size = 20 + +; Tuning: Enables statement prefetching and sets the default number of +; rows that will be fetched automatically after statement execution. +; https://php.net/oci8.default-prefetch +;oci8.default_prefetch = 100 + +; Compatibility. Using On means oci_close() will not close +; oci_connect() and oci_new_connect() connections. +; https://php.net/oci8.old-oci-close-semantics +;oci8.old_oci_close_semantics = Off + +[PostgreSQL] +; Allow or prevent persistent links. +; https://php.net/pgsql.allow-persistent +pgsql.allow_persistent = On + +; Detect broken persistent links always with pg_pconnect(). +; Auto reset feature requires a little overheads. +; https://php.net/pgsql.auto-reset-persistent +pgsql.auto_reset_persistent = Off + +; Maximum number of persistent links. -1 means no limit. +; https://php.net/pgsql.max-persistent +pgsql.max_persistent = -1 + +; Maximum number of links (persistent+non persistent). -1 means no limit. +; https://php.net/pgsql.max-links +pgsql.max_links = -1 + +; Ignore PostgreSQL backends Notice message or not. +; Notice message logging require a little overheads. +; https://php.net/pgsql.ignore-notice +pgsql.ignore_notice = 0 + +; Log PostgreSQL backends Notice message or not. +; Unless pgsql.ignore_notice=0, module cannot log notice message. +; https://php.net/pgsql.log-notice +pgsql.log_notice = 0 + +[bcmath] +; Number of decimal digits for all bcmath functions. +; https://php.net/bcmath.scale +bcmath.scale = 0 + +[browscap] +; https://php.net/browscap +;browscap = extra/browscap.ini + +[Session] +; Handler used to store/retrieve data. +; https://php.net/session.save-handler +session.save_handler = files + +; Argument passed to save_handler. In the case of files, this is the path +; where data files are stored. Note: Windows users have to change this +; variable in order to use PHP's session functions. +; +; The path can be defined as: +; +; session.save_path = "N;/path" +; +; where N is an integer. Instead of storing all the session files in +; /path, what this will do is use subdirectories N-levels deep, and +; store the session data in those directories. This is useful if +; your OS has problems with many files in one directory, and is +; a more efficient layout for servers that handle many sessions. +; +; NOTE 1: PHP will not create this directory structure automatically. +; You can use the script in the ext/session dir for that purpose. +; NOTE 2: See the section on garbage collection below if you choose to +; use subdirectories for session storage +; +; The file storage module creates files using mode 600 by default. +; You can change that by using +; +; session.save_path = "N;MODE;/path" +; +; where MODE is the octal representation of the mode. Note that this +; does not overwrite the process's umask. +; https://php.net/session.save-path +;session.save_path = "/tmp" + +; Whether to use strict session mode. +; Strict session mode does not accept an uninitialized session ID, and +; regenerates the session ID if the browser sends an uninitialized session ID. +; Strict mode protects applications from session fixation via a session adoption +; vulnerability. It is disabled by default for maximum compatibility, but +; enabling it is encouraged. +; https://wiki.php.net/rfc/strict_sessions +session.use_strict_mode = 0 + +; Whether to use cookies. +; https://php.net/session.use-cookies +session.use_cookies = 1 + +; https://php.net/session.cookie-secure +;session.cookie_secure = + +; This option forces PHP to fetch and use a cookie for storing and maintaining +; the session id. We encourage this operation as it's very helpful in combating +; session hijacking when not specifying and managing your own session id. It is +; not the be-all and end-all of session hijacking defense, but it's a good start. +; https://php.net/session.use-only-cookies +session.use_only_cookies = 1 + +; Name of the session (used as cookie name). +; https://php.net/session.name +session.name = PHPSESSID + +; Initialize session on request startup. +; https://php.net/session.auto-start +session.auto_start = 0 + +; Lifetime in seconds of cookie or, if 0, until browser is restarted. +; https://php.net/session.cookie-lifetime +session.cookie_lifetime = 0 + +; The path for which the cookie is valid. +; https://php.net/session.cookie-path +session.cookie_path = / + +; The domain for which the cookie is valid. +; https://php.net/session.cookie-domain +session.cookie_domain = + +; Whether or not to add the httpOnly flag to the cookie, which makes it +; inaccessible to browser scripting languages such as JavaScript. +; https://php.net/session.cookie-httponly +session.cookie_httponly = + +; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) +; Current valid values are "Strict", "Lax" or "None". When using "None", +; make sure to include the quotes, as `none` is interpreted like `false` in ini files. +; https://tools.ietf.org/html/draft-west-first-party-cookies-07 +session.cookie_samesite = + +; Handler used to serialize data. php is the standard serializer of PHP. +; https://php.net/session.serialize-handler +session.serialize_handler = php + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using gc_probability/gc_divisor, +; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; https://php.net/session.gc-probability +session.gc_probability = 1 + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using gc_probability/gc_divisor, +; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. +; For high volume production servers, using a value of 1000 is a more efficient approach. +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 +; https://php.net/session.gc-divisor +session.gc_divisor = 1000 + +; After this number of seconds, stored data will be seen as 'garbage' and +; cleaned up by the garbage collection process. +; https://php.net/session.gc-maxlifetime +session.gc_maxlifetime = 1440 + +; NOTE: If you are using the subdirectory option for storing session files +; (see session.save_path above), then garbage collection does *not* +; happen automatically. You will need to do your own garbage +; collection through a shell script, cron entry, or some other method. +; For example, the following script is the equivalent of setting +; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): +; find /path/to/sessions -cmin +24 -type f | xargs rm + +; Check HTTP Referer to invalidate externally stored URLs containing ids. +; HTTP_REFERER has to contain this substring for the session to be +; considered as valid. +; https://php.net/session.referer-check +session.referer_check = + +; Set to {nocache,private,public,} to determine HTTP caching aspects +; or leave this empty to avoid sending anti-caching headers. +; https://php.net/session.cache-limiter +session.cache_limiter = nocache + +; Document expires after n minutes. +; https://php.net/session.cache-expire +session.cache_expire = 180 + +; trans sid support is disabled by default. +; Use of trans sid may risk your users' security. +; Use this option with caution. +; - User may send URL contains active session ID +; to other person via. email/irc/etc. +; - URL that contains active session ID may be stored +; in publicly accessible computer. +; - User may access your site with the same session ID +; always using URL stored in browser's history or bookmarks. +; https://php.net/session.use-trans-sid +session.use_trans_sid = 0 + +; Set session ID character length. This value could be between 22 to 256. +; Shorter length than default is supported only for compatibility reason. +; Users should use 32 or more chars. +; https://php.net/session.sid-length +; Default Value: 32 +; Development Value: 26 +; Production Value: 26 +session.sid_length = 26 + +; The URL rewriter will look for URLs in a defined set of HTML tags. +; is special; if you include them here, the rewriter will +; add a hidden field with the info which is otherwise appended +; to URLs. tag's action attribute URL will not be modified +; unless it is specified. +; Note that all valid entries require a "=", even if no value follows. +; Default Value: "a=href,area=href,frame=src,form=" +; Development Value: "a=href,area=href,frame=src,form=" +; Production Value: "a=href,area=href,frame=src,form=" +; https://php.net/url-rewriter.tags +session.trans_sid_tags = "a=href,area=href,frame=src,form=" + +; URL rewriter does not rewrite absolute URLs by default. +; To enable rewrites for absolute paths, target hosts must be specified +; at RUNTIME. i.e. use ini_set() +; tags is special. PHP will check action attribute's URL regardless +; of session.trans_sid_tags setting. +; If no host is defined, HTTP_HOST will be used for allowed host. +; Example value: php.net,www.php.net,wiki.php.net +; Use "," for multiple hosts. No spaces are allowed. +; Default Value: "" +; Development Value: "" +; Production Value: "" +;session.trans_sid_hosts="" + +; Define how many bits are stored in each character when converting +; the binary hash data to something readable. +; Possible values: +; 4 (4 bits: 0-9, a-f) +; 5 (5 bits: 0-9, a-v) +; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 +; https://php.net/session.hash-bits-per-character +session.sid_bits_per_character = 5 + +; Enable upload progress tracking in $_SESSION +; Default Value: On +; Development Value: On +; Production Value: On +; https://php.net/session.upload-progress.enabled +;session.upload_progress.enabled = On + +; Cleanup the progress information as soon as all POST data has been read +; (i.e. upload completed). +; Default Value: On +; Development Value: On +; Production Value: On +; https://php.net/session.upload-progress.cleanup +;session.upload_progress.cleanup = On + +; A prefix used for the upload progress key in $_SESSION +; Default Value: "upload_progress_" +; Development Value: "upload_progress_" +; Production Value: "upload_progress_" +; https://php.net/session.upload-progress.prefix +;session.upload_progress.prefix = "upload_progress_" + +; The index name (concatenated with the prefix) in $_SESSION +; containing the upload progress information +; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" +; https://php.net/session.upload-progress.name +;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" + +; How frequently the upload progress should be updated. +; Given either in percentages (per-file), or in bytes +; Default Value: "1%" +; Development Value: "1%" +; Production Value: "1%" +; https://php.net/session.upload-progress.freq +;session.upload_progress.freq = "1%" + +; The minimum delay between updates, in seconds +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; https://php.net/session.upload-progress.min-freq +;session.upload_progress.min_freq = "1" + +; Only write session data when session data is changed. Enabled by default. +; https://php.net/session.lazy-write +;session.lazy_write = On + +[Assertion] +; Switch whether to compile assertions at all (to have no overhead at run-time) +; -1: Do not compile at all +; 0: Jump over assertion at run-time +; 1: Execute assertions +; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1) +; Default Value: 1 +; Development Value: 1 +; Production Value: -1 +; https://php.net/zend.assertions +zend.assertions = 1 + +; Assert(expr); active by default. +; https://php.net/assert.active +;assert.active = On + +; Throw an AssertionError on failed assertions +; https://php.net/assert.exception +;assert.exception = On + +; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active) +; https://php.net/assert.warning +;assert.warning = On + +; Don't bail out by default. +; https://php.net/assert.bail +;assert.bail = Off + +; User-function to be called if an assertion fails. +; https://php.net/assert.callback +;assert.callback = 0 + +[COM] +; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs +; https://php.net/com.typelib-file +;com.typelib_file = + +; allow Distributed-COM calls +; https://php.net/com.allow-dcom +;com.allow_dcom = true + +; autoregister constants of a component's typelib on com_load() +; https://php.net/com.autoregister-typelib +;com.autoregister_typelib = true + +; register constants casesensitive +; https://php.net/com.autoregister-casesensitive +;com.autoregister_casesensitive = false + +; show warnings on duplicate constant registrations +; https://php.net/com.autoregister-verbose +;com.autoregister_verbose = true + +; The default character set code-page to use when passing strings to and from COM objects. +; Default: system ANSI code page +;com.code_page= + +; The version of the .NET framework to use. The value of the setting are the first three parts +; of the framework's version number, separated by dots, and prefixed with "v", e.g. "v4.0.30319". +;com.dotnet_version= + +[mbstring] +; language for internal character representation. +; This affects mb_send_mail() and mbstring.detect_order. +; https://php.net/mbstring.language +;mbstring.language = Japanese + +; Use of this INI entry is deprecated, use global internal_encoding instead. +; internal/script encoding. +; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*) +; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. +; The precedence is: default_charset < internal_encoding < iconv.internal_encoding +;mbstring.internal_encoding = + +; Use of this INI entry is deprecated, use global input_encoding instead. +; http input encoding. +; mbstring.encoding_translation = On is needed to use this setting. +; If empty, default_charset or input_encoding or mbstring.input is used. +; The precedence is: default_charset < input_encoding < mbstring.http_input +; https://php.net/mbstring.http-input +;mbstring.http_input = + +; Use of this INI entry is deprecated, use global output_encoding instead. +; http output encoding. +; mb_output_handler must be registered as output buffer to function. +; If empty, default_charset or output_encoding or mbstring.http_output is used. +; The precedence is: default_charset < output_encoding < mbstring.http_output +; To use an output encoding conversion, mbstring's output handler must be set +; otherwise output encoding conversion cannot be performed. +; https://php.net/mbstring.http-output +;mbstring.http_output = + +; enable automatic encoding translation according to +; mbstring.internal_encoding setting. Input chars are +; converted to internal encoding by setting this to On. +; Note: Do _not_ use automatic encoding translation for +; portable libs/applications. +; https://php.net/mbstring.encoding-translation +;mbstring.encoding_translation = Off + +; automatic encoding detection order. +; "auto" detect order is changed according to mbstring.language +; https://php.net/mbstring.detect-order +;mbstring.detect_order = auto + +; substitute_character used when character cannot be converted +; one from another +; https://php.net/mbstring.substitute-character +;mbstring.substitute_character = none + +; Enable strict encoding detection. +;mbstring.strict_detection = Off + +; This directive specifies the regex pattern of content types for which mb_output_handler() +; is activated. +; Default: mbstring.http_output_conv_mimetypes=^(text/|application/xhtml\+xml) +;mbstring.http_output_conv_mimetypes= + +; This directive specifies maximum stack depth for mbstring regular expressions. It is similar +; to the pcre.recursion_limit for PCRE. +;mbstring.regex_stack_limit=100000 + +; This directive specifies maximum retry count for mbstring regular expressions. It is similar +; to the pcre.backtrack_limit for PCRE. +;mbstring.regex_retry_limit=1000000 + +[gd] +; Tell the jpeg decode to ignore warnings and try to create +; a gd image. The warning will then be displayed as notices +; disabled by default +; https://php.net/gd.jpeg-ignore-warning +;gd.jpeg_ignore_warning = 1 + +[exif] +; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. +; With mbstring support this will automatically be converted into the encoding +; given by corresponding encode setting. When empty mbstring.internal_encoding +; is used. For the decode settings you can distinguish between motorola and +; intel byte order. A decode setting cannot be empty. +; https://php.net/exif.encode-unicode +;exif.encode_unicode = ISO-8859-15 + +; https://php.net/exif.decode-unicode-motorola +;exif.decode_unicode_motorola = UCS-2BE + +; https://php.net/exif.decode-unicode-intel +;exif.decode_unicode_intel = UCS-2LE + +; https://php.net/exif.encode-jis +;exif.encode_jis = + +; https://php.net/exif.decode-jis-motorola +;exif.decode_jis_motorola = JIS + +; https://php.net/exif.decode-jis-intel +;exif.decode_jis_intel = JIS + +[Tidy] +; The path to a default tidy configuration file to use when using tidy +; https://php.net/tidy.default-config +;tidy.default_config = /usr/local/lib/php/default.tcfg + +; Should tidy clean and repair output automatically? +; WARNING: Do not use this option if you are generating non-html content +; such as dynamic images +; https://php.net/tidy.clean-output +tidy.clean_output = Off + +[soap] +; Enables or disables WSDL caching feature. +; https://php.net/soap.wsdl-cache-enabled +soap.wsdl_cache_enabled=1 + +; Sets the directory name where SOAP extension will put cache files. +; https://php.net/soap.wsdl-cache-dir +soap.wsdl_cache_dir="/tmp" + +; (time to live) Sets the number of second while cached file will be used +; instead of original one. +; https://php.net/soap.wsdl-cache-ttl +soap.wsdl_cache_ttl=86400 + +; Sets the size of the cache limit. (Max. number of WSDL files to cache) +soap.wsdl_cache_limit = 5 + +[sysvshm] +; A default size of the shared memory segment +;sysvshm.init_mem = 10000 + +[ldap] +; Sets the maximum number of open links or -1 for unlimited. +ldap.max_links = -1 + +[dba] +;dba.default_handler= + +[opcache] +; Determines if Zend OPCache is enabled +;opcache.enable=1 + +; Determines if Zend OPCache is enabled for the CLI version of PHP +;opcache.enable_cli=0 + +; The OPcache shared memory storage size. +;opcache.memory_consumption=128 + +; The amount of memory for interned strings in Mbytes. +;opcache.interned_strings_buffer=8 + +; The maximum number of keys (scripts) in the OPcache hash table. +; Only numbers between 200 and 1000000 are allowed. +;opcache.max_accelerated_files=10000 + +; The maximum percentage of "wasted" memory until a restart is scheduled. +;opcache.max_wasted_percentage=5 + +; When this directive is enabled, the OPcache appends the current working +; directory to the script key, thus eliminating possible collisions between +; files with the same name (basename). Disabling the directive improves +; performance, but may break existing applications. +;opcache.use_cwd=1 + +; When disabled, you must reset the OPcache manually or restart the +; webserver for changes to the filesystem to take effect. +;opcache.validate_timestamps=1 + +; How often (in seconds) to check file timestamps for changes to the shared +; memory storage allocation. ("1" means validate once per second, but only +; once per request. "0" means always validate) +;opcache.revalidate_freq=2 + +; Enables or disables file search in include_path optimization +;opcache.revalidate_path=0 + +; If disabled, all PHPDoc comments are dropped from the code to reduce the +; size of the optimized code. +;opcache.save_comments=1 + +; If enabled, compilation warnings (including notices and deprecations) will +; be recorded and replayed each time a file is included. Otherwise, compilation +; warnings will only be emitted when the file is first cached. +;opcache.record_warnings=0 + +; Allow file existence override (file_exists, etc.) performance feature. +;opcache.enable_file_override=0 + +; A bitmask, where each bit enables or disables the appropriate OPcache +; passes +;opcache.optimization_level=0x7FFFBFFF + +;opcache.dups_fix=0 + +; The location of the OPcache blacklist file (wildcards allowed). +; Each OPcache blacklist file is a text file that holds the names of files +; that should not be accelerated. The file format is to add each filename +; to a new line. The filename may be a full path or just a file prefix +; (i.e., /var/www/x blacklists all the files and directories in /var/www +; that start with 'x'). Line starting with a ; are ignored (comments). +;opcache.blacklist_filename= + +; Allows exclusion of large files from being cached. By default all files +; are cached. +;opcache.max_file_size=0 + +; Check the cache checksum each N requests. +; The default value of "0" means that the checks are disabled. +;opcache.consistency_checks=0 + +; How long to wait (in seconds) for a scheduled restart to begin if the cache +; is not being accessed. +;opcache.force_restart_timeout=180 + +; OPcache error_log file name. Empty string assumes "stderr". +;opcache.error_log= + +; All OPcache errors go to the Web server log. +; By default, only fatal errors (level 0) or errors (level 1) are logged. +; You can also enable warnings (level 2), info messages (level 3) or +; debug messages (level 4). +;opcache.log_verbosity_level=1 + +; Preferred Shared Memory back-end. Leave empty and let the system decide. +;opcache.preferred_memory_model= + +; Protect the shared memory from unexpected writing during script execution. +; Useful for internal debugging only. +;opcache.protect_memory=0 + +; Allows calling OPcache API functions only from PHP scripts which path is +; started from specified string. The default "" means no restriction +;opcache.restrict_api= + +; Mapping base of shared memory segments (for Windows only). All the PHP +; processes have to map shared memory into the same address space. This +; directive allows to manually fix the "Unable to reattach to base address" +; errors. +;opcache.mmap_base= + +; Facilitates multiple OPcache instances per user (for Windows only). All PHP +; processes with the same cache ID and user share an OPcache instance. +;opcache.cache_id= + +; Enables and sets the second level cache directory. +; It should improve performance when SHM memory is full, at server restart or +; SHM reset. The default "" disables file based caching. +;opcache.file_cache= + +; Enables or disables opcode caching in shared memory. +;opcache.file_cache_only=0 + +; Enables or disables checksum validation when script loaded from file cache. +;opcache.file_cache_consistency_checks=1 + +; Implies opcache.file_cache_only=1 for a certain process that failed to +; reattach to the shared memory (for Windows only). Explicitly enabled file +; cache is required. +;opcache.file_cache_fallback=1 + +; Enables or disables copying of PHP code (text segment) into HUGE PAGES. +; This should improve performance, but requires appropriate OS configuration. +;opcache.huge_code_pages=0 + +; Validate cached file permissions. +;opcache.validate_permission=0 + +; Prevent name collisions in chroot'ed environment. +;opcache.validate_root=0 + +; If specified, it produces opcode dumps for debugging different stages of +; optimizations. +;opcache.opt_debug_level=0 + +; Specifies a PHP script that is going to be compiled and executed at server +; start-up. +; https://php.net/opcache.preload +;opcache.preload= + +; Preloading code as root is not allowed for security reasons. This directive +; facilitates to let the preloading to be run as another user. +; https://php.net/opcache.preload_user +;opcache.preload_user= + +; Prevents caching files that are less than this number of seconds old. It +; protects from caching of incompletely updated files. In case all file updates +; on your site are atomic, you may increase performance by setting it to "0". +;opcache.file_update_protection=2 + +; Absolute path used to store shared lockfiles (for *nix only). +;opcache.lockfile_path=/tmp + +[curl] +; A default value for the CURLOPT_CAINFO option. This is required to be an +; absolute path. +;curl.cainfo = + +[openssl] +; The location of a Certificate Authority (CA) file on the local filesystem +; to use when verifying the identity of SSL/TLS peers. Most users should +; not specify a value for this directive as PHP will attempt to use the +; OS-managed cert stores in its absence. If specified, this value may still +; be overridden on a per-stream basis via the "cafile" SSL stream context +; option. +;openssl.cafile= + +; If openssl.cafile is not specified or if the CA file is not found, the +; directory pointed to by openssl.capath is searched for a suitable +; certificate. This value must be a correctly hashed certificate directory. +; Most users should not specify a value for this directive as PHP will +; attempt to use the OS-managed cert stores in its absence. If specified, +; this value may still be overridden on a per-stream basis via the "capath" +; SSL stream context option. +;openssl.capath= + +[ffi] +; FFI API restriction. Possible values: +; "preload" - enabled in CLI scripts and preloaded files (default) +; "false" - always disabled +; "true" - always enabled +;ffi.enable=preload + +; List of headers files to preload, wildcard patterns allowed. +;ffi.preload= From 17062bd9d8eda983d1226188deb4520e42f766a3 Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Thu, 16 Dec 2021 11:12:21 +0800 Subject: [PATCH 301/372] add xlswriter extension --- .env.example | 3 +++ docker-compose.yml | 3 +++ php-fpm/Dockerfile | 17 +++++++++++++++++ php-worker/Dockerfile | 18 ++++++++++++++++++ workspace/Dockerfile | 17 +++++++++++++++++ 5 files changed, 58 insertions(+) diff --git a/.env.example b/.env.example index 168ae649..d7eee296 100644 --- a/.env.example +++ b/.env.example @@ -145,6 +145,7 @@ WORKSPACE_INSTALL_OCI8=false WORKSPACE_INSTALL_V8JS=false WORKSPACE_INSTALL_LARAVEL_ENVOY=false WORKSPACE_INSTALL_LARAVEL_INSTALLER=false +WORKSPACE_INSTALL_XLSWRITER=false WORKSPACE_INSTALL_DEPLOYER=false WORKSPACE_INSTALL_PRESTISSIMO=false WORKSPACE_INSTALL_LINUXBREW=false @@ -260,6 +261,7 @@ PHP_FPM_INSTALL_PING=false PHP_FPM_INSTALL_SSHPASS=false PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_WKHTMLTOPDF=false +PHP_FPM_INSTALL_XLSWRITER=false PHP_FPM_INSTALL_PHPDECIMAL=false PHP_FPM_INSTALL_ZOOKEEPER=false PHP_FPM_INSTALL_SSDB=false @@ -284,6 +286,7 @@ PHP_FPM_NEW_RELIC_APP_NAME=app_name PHP_WORKER_INSTALL_BZ2=false PHP_WORKER_INSTALL_GD=false +PHP_WORKER_INSTALL_XLSWRITER=false PHP_WORKER_INSTALL_IMAGEMAGICK=false PHP_WORKER_IMAGEMAGICK_VERSION=latest PHP_WORKER_INSTALL_GMP=false diff --git a/docker-compose.yml b/docker-compose.yml index 24035d6b..c901c8e8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -115,6 +115,7 @@ services: - INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH} - INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY} - INSTALL_LARAVEL_INSTALLER=${WORKSPACE_INSTALL_LARAVEL_INSTALLER} + - INSTALL_XLSWRITER=${WORKSPACE_INSTALL_XLSWRITER} - INSTALL_DEPLOYER=${WORKSPACE_INSTALL_DEPLOYER} - INSTALL_PRESTISSIMO=${WORKSPACE_INSTALL_PRESTISSIMO} - INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LINUXBREW} @@ -247,6 +248,7 @@ services: - INSTALL_IMAGE_OPTIMIZERS=${PHP_FPM_INSTALL_IMAGE_OPTIMIZERS} - INSTALL_IMAGEMAGICK=${PHP_FPM_INSTALL_IMAGEMAGICK} - INSTALL_CALENDAR=${PHP_FPM_INSTALL_CALENDAR} + - INSTALL_XLSWRITER=${PHP_FPM_INSTALL_XLSWRITER} - INSTALL_FAKETIME=${PHP_FPM_INSTALL_FAKETIME} - INSTALL_IONCUBE=${PHP_FPM_INSTALL_IONCUBE} - INSTALL_APCU=${PHP_FPM_INSTALL_APCU} @@ -327,6 +329,7 @@ services: - INSTALL_OCI8=${PHP_WORKER_INSTALL_OCI8} - INSTALL_MSSQL=${PHP_WORKER_INSTALL_MSSQL} - INSTALL_PHALCON=${PHP_WORKER_INSTALL_PHALCON} + - INSTALL_XLSWRITER=${PHP_WORKER_INSTALL_XLSWRITER} - INSTALL_SOAP=${PHP_WORKER_INSTALL_SOAP} - INSTALL_ZIP_ARCHIVE=${PHP_WORKER_INSTALL_ZIP_ARCHIVE} - INSTALL_MYSQL_CLIENT=${PHP_WORKER_INSTALL_MYSQL_CLIENT} diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 80bf946c..ed7d6ab1 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -488,6 +488,23 @@ RUN if [ ${INSTALL_GEARMAN} = true ]; then \ docker-php-ext-enable gearman \ ;fi + + +########################################################################### +# xlswriter: +########################################################################### + +ARG INSTALL_XLSWRITER=false +RUN set -eux; \ + if [ ${INSTALL_XLSWRITER} = true ]; then \ + # Install Php Swoole Extension \ + pecl install xlswriter; \ + docker-php-ext-enable xlswriter; \ + php -m | grep -q 'xlswriter'; \ + fi + + + ########################################################################### # pcntl ########################################################################### diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index d386f239..6a6013be 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -367,6 +367,24 @@ RUN set -eux; \ php -m | grep -oiE '^swoole$'; \ fi + + + + +########################################################################### +# xlswriter: +########################################################################### + +ARG INSTALL_XLSWRITER=false +RUN set -eux; \ + if [ ${INSTALL_XLSWRITER} = true ]; then \ + # Install Php Swoole Extension \ + pecl install xlswriter; \ + docker-php-ext-enable xlswriter; \ + php -m | grep -q 'xlswriter'; \ + fi + + ########################################################################### # Taint EXTENSION ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 092e7115..fdaecf2b 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -565,6 +565,23 @@ RUN set -eux; \ php -m | grep -q 'swoole'; \ fi + + +########################################################################### +# xlswriter: +########################################################################### + +ARG INSTALL_XLSWRITER=false +RUN set -eux; \ + if [ ${INSTALL_XLSWRITER} = true ]; then \ + # Install Php Swoole Extension + echo '' | pecl -q install xlswriter; \ + echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini; \ + php -m | grep -q 'xlswriter'; \ + fi + + ########################################################################### # Taint EXTENSION ########################################################################### From 353ed5afb4386dec6dcbb7b6b1db0be4d286d067 Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Thu, 16 Dec 2021 11:49:55 +0800 Subject: [PATCH 302/372] add xlswriter extension --- php-fpm/Dockerfile | 2 +- php-worker/Dockerfile | 2 +- workspace/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index ed7d6ab1..7c4560ed 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -497,7 +497,7 @@ RUN if [ ${INSTALL_GEARMAN} = true ]; then \ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ - # Install Php Swoole Extension \ + # Install Php xlswriter Extension \ pecl install xlswriter; \ docker-php-ext-enable xlswriter; \ php -m | grep -q 'xlswriter'; \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 6a6013be..48decbd4 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -378,7 +378,7 @@ RUN set -eux; \ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ - # Install Php Swoole Extension \ + # Install Php xlswriter Extension \ pecl install xlswriter; \ docker-php-ext-enable xlswriter; \ php -m | grep -q 'xlswriter'; \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index fdaecf2b..cb4a10c3 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -574,7 +574,7 @@ RUN set -eux; \ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ - # Install Php Swoole Extension + # Install Php xlswriter Extension echo '' | pecl -q install xlswriter; \ echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini; \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini; \ From 9536c2e63f4fd65ea3a89a3a210fbd077283c870 Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Thu, 16 Dec 2021 15:17:19 +0800 Subject: [PATCH 303/372] fix:Add php xlswriter extension --- php-fpm/Dockerfile | 14 +++++++------- php-worker/Dockerfile | 16 ++++++++-------- workspace/Dockerfile | 12 ++++++++---- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 7c4560ed..cf0ed15e 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -488,8 +488,6 @@ RUN if [ ${INSTALL_GEARMAN} = true ]; then \ docker-php-ext-enable gearman \ ;fi - - ########################################################################### # xlswriter: ########################################################################### @@ -498,13 +496,15 @@ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension \ - pecl install xlswriter; \ - docker-php-ext-enable xlswriter; \ - php -m | grep -q 'xlswriter'; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ + pecl install xlswriter; \ + docker-php-ext-enable xlswriter; \ + php -m | grep -q 'xlswriter'; \ + else \ + echo "PHP Extension for xlswriter is not supported for PHP 5.0"\ + fi; \ fi - - ########################################################################### # pcntl ########################################################################### diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 48decbd4..dd2c58a3 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -367,24 +367,24 @@ RUN set -eux; \ php -m | grep -oiE '^swoole$'; \ fi - - - - ########################################################################### # xlswriter: ########################################################################### ARG INSTALL_XLSWRITER=false + RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension \ - pecl install xlswriter; \ - docker-php-ext-enable xlswriter; \ - php -m | grep -q 'xlswriter'; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ + pecl install xlswriter; \ + docker-php-ext-enable xlswriter; \ + php -m | grep -q 'xlswriter'; \ + else \ + echo "PHP Extension for xlswriter is not supported for PHP 5.0"; \ + fi; \ fi - ########################################################################### # Taint EXTENSION ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index cb4a10c3..ac00287e 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -575,10 +575,14 @@ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension - echo '' | pecl -q install xlswriter; \ - echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini; \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini; \ - php -m | grep -q 'xlswriter'; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ + echo '' | pecl -q install xlswriter; \ + echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini; \ + php -m | grep -q 'xlswriter'; \ + else \ + echo "PHP Extension for xlswriter is not supported for PHP 5.0"; \ + fi; \ fi From 084fcaaf8b7aec97086dcd968763b271705c6a97 Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Mon, 20 Dec 2021 15:19:02 +0800 Subject: [PATCH 304/372] fix:Add php xlswriter extension --- php-fpm/Dockerfile | 4 ++-- php-worker/Dockerfile | 4 ++-- workspace/Dockerfile | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index cf0ed15e..e1aebf21 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -502,8 +502,8 @@ RUN set -eux; \ php -m | grep -q 'xlswriter'; \ else \ echo "PHP Extension for xlswriter is not supported for PHP 5.0"\ - fi; \ - fi + fi \ + ;fi ########################################################################### # pcntl diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index dd2c58a3..fe26ad30 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -382,8 +382,8 @@ RUN set -eux; \ php -m | grep -q 'xlswriter'; \ else \ echo "PHP Extension for xlswriter is not supported for PHP 5.0"; \ - fi; \ - fi + fi \ + ;fi ########################################################################### # Taint EXTENSION diff --git a/workspace/Dockerfile b/workspace/Dockerfile index ac00287e..cb3d7a00 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -582,8 +582,8 @@ RUN set -eux; \ php -m | grep -q 'xlswriter'; \ else \ echo "PHP Extension for xlswriter is not supported for PHP 5.0"; \ - fi; \ - fi + fi \ + ;fi ########################################################################### From 9f0657e2b04e3dce88f364010af78e284ca96dcf Mon Sep 17 00:00:00 2001 From: Erik Niebla Date: Mon, 20 Dec 2021 10:24:21 -0500 Subject: [PATCH 305/372] ci(PHP 8.1): add CI processes for PHP 8.1 --- .github/workflows/main-ci.yml | 2 +- .travis.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index f50d1a0e..7d59bf14 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - php_version: [ "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0" ] + php_version: [ "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1" ] service: [ php-fpm, php-worker, workspace ] steps: - uses: actions/checkout@v2 diff --git a/.travis.yml b/.travis.yml index f3290be2..b34ef2ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,7 @@ env: - PHP_VERSION=7.3 BUILD_SERVICE=php-worker - PHP_VERSION=7.4 BUILD_SERVICE=php-worker - PHP_VERSION=8.0 BUILD_SERVICE=php-worker + - PHP_VERSION=8.1 BUILD_SERVICE=php-worker - PHP_VERSION=7.0 BUILD_SERVICE=laravel-horizon - PHP_VERSION=7.1 BUILD_SERVICE=laravel-horizon @@ -23,6 +24,7 @@ env: - PHP_VERSION=7.3 BUILD_SERVICE=laravel-horizon - PHP_VERSION=7.4 BUILD_SERVICE=laravel-horizon - PHP_VERSION=8.0 BUILD_SERVICE=laravel-horizon + - PHP_VERSION=8.1 BUILD_SERVICE=laravel-horizon - PHP_VERSION=NA BUILD_SERVICE=solr - PHP_VERSION=NA BUILD_SERVICE="mssql rethinkdb aerospike" From 18bf3a7b205816921faa0acc768fa8f99c8add71 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 21 Dec 2021 10:56:58 +0100 Subject: [PATCH 306/372] Update .env.example --- .env.example | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.env.example b/.env.example index 168ae649..64ee615b 100644 --- a/.env.example +++ b/.env.example @@ -443,6 +443,11 @@ POSTGRES_PASSWORD=secret POSTGRES_PORT=5432 POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d +### POSTGIS ############################################## + +POSTGIS_VERSION=latest +POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13=false + ### SQS ############################################## SQS_NODE_HOST_PORT=9324 From ec4216ed187729a71e32032bd3c9712415fa44a6 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 21 Dec 2021 11:41:46 +0100 Subject: [PATCH 307/372] Update Dockerfile --- postgres-postgis/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/postgres-postgis/Dockerfile b/postgres-postgis/Dockerfile index 3b219f48..56ffb31f 100644 --- a/postgres-postgis/Dockerfile +++ b/postgres-postgis/Dockerfile @@ -1,4 +1,5 @@ -FROM postgis/postgis:latest +ARG POSTGRES_VERSION=alpine +FROM postgis/postgis:${POSTGRES_VERSION} LABEL maintainer="Mahmoud Zalt " From 3d2f8074d35768125e9b11f8c34e0babea972603 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 21 Dec 2021 11:43:51 +0100 Subject: [PATCH 308/372] Update docker-compose.yml --- docker-compose.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 24035d6b..d785ccab 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -619,7 +619,10 @@ services: ### PostgreSQL PostGis ################################### postgres-postgis: - build: ./postgres-postgis + build: + context: ./postgres-postgis + args: + - POSTGRES_VERSION=${POSTGRES_VERSION} volumes: - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data ports: @@ -628,6 +631,7 @@ services: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - INSTALL_PGSQL_HTTP_FOR_POSTGIS13=${POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13} networks: - backend From c6bc9860956166b4de4ca0f8350e9069f397516c Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 21 Dec 2021 11:50:43 +0100 Subject: [PATCH 309/372] Update Dockerfile --- postgres-postgis/Dockerfile | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/postgres-postgis/Dockerfile b/postgres-postgis/Dockerfile index 56ffb31f..99b7573c 100644 --- a/postgres-postgis/Dockerfile +++ b/postgres-postgis/Dockerfile @@ -1,8 +1,25 @@ -ARG POSTGRES_VERSION=alpine +ARG POSTGRES_VERSION=latest FROM postgis/postgis:${POSTGRES_VERSION} LABEL maintainer="Mahmoud Zalt " +RUN if [ ${INSTALL_PGSQL_HTTP_FOR_POSTGIS13} = true ]; then \ + apt-get clean \ + && apt-get update -yqq \ + && apt-get install -y \ + git \ + make \ + gcc \ + libcurl4-openssl-dev \ + postgresql-server-dev-13 \ + postgresql-13-cron \ + && git clone --recursive https://github.com/pramsey/pgsql-http.git \ + && cd pgsql-http/ \ + && make \ + && make install \ + && apt-get clean \ +;fi + CMD ["postgres"] EXPOSE 5432 From 9c6f4e0a06c4e88e67e790edee2c0f8a0c16cac9 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 21 Dec 2021 11:58:32 +0100 Subject: [PATCH 310/372] Update Dockerfile --- postgres-postgis/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgres-postgis/Dockerfile b/postgres-postgis/Dockerfile index 99b7573c..7573cc41 100644 --- a/postgres-postgis/Dockerfile +++ b/postgres-postgis/Dockerfile @@ -9,7 +9,7 @@ RUN if [ ${INSTALL_PGSQL_HTTP_FOR_POSTGIS13} = true ]; then \ && apt-get install -y \ git \ make \ - gcc \ + gcc \ libcurl4-openssl-dev \ postgresql-server-dev-13 \ postgresql-13-cron \ From 4885f9ac2dd3476273745f5821c5ab1061a3d798 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 21 Dec 2021 12:02:53 +0100 Subject: [PATCH 311/372] Update .env.example --- .env.example | 1 - 1 file changed, 1 deletion(-) diff --git a/.env.example b/.env.example index 64ee615b..097afa42 100644 --- a/.env.example +++ b/.env.example @@ -445,7 +445,6 @@ POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d ### POSTGIS ############################################## -POSTGIS_VERSION=latest POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13=false ### SQS ############################################## From 3d2194301e97fb5dd426fcb110179278dfef22de Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Tue, 21 Dec 2021 12:05:56 +0100 Subject: [PATCH 312/372] Update .env.example --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 097afa42..1116e637 100644 --- a/.env.example +++ b/.env.example @@ -443,7 +443,7 @@ POSTGRES_PASSWORD=secret POSTGRES_PORT=5432 POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d -### POSTGIS ############################################## +### POSTGRES-POSTGIS ############################################## POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13=false From cf6e2cd843fb378ffcaa2d3a4a2e9ba8eb8aa0d1 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Wed, 22 Dec 2021 09:17:25 +0100 Subject: [PATCH 313/372] Update Dockerfile --- postgres-postgis/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/postgres-postgis/Dockerfile b/postgres-postgis/Dockerfile index 7573cc41..a25ea780 100644 --- a/postgres-postgis/Dockerfile +++ b/postgres-postgis/Dockerfile @@ -3,6 +3,8 @@ FROM postgis/postgis:${POSTGRES_VERSION} LABEL maintainer="Mahmoud Zalt " +ARG INSTALL_PGSQL_HTTP_FOR_POSTGIS13=false + RUN if [ ${INSTALL_PGSQL_HTTP_FOR_POSTGIS13} = true ]; then \ apt-get clean \ && apt-get update -yqq \ From 3a8ff2c329842f476b60a9282ae72825cc02f52d Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Wed, 22 Dec 2021 09:18:33 +0100 Subject: [PATCH 314/372] Update docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index d785ccab..5006f193 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -623,6 +623,7 @@ services: context: ./postgres-postgis args: - POSTGRES_VERSION=${POSTGRES_VERSION} + - INSTALL_PGSQL_HTTP_FOR_POSTGIS13=${POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13} volumes: - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data ports: @@ -631,7 +632,6 @@ services: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - - INSTALL_PGSQL_HTTP_FOR_POSTGIS13=${POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13} networks: - backend From c906356f465c6b2719e0e18f504e5517c8f9ea04 Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Thu, 30 Dec 2021 18:28:14 +0800 Subject: [PATCH 315/372] fix:Add php xlswriter extension --- php-fpm/Dockerfile | 6 +++--- php-worker/Dockerfile | 4 ++-- workspace/Dockerfile | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index e1aebf21..a08b7b33 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -497,11 +497,11 @@ RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension \ if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ - pecl install xlswriter; \ - docker-php-ext-enable xlswriter; \ + pecl install xlswriter &&\ + docker-php-ext-enable xlswriter &&\ php -m | grep -q 'xlswriter'; \ else \ - echo "PHP Extension for xlswriter is not supported for PHP 5.0"\ + echo "PHP Extension for xlswriter is not supported for PHP 5.0";\ fi \ ;fi diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index fe26ad30..74a2a5f6 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -377,8 +377,8 @@ RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension \ if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ - pecl install xlswriter; \ - docker-php-ext-enable xlswriter; \ + pecl install xlswriter && \ + docker-php-ext-enable xlswriter && \ php -m | grep -q 'xlswriter'; \ else \ echo "PHP Extension for xlswriter is not supported for PHP 5.0"; \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index cb3d7a00..61403884 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -576,8 +576,8 @@ RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ - echo '' | pecl -q install xlswriter; \ - echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini; \ + echo '' | pecl -q install xlswriter && \ + echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini && \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini; \ php -m | grep -q 'xlswriter'; \ else \ From 7c2b1c561a72c85803a0ede17176218babf9ce9b Mon Sep 17 00:00:00 2001 From: YenHai Date: Mon, 3 Jan 2022 17:18:49 +0800 Subject: [PATCH 316/372] Change PCRE mirror of Openresty --- openresty/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openresty/Dockerfile b/openresty/Dockerfile index 8a045aba..50198cb1 100644 --- a/openresty/Dockerfile +++ b/openresty/Dockerfile @@ -148,7 +148,7 @@ RUN apk add --no-cache --virtual .build-deps \ && make -j${RESTY_J} \ && make -j${RESTY_J} install_sw \ && cd /tmp \ - && curl -fSL https://ftp.pcre.org/pub/pcre/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \ + && curl -fSL https://downloads.sourceforge.net/project/pcre/pcre/${RESTY_PCRE_VERSION}/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \ && tar xzf pcre-${RESTY_PCRE_VERSION}.tar.gz \ && cd /tmp/pcre-${RESTY_PCRE_VERSION} \ && ./configure \ @@ -200,7 +200,7 @@ COPY logrotate/nginx /etc/logrotate.d/ # Set upstream conf and remove the default conf RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf - + # Copy nginx configuration files COPY nginx.conf /etc/nginx/ From 4171871ab2c776d6a5e057f6b287da950af4c17b Mon Sep 17 00:00:00 2001 From: Erik Niebla Date: Mon, 20 Dec 2021 10:48:36 -0500 Subject: [PATCH 317/372] Fix tests(xdebug, mongodb) --- laravel-horizon/Dockerfile | 6 +----- php-fpm/Dockerfile | 12 ++++-------- php-worker/Dockerfile | 8 ++------ workspace/Dockerfile | 20 ++++++-------------- 4 files changed, 13 insertions(+), 33 deletions(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 87c11274..5b7fb1ce 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -64,11 +64,7 @@ ARG INSTALL_GNUPG=false RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ apk add --no-cache --no-progress --virtual BUILD_DEPS_PHP_GNUPG gpgme-dev; \ apk add --no-cache --no-progress gpgme; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install gnupg-1.5.0RC2; \ - else \ - pecl install gnupg; \ - fi; \ + pecl install gnupg; \ docker-php-ext-enable gnupg; \ fi diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 80bf946c..a20b4bec 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -117,11 +117,7 @@ ARG INSTALL_GNUPG=false RUN if [ ${INSTALL_GNUPG} = true ]; then \ apt-get -yq install libgpgme-dev; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install gnupg-1.5.0RC2; \ - else \ - pecl install gnupg; \ - fi; \ + pecl install gnupg; \ docker-php-ext-enable gnupg; \ php -m | grep -q 'gnupg'; \ fi @@ -221,7 +217,7 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension # https://xdebug.org/docs/compat if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \ - pecl install xdebug-3.1.1; \ + pecl install xdebug-3.1.2; \ else \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install xdebug-2.5.5; \ @@ -362,7 +358,7 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ docker-php-ext-enable mongo; \ php -m | grep -oiE '^mongo$'; \ else \ - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ] ;}; then \ pecl install mongodb-1.9.2; \ else \ pecl install mongodb; \ @@ -1090,7 +1086,7 @@ ARG INSTALL_XMLRPC=false RUN if [ ${INSTALL_XMLRPC} = true ]; then \ apt-get -yq install libxml2-dev; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install xmlrpc-1.0.0RC2; \ + pecl install xmlrpc-1.0.0RC3; \ docker-php-ext-enable xmlrpc; \ else \ docker-php-ext-install xmlrpc; \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index d386f239..a361405a 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -65,11 +65,7 @@ ARG INSTALL_GNUPG=false RUN set -eux; if [ ${INSTALL_GNUPG} = true ]; then \ apk add --no-cache --no-progress --virtual BUILD_DEPS_PHP_GNUPG gpgme-dev; \ apk add --no-cache --no-progress gpgme; \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install gnupg-1.5.0RC2; \ - else \ pecl install gnupg; \ - fi; \ docker-php-ext-enable gnupg; \ fi @@ -147,7 +143,7 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ docker-php-ext-enable mongo; \ php -m | grep -oiE '^mongo$'; \ else \ - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ] ;}; then \ pecl install mongodb-1.9.2; \ else \ pecl install mongodb; \ @@ -404,7 +400,7 @@ ARG INSTALL_XMLRPC=false RUN if [ ${INSTALL_XMLRPC} = true ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install xmlrpc-1.0.0RC2; \ + pecl install xmlrpc-1.0.0RC3; \ docker-php-ext-enable xmlrpc; \ else \ docker-php-ext-install xmlrpc; \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 092e7115..967aecb0 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -330,25 +330,17 @@ ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - pecl install xdebug-3.0.0; \ + # https://xdebug.org/docs/compat + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \ + pecl install xdebug-3.1.2; \ else \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install xdebug-2.5.5; \ else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ pecl install xdebug-2.9.0; \ else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ - pecl install xdebug-2.9.8; \ - else \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ - pecl install xdebug-2.9.8; \ - else \ - #pecl install xdebug; \ - echo "xDebug 3 required, not supported."; \ - fi \ - fi \ + pecl install xdebug-2.9.8; \ fi \ fi \ fi && \ @@ -457,7 +449,7 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-mongo.ini; \ php -m | grep -oiE '^mongo$'; \ else \ - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ] ;}; then \ pecl install mongodb-1.9.2; \ else \ pecl install mongodb; \ From 7d91cd334837b7179a3e1b70cd67e5afaa344662 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jan 2022 13:38:44 +0000 Subject: [PATCH 318/372] Bump axios from 0.21.1 to 0.21.2 in /react Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 14 +++++++------- react/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index dd1402f8..158c29a9 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -2991,17 +2991,17 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", + "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" }, "dependencies": { "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", + "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==" } } }, diff --git a/react/package.json b/react/package.json index f4e153d6..cbb26f42 100644 --- a/react/package.json +++ b/react/package.json @@ -9,7 +9,7 @@ "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.1", - "axios": "^0.21.1", + "axios": "^0.21.2", "bootstrap": "^4.5.3", "jss-rtl": "^0.3.0", "node-sass": "^4.14.1", From 3ef987ba84fd860fa9c43dcea07cbb415f604246 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jan 2022 13:38:59 +0000 Subject: [PATCH 319/372] Bump tmpl from 1.0.4 to 1.0.5 in /react Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5. - [Release notes](https://github.com/daaku/nodejs-tmpl/releases) - [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5) --- updated-dependencies: - dependency-name: tmpl dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index dd1402f8..a5d7f535 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -14465,9 +14465,9 @@ } }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "to-arraybuffer": { "version": "1.0.1", From 6d61cd3d25c3bc982252901bcdd5828dde87c476 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jan 2022 13:39:02 +0000 Subject: [PATCH 320/372] Bump ws from 5.2.2 to 5.2.3 in /react Bumps [ws](https://github.com/websockets/ws) from 5.2.2 to 5.2.3. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/5.2.2...5.2.3) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index dd1402f8..5ada81bd 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -8238,9 +8238,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "requires": { "async-limiter": "~1.0.0" } @@ -15463,9 +15463,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "requires": { "async-limiter": "~1.0.0" } @@ -15866,9 +15866,9 @@ } }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "requires": { "async-limiter": "~1.0.0" } From 186928fb07c9ec95e3a9438f78665484cd5334ea Mon Sep 17 00:00:00 2001 From: Erik Niebla Date: Wed, 12 Jan 2022 09:05:42 -0500 Subject: [PATCH 321/372] Fix tests on XlsWriter ext --- php-fpm/Dockerfile | 2 +- php-worker/Dockerfile | 2 +- workspace/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 0980f232..eb81748f 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -492,7 +492,7 @@ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ pecl install xlswriter &&\ docker-php-ext-enable xlswriter &&\ php -m | grep -q 'xlswriter'; \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 39c4429c..7414459d 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -372,7 +372,7 @@ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension \ - if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ pecl install xlswriter && \ docker-php-ext-enable xlswriter && \ php -m | grep -q 'xlswriter'; \ diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 3c09483b..36364021 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -567,7 +567,7 @@ ARG INSTALL_XLSWRITER=false RUN set -eux; \ if [ ${INSTALL_XLSWRITER} = true ]; then \ # Install Php xlswriter Extension - if [ $(php -r "echo PHP_MAJOR_VERSION;") > "5" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ echo '' | pecl -q install xlswriter && \ echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini && \ ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini; \ From 2759864e2a1f5052c222e993ba4e5bfceeef145b Mon Sep 17 00:00:00 2001 From: duchymor <42995320+duchymor@users.noreply.github.com> Date: Wed, 12 Jan 2022 15:53:26 +0100 Subject: [PATCH 322/372] fix oci8 --- php-fpm/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 19c45270..93f906cc 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -605,6 +605,8 @@ RUN if [ ${INSTALL_OCI8} = true ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.0.12; \ elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-2.2.0; \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ + echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8-3.0.1; \ else \ echo 'instantclient,/opt/oracle/instantclient_12_1/' | pecl install oci8; \ fi \ From 3d18d92ff2546405335cb6a9f96b42c8af24690b Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Fri, 21 Jan 2022 14:24:24 +0100 Subject: [PATCH 323/372] Add POSTGIS_VERSION variable --- .env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/.env.example b/.env.example index 26df8c59..d09ac3ba 100644 --- a/.env.example +++ b/.env.example @@ -448,6 +448,7 @@ POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d ### POSTGRES-POSTGIS ############################################## +POSTGIS_VERSION=latest POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13=false ### SQS ############################################## From 2efec41e5534827677ab20ae835bde55ec22a310 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Fri, 21 Jan 2022 14:25:55 +0100 Subject: [PATCH 324/372] Add POSTGIS_VERSION argument --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0969ea8b..2314b2aa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -625,7 +625,7 @@ services: build: context: ./postgres-postgis args: - - POSTGRES_VERSION=${POSTGRES_VERSION} + - POSTGIS_VERSION=${POSTGIS_VERSION} - INSTALL_PGSQL_HTTP_FOR_POSTGIS13=${POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13} volumes: - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data From 1fa196de84060eaf68caf6fe93183e96c2e28c36 Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Fri, 21 Jan 2022 14:26:39 +0100 Subject: [PATCH 325/372] Use POSTGIS_VERSION argument --- postgres-postgis/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgres-postgis/Dockerfile b/postgres-postgis/Dockerfile index a25ea780..90f26114 100644 --- a/postgres-postgis/Dockerfile +++ b/postgres-postgis/Dockerfile @@ -1,5 +1,5 @@ -ARG POSTGRES_VERSION=latest -FROM postgis/postgis:${POSTGRES_VERSION} +ARG POSTGIS_VERSION=latest +FROM postgis/postgis:${POSTGIS_VERSION} LABEL maintainer="Mahmoud Zalt " From 63abb6ced88939800ca957dc896a9502fe01741d Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Mon, 31 Jan 2022 16:28:46 +0100 Subject: [PATCH 326/372] Update docker-in-docker tag image --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2314b2aa..89447206 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1516,7 +1516,7 @@ services: ### Docker-in-Docker ################################################ docker-in-docker: - image: docker:19.03-dind + image: docker:20.10-dind environment: DOCKER_TLS_SAN: DNS:docker-in-docker privileged: true From 8856efeb3bda64024b44f0836ac96d644dbcba77 Mon Sep 17 00:00:00 2001 From: Ryan van Rensburg Date: Thu, 3 Feb 2022 09:55:51 +0200 Subject: [PATCH 327/372] fix meilisearch volume mount path closes #3138 --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2314b2aa..ae9d1d98 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -995,7 +995,7 @@ services: meilisearch: image: getmeili/meilisearch:latest volumes: - - ${DATA_PATH_HOST}/meilisearch:/var/lib/meilisearch + - ${DATA_PATH_HOST}/meilisearch:/data.ms ports: - "${MEILISEARCH_HOST_PORT}:7700" networks: From 534b7b405f78bb024950cbf1856006a1c0d7146b Mon Sep 17 00:00:00 2001 From: Abolfazl Sharifi Date: Wed, 9 Feb 2022 10:11:53 +0330 Subject: [PATCH 328/372] try to fix audiowaveform for workspace --- workspace/Dockerfile | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 36364021..2a905b7f 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1417,18 +1417,16 @@ USER root ARG INSTALL_AUDIOWAVEFORM=false RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ - apt-get -y install git wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ - && git clone https://github.com/bbc/audiowaveform.git \ - && cd audiowaveform \ - && wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz \ - && tar xzf release-1.10.0.tar.gz \ - && ln -s googletest-release-1.10.0/googletest googletest \ - && ln -s googletest-release-1.10.0/googlemock googlemock \ - && mkdir build \ - && cd build \ - && cmake .. \ - && make \ - && make install \ + apt-get -y install wget make cmake gcc g++ libmad0-dev libid3tag0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \ + && cd /tmp \ + && git clone https://github.com/bbc/audiowaveform.git \ + && cd audiowaveform \ + && git clone --depth=1 https://github.com/google/googletest.git -b release-1.11.0 \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make \ + && make install \ ;fi ##################################### From 189ce1cdff245c48eb3b7524ad58b1d7058bc627 Mon Sep 17 00:00:00 2001 From: tancou Date: Wed, 9 Feb 2022 18:20:34 +0100 Subject: [PATCH 329/372] Do not install tokenizer into php-worker when php version is 8.1 --- php-worker/Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 7414459d..8620a593 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -38,7 +38,12 @@ RUN apk --update add wget \ RUN pecl channel-update pecl.php.net; \ - docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl + docker-php-ext-install mysqli mbstring pdo pdo_mysql xml pcntl; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ + php -m | grep -q 'tokenizer'; \ + else \ + docker-php-ext-install tokenizer; \ + fi # Add a non-root user: ARG PUID=1000 From 0c3d3afb30246612e6b89dc9935d5fe31436bbe8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Feb 2022 04:37:23 +0000 Subject: [PATCH 330/372] Bump node-sass from 4.14.1 to 7.0.0 in /react Bumps [node-sass](https://github.com/sass/node-sass) from 4.14.1 to 7.0.0. - [Release notes](https://github.com/sass/node-sass/releases) - [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md) - [Commits](https://github.com/sass/node-sass/compare/v4.14.1...v7.0.0) --- updated-dependencies: - dependency-name: node-sass dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 708 +++++++++++++++++++++++++++------------- react/package.json | 2 +- 2 files changed, 476 insertions(+), 234 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 3b587cc9..5075e996 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -2170,11 +2170,21 @@ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, "@types/node": { "version": "14.14.7", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==" }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -2772,9 +2782,9 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -2822,11 +2832,6 @@ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -3503,14 +3508,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "~2.0.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3889,17 +3886,18 @@ } }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" } }, "caniuse-api": { @@ -4256,6 +4254,11 @@ "simple-swizzle": "^0.2.2" } }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, "colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -4519,12 +4522,41 @@ } }, "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } } }, "crypto-browserify": { @@ -4829,14 +4861,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.14.tgz", "integrity": "sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A==" }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "^1.0.1" - } - }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -4899,6 +4923,22 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -5379,6 +5419,11 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", @@ -6690,17 +6735,6 @@ "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -6873,9 +6907,9 @@ } }, "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", "requires": { "glob": "~7.1.1", "lodash": "~4.17.10", @@ -6927,6 +6961,11 @@ "har-schema": "^2.0.0" } }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + }, "harmony-reflect": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", @@ -7346,11 +7385,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" - }, "indefinite-observable": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz", @@ -7360,12 +7394,9 @@ } }, "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "indexes-of": { "version": "1.0.1", @@ -7694,11 +7725,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -7831,11 +7857,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -9236,18 +9257,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, "loader-fs-cache": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", @@ -9378,15 +9387,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "lower-case": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", @@ -9403,12 +9403,11 @@ } }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" } }, "make-dir": { @@ -9454,9 +9453,9 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" }, "map-visit": { "version": "1.0.0", @@ -9506,20 +9505,69 @@ } }, "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } } }, "merge-deep": { @@ -9683,6 +9731,23 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, "minipass": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", @@ -9722,6 +9787,15 @@ "minipass": "^3.0.0" } }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -9896,28 +9970,56 @@ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" }, "dependencies": { + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -9999,33 +10101,76 @@ "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==" }, "node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.0.tgz", + "integrity": "sha512-6yUnsD3L8fVbgMX6nKQqZkjRcG7a/PpmF0pEyeWf+BgbTj2ToJlCYrnUifL2KbjV5gIY22I3oppahBWA3B+jUg==", "requires": { "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", "gaze": "^1.0.0", "get-stdin": "^4.0.1", "glob": "^7.0.3", - "in-publish": "^2.0.0", "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", + "meow": "^9.0.0", "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", + "node-gyp": "^7.1.0", + "npmlog": "^5.0.0", "request": "^2.88.0", "sass-graph": "2.2.5", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "requires": { "abbrev": "1" } @@ -10074,14 +10219,84 @@ } }, "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "nth-check": { @@ -10351,11 +10566,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -10371,15 +10581,6 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -10595,16 +10796,6 @@ } } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, "pbkdf2": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", @@ -11811,11 +12002,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -11910,6 +12096,11 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -12452,22 +12643,74 @@ } }, "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } } }, "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + } } }, "readable-stream": { @@ -12509,12 +12752,12 @@ } }, "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" } }, "redux": { @@ -12680,14 +12923,6 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -14001,14 +14236,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, "strip-comments": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", @@ -14024,11 +14251,11 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "requires": { - "get-stdin": "^4.0.1" + "min-indent": "^1.0.0" } }, "strip-json-comments": { @@ -14194,13 +14421,28 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "terser": { @@ -14530,9 +14772,9 @@ } }, "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" }, "true-case-path": { "version": "1.0.3", @@ -15605,11 +15847,11 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "word-wrap": { @@ -15902,9 +16144,9 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.0", diff --git a/react/package.json b/react/package.json index cbb26f42..2e5bc0f9 100644 --- a/react/package.json +++ b/react/package.json @@ -12,7 +12,7 @@ "axios": "^0.21.2", "bootstrap": "^4.5.3", "jss-rtl": "^0.3.0", - "node-sass": "^4.14.1", + "node-sass": "^7.0.0", "prop-types": "^15.7.2", "react": "^17.0.1", "react-bootstrap": "^1.4.0", From 4b774583b46c08fee3166fb8c680a0162b973a7f Mon Sep 17 00:00:00 2001 From: NPM Mirror Bot Date: Sat, 12 Feb 2022 03:59:23 +0000 Subject: [PATCH 331/372] update https://registry.npm.taobao.org to https://registry.npmmirror.com --- DOCUMENTATION/content/help/index.md | 2 +- README-zh.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCUMENTATION/content/help/index.md b/DOCUMENTATION/content/help/index.md index 519d129a..c10bb00a 100644 --- a/DOCUMENTATION/content/help/index.md +++ b/DOCUMENTATION/content/help/index.md @@ -97,7 +97,7 @@ In China, the origin source of composer and npm is very slow. You can add `WORKS Example: ```bash -WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org +WORKSPACE_NPM_REGISTRY=https://registry.npmmirror.com WORKSPACE_COMPOSER_REPO_PACKAGIST=https://packagist.phpcomposer.com ``` diff --git a/README-zh.md b/README-zh.md index d05a7dbf..c80e530b 100644 --- a/README-zh.md +++ b/README-zh.md @@ -81,9 +81,9 @@ CHANGE_SOURCE=true # composer镜像源 WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/ # nvm镜像源 -WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node +WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node # npm镜像源 -WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org +WORKSPACE_NPM_REGISTRY=https://registry.npmmirror.com ``` 3. 运行这些容器。 From 349ba1ea5021464aebc8472b4bd608467ca46f36 Mon Sep 17 00:00:00 2001 From: tancou Date: Sun, 13 Feb 2022 16:38:47 +0100 Subject: [PATCH 332/372] fix amqp installation --- php-worker/Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 8620a593..ee6d1890 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -262,15 +262,16 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ ARG INSTALL_AMQP=false RUN if [ ${INSTALL_AMQP} = true ]; then \ + docker-php-ext-install sockets; \ apk --update add -q rabbitmq-c rabbitmq-c-dev && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ]; then \ - printf "\n" | pecl install amqp-1.11.0beta; \ + printf "\n" | pecl install amqp-1.11.0; \ else \ - printf "\n" | pecl install amqp; \ + printf "\n" | pecl install amqp; \ fi && \ - docker-php-ext-enable amqp && \ - apk del -q rabbitmq-c-dev && \ - docker-php-ext-install sockets \ + docker-php-ext-enable amqp && \ + apk del -q rabbitmq-c-dev; \ + php -m | grep -oiE '^amqp$' \ ;fi # Install Gearman: From b713651a53fd7d89778ff47404229e7ca682eae0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Feb 2022 05:45:44 +0000 Subject: [PATCH 333/372] Bump follow-redirects from 1.5.10 to 1.14.8 in /react Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.5.10 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.5.10...v1.14.8) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 3b587cc9..cd98c4e1 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -2996,13 +2996,6 @@ "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", "requires": { "follow-redirects": "^1.14.0" - }, - "dependencies": { - "follow-redirects": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==" - } } }, "axobject-query": { @@ -4886,14 +4879,6 @@ } } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -6545,12 +6530,9 @@ } }, "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" }, "for-in": { "version": "1.0.2", From 4001890c7d563c7c564ef11ec58e373a7ab813b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Feb 2022 11:50:32 +0000 Subject: [PATCH 334/372] Bump ssri from 6.0.1 to 6.0.2 in /react Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/npm/ssri/releases) - [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md) - [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2) --- updated-dependencies: - dependency-name: ssri dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index cd98c4e1..99d40714 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -13738,9 +13738,9 @@ } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.1.tgz", + "integrity": "sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==", "requires": { "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" @@ -15145,9 +15145,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "requires": { "figgy-pudding": "^3.5.1" } From 96efc244b80bb764fee600e563d13b85393eff32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Feb 2022 11:50:33 +0000 Subject: [PATCH 335/372] Bump lodash from 4.17.20 to 4.17.21 in /react Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) --- updated-dependencies: - dependency-name: lodash dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index cd98c4e1..446b991e 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -9301,9 +9301,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash-es": { "version": "4.17.15", From 2597989cbdb62c99050c9fc5f35f4036505bee8f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 19 Feb 2022 14:36:16 +0000 Subject: [PATCH 336/372] Bump url-parse from 1.4.7 to 1.5.7 in /react Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.7. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.7) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 44c6b393..f9efdbab 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -15030,9 +15030,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz", + "integrity": "sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" From 02d9ed066d34d2c5885d90b5a8ff8c451786b0bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Feb 2022 04:46:27 +0000 Subject: [PATCH 337/372] Bump url-parse from 1.5.7 to 1.5.10 in /react Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.7 to 1.5.10. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.7...1.5.10) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index f9efdbab..2fee6f6f 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -15030,9 +15030,9 @@ } }, "url-parse": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz", - "integrity": "sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" From 905a99efba8a4acd0d68ba684295bdcacb358beb Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Fri, 4 Mar 2022 17:38:49 +0100 Subject: [PATCH 338/372] Update to work with PHP8 and PHP8.1 --- laravel-horizon/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 5b7fb1ce..0401b38a 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -5,7 +5,7 @@ # ARG LARADOCK_PHP_VERSION -FROM php:${LARADOCK_PHP_VERSION}-alpine3.13 +FROM php:${LARADOCK_PHP_VERSION}-alpine3.15 LABEL maintainer="Mahmoud Zalt " From f5cb352e9f3f8a306ba7461af5f7df12a6f02bbd Mon Sep 17 00:00:00 2001 From: Valentino Lauciani Date: Fri, 4 Mar 2022 17:40:46 +0100 Subject: [PATCH 339/372] Fix php alpine tag --- php-worker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index ee6d1890..8397681e 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -5,7 +5,7 @@ # ARG LARADOCK_PHP_VERSION -FROM php:${LARADOCK_PHP_VERSION}-alpine +FROM php:${LARADOCK_PHP_VERSION}-alpine3.15 LABEL maintainer="Mahmoud Zalt " From fb22fbf0d7be9c3a71053cebbb1673e616e14df2 Mon Sep 17 00:00:00 2001 From: Marcelo Camargo Date: Mon, 7 Mar 2022 01:10:38 -0300 Subject: [PATCH 340/372] Add extension zmq --- .env.example | 2 ++ docker-compose.yml | 2 ++ php-fpm/Dockerfile | 21 +++++++++++++++++++++ workspace/Dockerfile | 24 ++++++++++++++++++++++++ 4 files changed, 49 insertions(+) diff --git a/.env.example b/.env.example index d09ac3ba..0c27f7cf 100644 --- a/.env.example +++ b/.env.example @@ -134,6 +134,7 @@ WORKSPACE_INSTALL_IMAP=false WORKSPACE_INSTALL_MONGO=false WORKSPACE_INSTALL_AMQP=false WORKSPACE_INSTALL_CASSANDRA=false +WORKSPACE_INSTALL_ZMQ=false WORKSPACE_INSTALL_GEARMAN=false WORKSPACE_INSTALL_MSSQL=false WORKSPACE_INSTALL_DRUSH=false @@ -228,6 +229,7 @@ PHP_FPM_INSTALL_IMAP=false PHP_FPM_INSTALL_MONGO=false PHP_FPM_INSTALL_AMQP=false PHP_FPM_INSTALL_CASSANDRA=false +PHP_FPM_INSTALL_ZMQ=false PHP_FPM_INSTALL_GEARMAN=false PHP_FPM_INSTALL_MSSQL=false PHP_FPM_INSTALL_SSH2=false diff --git a/docker-compose.yml b/docker-compose.yml index 4820ab40..696884d7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -86,6 +86,7 @@ services: - INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO} - INSTALL_AMQP=${WORKSPACE_INSTALL_AMQP} - INSTALL_CASSANDRA=${WORKSPACE_INSTALL_CASSANDRA} + - INSTALL_ZMQ=${WORKSPACE_INSTALL_ZMQ} - INSTALL_GEARMAN=${WORKSPACE_INSTALL_GEARMAN} - INSTALL_PHPREDIS=${WORKSPACE_INSTALL_PHPREDIS} - INSTALL_MSSQL=${WORKSPACE_INSTALL_MSSQL} @@ -226,6 +227,7 @@ services: - INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO} - INSTALL_AMQP=${PHP_FPM_INSTALL_AMQP} - INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA} + - INSTALL_ZMQ=${PHP_FPM_INSTALL_ZMQ} - INSTALL_GEARMAN=${PHP_FPM_INSTALL_GEARMAN} - INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL} - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH} diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 206dfa77..d6eff7e8 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1215,6 +1215,27 @@ RUN if [ ${DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} = true ]; then \ sed -i 's,^\(CipherString[ ]*=\).*,\1'DEFAULT@SECLEVEL=1',g' /etc/ssl/openssl.cnf\ ;fi +########################################################################### +# zmq +########################################################################### + +USER root + +ARG INSTALL_ZMQ=false + +RUN if [ ${INSTALL_ZMQ} = true ]; then \ + apt-get install --yes git libzmq3-dev \ + && git clone git://github.com/mkoppanen/php-zmq.git \ + && cd php-zmq \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && cd .. \ + && rm -fr php-zmq \ + && echo "extension=zmq.so" > /usr/local/etc/php/conf.d/zmq.ini \ +;fi + ########################################################################### # Check PHP version: ########################################################################### diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 36364021..417069bd 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1707,6 +1707,30 @@ RUN if [ ${INSTALL_TRADER} = true ]; then \ && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/trader.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-trader.ini \ ;fi +# +#-------------------------------------------------------------------------- +# zmq +#-------------------------------------------------------------------------- +# + +USER root + +ARG INSTALL_ZMQ=false + +RUN if [ ${INSTALL_ZMQ} = true ]; then \ + apt-get install --yes git libzmq3-dev \ + && git clone git://github.com/mkoppanen/php-zmq.git \ + && cd php-zmq \ + && phpize \ + && ./configure \ + && make \ + && make install \ + && cd .. \ + && rm -fr php-zmq \ + && echo "extension=zmq.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/zmq.ini \ + && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/zmq.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-zmq.ini \ +;fi + # #-------------------------------------------------------------------------- # Final Touch From 11b93562c25a6bc53d41c9b406990fa15d0c1a58 Mon Sep 17 00:00:00 2001 From: YenHai Date: Tue, 8 Mar 2022 18:12:19 +0800 Subject: [PATCH 341/372] Fix sqlsrv latest not support PHP 7.3 --- workspace/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 36364021..08855abc 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1081,6 +1081,8 @@ RUN set -eux; \ pecl install pdo_sqlsrv-5.6.1 sqlsrv-5.6.1 \ ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70200" ]; then \ pecl install pdo_sqlsrv-5.8.1 sqlsrv-5.8.1 \ + ;elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70300" ]; then \ + pecl install pdo_sqlsrv-5.9.0 sqlsrv-5.9.0 \ ;else \ pecl install pdo_sqlsrv sqlsrv \ ;fi && \ From a28b5bfbe661efa865653f96a6b9be0bf7873300 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Mar 2022 20:52:46 +0000 Subject: [PATCH 342/372] Bump lodash-es from 4.17.15 to 4.17.21 in /react Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.15 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.21) --- updated-dependencies: - dependency-name: lodash-es dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 2fee6f6f..946dcb26 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -9315,9 +9315,9 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "lodash._reinterpolate": { "version": "3.0.0", From ddd06fecfd75cfc34d8e1e1189da5e4baba49944 Mon Sep 17 00:00:00 2001 From: Tom Robertshaw Date: Sat, 19 Mar 2022 16:58:35 +0000 Subject: [PATCH 343/372] Do not install tokenizer into laravel-worker when php version is 8.1 --- laravel-horizon/Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 0401b38a..49311f60 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -37,7 +37,12 @@ RUN apk --update add wget \ procps RUN pecl channel-update pecl.php.net; \ - docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl + docker-php-ext-install mysqli mbstring pdo pdo_mysql xml pcntl; \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ + php -m | grep -q 'tokenizer'; \ + else \ + docker-php-ext-install tokenizer; \ + fi # Add a non-root user to help install ffmpeg: ARG PUID=1000 From e8ea58a8ad50ad18c9fd2a01a085c6f8867db423 Mon Sep 17 00:00:00 2001 From: Kair Date: Fri, 25 Mar 2022 17:22:38 +0800 Subject: [PATCH 344/372] fix mongo description style wrong. --- DOCUMENTATION/content/documentation/index.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md index 5d5e6c59..83ddacd3 100644 --- a/DOCUMENTATION/content/documentation/index.md +++ b/DOCUMENTATION/content/documentation/index.md @@ -915,11 +915,7 @@ run from any cli:
`curl -X PURGE https://yourwebsite.com/`. // ... ], - - // ... - -], -``` + ``` 5 - Open your Laravel's `.env` file and update the following variables: From ae4e2319884877f0599ce09436b1211151cb1f78 Mon Sep 17 00:00:00 2001 From: Erik Niebla Date: Mon, 28 Mar 2022 11:41:36 -0500 Subject: [PATCH 345/372] Fix php-zmq link --- php-fpm/Dockerfile | 2 +- php-worker/Dockerfile | 2 +- workspace/Dockerfile | 12 +++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d6eff7e8..57578ebf 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1225,7 +1225,7 @@ ARG INSTALL_ZMQ=false RUN if [ ${INSTALL_ZMQ} = true ]; then \ apt-get install --yes git libzmq3-dev \ - && git clone git://github.com/mkoppanen/php-zmq.git \ + && git clone https://github.com/zeromq/php-zmq.git \ && cd php-zmq \ && phpize \ && ./configure \ diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index 8397681e..ee6d1890 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -5,7 +5,7 @@ # ARG LARADOCK_PHP_VERSION -FROM php:${LARADOCK_PHP_VERSION}-alpine3.15 +FROM php:${LARADOCK_PHP_VERSION}-alpine LABEL maintainer="Mahmoud Zalt " diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 6a243d5d..90893592 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -331,6 +331,7 @@ ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension # https://xdebug.org/docs/compat + apt-get install -yqq pkg-config php-xml php${LARADOCK_PHP_VERSION}-xml && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \ pecl install xdebug-3.1.2; \ else \ @@ -443,6 +444,7 @@ ARG INSTALL_MONGO=false RUN if [ ${INSTALL_MONGO} = true ]; then \ # Install the mongodb extension + apt-get install -yqq pkg-config && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install mongo; \ echo "extension=mongo.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/mongo.ini; \ @@ -543,11 +545,11 @@ ARG INSTALL_SWOOLE=false RUN set -eux; \ if [ ${INSTALL_SWOOLE} = true ]; then \ # Install Php Swoole Extension - if [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "50600" ]; then \ + if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ echo '' | pecl -q install swoole-2.0.10; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70000" ]; then \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ echo '' | pecl -q install swoole-4.3.5; \ - elif [ $(php -r "echo PHP_VERSION_ID - PHP_RELEASE_VERSION;") = "70100" ]; then \ + elif [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ echo '' | pecl -q install swoole-4.5.11; \ else \ echo '' | pecl -q install swoole; \ @@ -570,7 +572,7 @@ RUN set -eux; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \ echo '' | pecl -q install xlswriter && \ echo "extension=xlswriter.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini && \ - ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini; \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/xlswriter.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xlswriter.ini && \ php -m | grep -q 'xlswriter'; \ else \ echo "PHP Extension for xlswriter is not supported for PHP 5.0"; \ @@ -1721,7 +1723,7 @@ ARG INSTALL_ZMQ=false RUN if [ ${INSTALL_ZMQ} = true ]; then \ apt-get install --yes git libzmq3-dev \ - && git clone git://github.com/mkoppanen/php-zmq.git \ + && git clone https://github.com/zeromq/php-zmq.git \ && cd php-zmq \ && phpize \ && ./configure \ From cb77808a9413b10473e697578df9e00d0c0ccc69 Mon Sep 17 00:00:00 2001 From: Erik Niebla Date: Tue, 12 Apr 2022 16:42:36 -0500 Subject: [PATCH 346/372] Fix tests --- .env.example | 2 +- docker-compose.yml | 2 +- workspace/Dockerfile | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index 0c27f7cf..1b396ce9 100644 --- a/.env.example +++ b/.env.example @@ -99,7 +99,7 @@ SHELL_OH_MY_ZSH_ALIASES=false WORKSPACE_BASE_IMAGE_TAG_PREFIX=latest WORKSPACE_COMPOSER_GLOBAL_INSTALL=true WORKSPACE_COMPOSER_VERSION=2 -WORKSPACE_COMPOSER_AUTH=false +WORKSPACE_COMPOSER_AUTH_JSON=false WORKSPACE_COMPOSER_REPO_PACKAGIST= WORKSPACE_NVM_NODEJS_ORG_MIRROR= WORKSPACE_INSTALL_NODE=true diff --git a/docker-compose.yml b/docker-compose.yml index 696884d7..70cef48e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -111,7 +111,7 @@ services: - INSTALL_V8JS=${WORKSPACE_INSTALL_V8JS} - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL} - COMPOSER_VERSION=${WORKSPACE_COMPOSER_VERSION} - - COMPOSER_AUTH=${WORKSPACE_COMPOSER_AUTH} + - COMPOSER_AUTH_JSON=${WORKSPACE_COMPOSER_AUTH_JSON} - COMPOSER_REPO_PACKAGIST=${WORKSPACE_COMPOSER_REPO_PACKAGIST} - INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH} - INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY} diff --git a/workspace/Dockerfile b/workspace/Dockerfile index afc94950..a67bc201 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -159,10 +159,10 @@ RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \ ;fi # Check if auth file is disabled -ARG COMPOSER_AUTH=false -ENV COMPOSER_AUTH ${COMPOSER_AUTH} +ARG COMPOSER_AUTH_JSON=false +ENV COMPOSER_AUTH_JSON ${COMPOSER_AUTH_JSON} -RUN if [ ${COMPOSER_AUTH} = false ]; then \ +RUN if [ ${COMPOSER_AUTH_JSON} = false ]; then \ # remove the file rm /home/laradock/.composer/auth.json \ ;fi @@ -305,7 +305,7 @@ RUN set -eux; \ # SMB: ########################################################################### if [ ${INSTALL_SMB} = true ]; then \ - apt-get install -yqq smbclient php-smbclient coreutils; \ + apt-get install -yqq smbclient php${LARADOCK_PHP_VERSION}-smbclient coreutils; \ fi; \ ########################################################################### # IMAP: From c7eba246c91b0d4fbb64a491b5b15eae1b93583b Mon Sep 17 00:00:00 2001 From: PaolaRuby <79208489+PaolaRuby@users.noreply.github.com> Date: Wed, 13 Apr 2022 09:16:52 -0500 Subject: [PATCH 347/372] Let choose alpine correct version --- laravel-horizon/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laravel-horizon/Dockerfile b/laravel-horizon/Dockerfile index 49311f60..e35f8b06 100644 --- a/laravel-horizon/Dockerfile +++ b/laravel-horizon/Dockerfile @@ -5,7 +5,7 @@ # ARG LARADOCK_PHP_VERSION -FROM php:${LARADOCK_PHP_VERSION}-alpine3.15 +FROM php:${LARADOCK_PHP_VERSION}-alpine LABEL maintainer="Mahmoud Zalt " From 10b3906da4fc7a6c51adebb8328f042badaed004 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Apr 2022 15:53:50 +0000 Subject: [PATCH 348/372] Bump minimist from 1.2.5 to 1.2.6 in /react Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 946dcb26..29edcd7e 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -9709,9 +9709,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "minimist-options": { "version": "4.1.0", From fe885ea1309cf32755b08b84e21b8face1bf4598 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Apr 2022 14:36:49 +0000 Subject: [PATCH 349/372] Bump async from 2.6.3 to 2.6.4 in /react Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 29edcd7e..8b0f6391 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -2939,9 +2939,9 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } From bf0887c6751467ee0dc011db43cb9941e425f34b Mon Sep 17 00:00:00 2001 From: Afshin Tavakolian Date: Tue, 26 Apr 2022 15:07:08 +0430 Subject: [PATCH 350/372] Update .env.example 8.1 PHP-FPM was added to the samples --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 1b396ce9..3adafe94 100644 --- a/.env.example +++ b/.env.example @@ -38,7 +38,7 @@ COMPOSE_PROJECT_NAME=laradock ### PHP Version ########################################### # Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). -# Accepted values: 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 +# Accepted values: 8.1 - 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6 PHP_VERSION=7.4 ### Phalcon Version ########################################### From 4263de43fd43e3e816fb98908ac8179af222ecc5 Mon Sep 17 00:00:00 2001 From: Afshin Tavakolian Date: Tue, 26 Apr 2022 15:18:18 +0430 Subject: [PATCH 351/372] Update index.md 8.1 PHP-FPM was added to the samples --- DOCUMENTATION/content/introduction/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md index 689ab442..d1997b36 100644 --- a/DOCUMENTATION/content/introduction/index.md +++ b/DOCUMENTATION/content/introduction/index.md @@ -17,7 +17,7 @@ It supports a variety of common services, all pre-configured to provide a ready ## Features -- Easy switch between PHP versions: 8.0, 7.4, 7.3, 7.2, 7.1, 5.6... +- Easy switch between PHP versions: 8.1, 8.0, 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... From cd9542198cfe796084465ff65ce16f49209b15fd Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Fri, 29 Apr 2022 14:21:10 +0800 Subject: [PATCH 352/372] feat:Add the broadcast driver officially recommended by laravel --- docker-compose.yml | 11 +++++++++++ soketi/Dockerfile | 7 +++++++ 2 files changed, 18 insertions(+) create mode 100644 soketi/Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml index 70cef48e..4976b208 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -396,6 +396,17 @@ services: networks: - backend + ### Soketi Server ############################################## + soketi: + build: + context: ./soketi + ports: + - "${SOKETI_PORT}:6001" + - "${SOKETI_METRICS_SERVER_PORT}:9601" + networks: + - frontend + - backend + ### NGINX Server ######################################### nginx: build: diff --git a/soketi/Dockerfile b/soketi/Dockerfile new file mode 100644 index 00000000..3f52bf38 --- /dev/null +++ b/soketi/Dockerfile @@ -0,0 +1,7 @@ +FROM quay.io/soketi/soketi:latest + +LABEL maintainer="WuweiMing " + +CMD ["node /app/bin/server.js start"] + +EXPOSE 6001 9601 From 20463869c2ba081cf6436658efbe18cc5f7859df Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Fri, 29 Apr 2022 14:29:30 +0800 Subject: [PATCH 353/372] fix:add .env.example --- .env.example | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.env.example b/.env.example index 3adafe94..31dbc63d 100644 --- a/.env.example +++ b/.env.example @@ -1040,3 +1040,7 @@ TARANTOOL_ADMIN_PORT=8002 NATS_CLIENT_PORT=4222 NATS_MONITORING_PORT=6222 NATS_ROUTE_PORT=8222 + +### SOKETI ################################################## +SOKETI_PORT=6001 +SOKETI_METRICS_SERVER_PORT=9601 From 220f2eb45110a683b5e294b9178a21665eedc536 Mon Sep 17 00:00:00 2001 From: leamsigc Date: Tue, 3 May 2022 21:24:58 +0200 Subject: [PATCH 354/372] Problem: - When user are reading the documentation, there is a horizontal scrolling. Solution: - Prevent scroll x on mibile view --- DOCUMENTATION/static/custom-style.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DOCUMENTATION/static/custom-style.css b/DOCUMENTATION/static/custom-style.css index d25a5ac1..6e20a8dd 100644 --- a/DOCUMENTATION/static/custom-style.css +++ b/DOCUMENTATION/static/custom-style.css @@ -1,5 +1,7 @@ /* Custom CSS */ - +.article{ + overflow-x:hidden; +} .article a { border-bottom: none; } From a285caa18f5a5b46ca1d968807a93a73819ce495 Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Fri, 6 May 2022 16:11:29 +0800 Subject: [PATCH 355/372] add php event --- .env.example | 3 +++ docker-compose.yml | 3 +++ php-fpm/Dockerfile | 32 ++++++++++++++++++++++++++++++++ php-worker/Dockerfile | 32 ++++++++++++++++++++++++++++++++ workspace/Dockerfile | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+) diff --git a/.env.example b/.env.example index 3adafe94..387864f3 100644 --- a/.env.example +++ b/.env.example @@ -203,6 +203,7 @@ WORKSPACE_INSTALL_SSDB=false WORKSPACE_INSTALL_TRADER=false WORKSPACE_PROTOC_VERSION=latest WORKSPACE_INSTALL_MEMCACHED=true +WORKSPACE_INSTALL_EVENT=false ### PHP_FPM ############################################### @@ -274,6 +275,7 @@ PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8" PHP_FPM_INSTALL_DOCKER_CLIENT=false PHP_FPM_DEFAULT_LOCALE=POSIX PHP_FPM_XDEBUG_PORT=9003 +PHP_FPM_INSTALL_EVENT=false PHP_FPM_PUID=1000 PHP_FPM_PGID=1000 @@ -317,6 +319,7 @@ PHP_WORKER_INSTALL_REDIS=false PHP_WORKER_INSTALL_IMAP=false PHP_WORKER_INSTALL_XMLRPC=false PHP_WORKER_INSTALL_SSDB=false +PHP_WORKER_INSTALL_EVENT=false PHP_WORKER_PUID=1000 PHP_WORKER_PGID=1000 diff --git a/docker-compose.yml b/docker-compose.yml index 70cef48e..028ec11a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -172,6 +172,7 @@ services: - PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION} - INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT} - INSTALL_MEMCACHED=${WORKSPACE_INSTALL_MEMCACHED} + - INSTALL_EVENT=${WORKSPACE_INSTALL_EVENT} - http_proxy - https_proxy - no_proxy @@ -274,6 +275,7 @@ services: - INSTALL_ZOOKEEPER=${PHP_FPM_INSTALL_ZOOKEEPER} - INSTALL_SSDB=${PHP_FPM_INSTALL_SSDB} - INSTALL_TRADER=${PHP_FPM_INSTALL_TRADER} + - INSTALL_EVENT=${PHP_FPM_INSTALL_EVENT} - DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL} - PUID=${PHP_FPM_PUID} - PGID=${PHP_FPM_PGID} @@ -347,6 +349,7 @@ services: - INSTALL_IMAP=${PHP_WORKER_INSTALL_IMAP} - INSTALL_XMLRPC=${PHP_WORKER_INSTALL_XMLRPC} - INSTALL_SSDB=${PHP_WORKER_INSTALL_SSDB} + - INSTALL_EVENT=${PHP_WORKER_INSTALL_EVENT} - PUID=${PHP_WORKER_PUID} - PGID=${PHP_WORKER_PGID} - IMAGEMAGICK_VERSION=${PHP_WORKER_IMAGEMAGICK_VERSION} diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 57578ebf..724097a1 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1236,6 +1236,38 @@ RUN if [ ${INSTALL_ZMQ} = true ]; then \ && echo "extension=zmq.so" > /usr/local/etc/php/conf.d/zmq.ini \ ;fi + +############################################################################ +## Event: +############################################################################ +USER root + +ARG INSTALL_EVENT=false + +RUN set -eux; \ + if [ ${INSTALL_EVENT} = true ]; then \ + curl -L -o /tmp/libevent.tar.gz https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz &&\ + mkdir -p /tmp/libevent-php &&\ + tar -C /tmp/libevent-php -zxvf /tmp/libevent.tar.gz --strip 1 &&\ + cd /tmp/libevent-php &&\ + ./configure --prefix=/usr/local/libevent-2.1.12 &&\ + make &&\ + make install &&\ + rm /tmp/libevent.tar.gz &&\ + docker-php-ext-install sockets &&\ + curl -L -o /tmp/event.tar.gz http://pecl.php.net/get/event-3.0.6.tgz &&\ + mkdir -p /tmp/event-php &&\ + tar -C /tmp/event-php -zxvf /tmp/event.tar.gz --strip 1 &&\ + cd /tmp/event-php &&\ + phpize &&\ + ./configure --with-event-libevent-dir=/usr/local/libevent-2.1.12/ &&\ + make &&\ + make install &&\ + rm /tmp/event.tar.gz &&\ + docker-php-ext-enable event &&\ + php -m | grep -q 'event' \ +;fi + ########################################################################### # Check PHP version: ########################################################################### diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index ee6d1890..a9ee94c9 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -508,6 +508,38 @@ RUN set -xe; \ && docker-php-ext-enable ssdb \ ;fi + +############################################################################ +## Event: +############################################################################ +USER root + +ARG INSTALL_EVENT=false + +RUN set -eux; \ + if [ ${INSTALL_EVENT} = true ]; then \ + curl -L -o /tmp/libevent.tar.gz https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz &&\ + mkdir -p /tmp/libevent-php &&\ + tar -C /tmp/libevent-php -zxvf /tmp/libevent.tar.gz --strip 1 &&\ + cd /tmp/libevent-php &&\ + ./configure --prefix=/usr/local/libevent-2.1.12 &&\ + make &&\ + make install &&\ + rm /tmp/libevent.tar.gz &&\ + docker-php-ext-install sockets &&\ + curl -L -o /tmp/event.tar.gz http://pecl.php.net/get/event-3.0.6.tgz &&\ + mkdir -p /tmp/event-php &&\ + tar -C /tmp/event-php -zxvf /tmp/event.tar.gz --strip 1 &&\ + cd /tmp/event-php &&\ + phpize &&\ + ./configure --with-event-libevent-dir=/usr/local/libevent-2.1.12/ &&\ + make &&\ + make install &&\ + rm /tmp/event.tar.gz &&\ + docker-php-ext-enable event &&\ + php -m | grep -q 'event' \ +;fi + # #-------------------------------------------------------------------------- # Optional Supervisord Configuration diff --git a/workspace/Dockerfile b/workspace/Dockerfile index a67bc201..48c199c1 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1733,6 +1733,38 @@ RUN if [ ${INSTALL_ZMQ} = true ]; then \ && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/zmq.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-zmq.ini \ ;fi +############################################################################ +## Event: +############################################################################ +USER root + +ARG INSTALL_EVENT=false + +RUN set -eux; \ + if [ ${INSTALL_EVENT} = true ]; then \ + curl -L -o /tmp/libevent.tar.gz https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz &&\ + mkdir -p /tmp/libevent-php &&\ + tar -C /tmp/libevent-php -zxvf /tmp/libevent.tar.gz --strip 1 &&\ + cd /tmp/libevent-php &&\ + ./configure --prefix=/usr/local/libevent-2.1.12 &&\ + make &&\ + make install &&\ + rm /tmp/libevent.tar.gz &&\ + docker-php-ext-install sockets &&\ + curl -L -o /tmp/event.tar.gz http://pecl.php.net/get/event-3.0.6.tgz &&\ + mkdir -p /tmp/event-php &&\ + tar -C /tmp/event-php -zxvf /tmp/event.tar.gz --strip 1 &&\ + cd /tmp/event-php &&\ + phpize &&\ + ./configure --with-event-libevent-dir=/usr/local/libevent-2.1.12/ &&\ + make &&\ + make install &&\ + rm /tmp/event.tar.gz &&\ + docker-php-ext-enable event &&\ + php -m | grep -q 'event' \ +;fi + + # #-------------------------------------------------------------------------- # Final Touch From 7abbfd31420d329079d3c25d724c5c46a1b21e55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A8=B1=E7=9B=8A=E9=8A=98?= Date: Fri, 6 May 2022 23:40:14 +0800 Subject: [PATCH 356/372] Solved undefined function imagecreatefromjpeg [Solved] `Call to undefined function Intervention\Image\Gd\imagecreatefromjpeg()` [PHP 7.4 Changelog](https://www.php.net/manual/en/migration74.other-changes.php) in GD section we can run docker-php-ext-configure command to configure our gd with JPEG support. we don't need to provide flag to enable PNG. ``` $ docker exec -it laradock_php-worker_1 php -r 'print_r(gd_info());' Array ( [GD Version] => bundled (2.1.0 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [GIF Read Support] => 1 [GIF Create Support] => 1 [JPEG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XPM Support] => [XBM Support] => 1 [WebP Support] => [BMP Support] => 1 [TGA Read Support] => 1 [JIS-mapped Japanese Font Support] => ) ``` --- php-worker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php-worker/Dockerfile b/php-worker/Dockerfile index ee6d1890..8be39f89 100644 --- a/php-worker/Dockerfile +++ b/php-worker/Dockerfile @@ -87,7 +87,7 @@ ARG INSTALL_GD=false RUN if [ ${INSTALL_GD} = true ]; then \ apk add --update --no-cache freetype-dev libjpeg-turbo-dev jpeg-dev libpng-dev; \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ]; then \ - docker-php-ext-configure gd --with-freetype --with-jpeg --with-png; \ + docker-php-ext-configure gd --with-freetype --with-jpeg; \ else \ docker-php-ext-configure gd --with-freetype-dir=/usr/lib/ --with-jpeg-dir=/usr/lib/ --with-png-dir=/usr/lib/; \ fi; \ From baeb2a2cb667a631b78f42182459209abe058a05 Mon Sep 17 00:00:00 2001 From: Wuweiming <1052701694@qq.com> Date: Mon, 9 May 2022 10:31:31 +0800 Subject: [PATCH 357/372] fix workspace DockerFile --- workspace/Dockerfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 48c199c1..31930694 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1750,7 +1750,8 @@ RUN set -eux; \ make &&\ make install &&\ rm /tmp/libevent.tar.gz &&\ - docker-php-ext-install sockets &&\ + echo "extension=sockets.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/sockets.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/sockets.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-sockets.ini && \ curl -L -o /tmp/event.tar.gz http://pecl.php.net/get/event-3.0.6.tgz &&\ mkdir -p /tmp/event-php &&\ tar -C /tmp/event-php -zxvf /tmp/event.tar.gz --strip 1 &&\ @@ -1760,11 +1761,13 @@ RUN set -eux; \ make &&\ make install &&\ rm /tmp/event.tar.gz &&\ - docker-php-ext-enable event &&\ + echo "extension=event.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/event.ini && \ + ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/event.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-event.ini && \ php -m | grep -q 'event' \ ;fi + # #-------------------------------------------------------------------------- # Final Touch From 4b81ddf79709cbf75bddb1a189d4807c6563f082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Stan=C4=8Der?= Date: Mon, 16 May 2022 19:57:46 +0200 Subject: [PATCH 358/372] Add architecture detection for WKHTMLtoX installation If Apple silicon version of Docker Desktop is installed then some containers will be for arm64 architecture instead of amd64. So when installing WKHTMLtoX a proper package has to be installed. --- php-fpm/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index 57578ebf..d34469e7 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1038,7 +1038,8 @@ USER root ARG INSTALL_WKHTMLTOPDF=false RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ - apt-get install -yqq \ + ARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \ + && apt-get install -yqq \ libxrender1 \ libfontconfig1 \ libx11-dev \ @@ -1049,8 +1050,8 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ xfonts-base \ xfonts-75dpi \ wget \ - && wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.stretch_amd64.deb \ - && dpkg -i wkhtmltox_0.12.6-1.stretch_amd64.deb \ + && wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.stretch_${ARCH}.deb" \ + && dpkg -i "wkhtmltox_0.12.6-1.stretch_${ARCH}.deb" \ && apt -f install \ ;fi From 37377b07f017dca424ef6b6fb763c9fdea8b50c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Stan=C4=8Der?= Date: Mon, 16 May 2022 20:02:22 +0200 Subject: [PATCH 359/372] Add architecture detection for WKHTMLtoX installation If Apple silicon version of Docker Desktop is installed then some containers will be for arm64 architecture instead of amd64. So when installing WKHTMLtoX a proper package has to be installed. --- workspace/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index a67bc201..18640a6a 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1442,7 +1442,8 @@ USER root ARG INSTALL_WKHTMLTOPDF=false RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ - apt-get install -y \ + ARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \ + && apt-get install -y \ libxrender1 \ libfontconfig1 \ libx11-dev \ @@ -1453,8 +1454,8 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ xfonts-base \ xfonts-75dpi \ wget \ - && wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb \ - && dpkg -i wkhtmltox_0.12.6-1.bionic_amd64.deb \ + && wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_${ARCH}.deb" \ + && dpkg -i "wkhtmltox_0.12.6-1.bionic_${ARCH}.deb" \ && apt -f install \ ;fi From b50d514c6c040e4e0848caee8eb41f2e338fdad9 Mon Sep 17 00:00:00 2001 From: Denis Stancer Date: Mon, 16 May 2022 21:36:20 +0200 Subject: [PATCH 360/372] Make WKHTMLtoX version configurable --- .env.example | 2 ++ docker-compose.yml | 2 ++ php-fpm/Dockerfile | 5 +++-- workspace/Dockerfile | 5 +++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 3adafe94..0368b28a 100644 --- a/.env.example +++ b/.env.example @@ -185,6 +185,7 @@ WORKSPACE_SSH_PORT=2222 WORKSPACE_INSTALL_FFMPEG=false WORKSPACE_INSTALL_AUDIOWAVEFORM=false WORKSPACE_INSTALL_WKHTMLTOPDF=false +WORKSPACE_WKHTMLTOPDF_VERSION=0.12.6-1 WORKSPACE_INSTALL_GNU_PARALLEL=false WORKSPACE_INSTALL_AST=true WORKSPACE_AST_VERSION=1.0.10 @@ -263,6 +264,7 @@ PHP_FPM_INSTALL_PING=false PHP_FPM_INSTALL_SSHPASS=false PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_WKHTMLTOPDF=false +PHP_FPM_KHTMLTOPDF_VERSION=0.12.6-1 PHP_FPM_INSTALL_XLSWRITER=false PHP_FPM_INSTALL_PHPDECIMAL=false PHP_FPM_INSTALL_ZOOKEEPER=false diff --git a/docker-compose.yml b/docker-compose.yml index 70cef48e..6313685e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -162,6 +162,7 @@ services: - INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG} - INSTALL_AUDIOWAVEFORM=${WORKSPACE_INSTALL_AUDIOWAVEFORM} - INSTALL_WKHTMLTOPDF=${WORKSPACE_INSTALL_WKHTMLTOPDF} + - WKHTMLTOPDF_VERSION=${WORKSPACE_WKHTMLTOPDF_VERSION} - INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL} - INSTALL_LNAV=${WORKSPACE_INSTALL_LNAV} - INSTALL_PROTOC=${WORKSPACE_INSTALL_PROTOC} @@ -268,6 +269,7 @@ services: - INSTALL_FFMPEG=${PHP_FPM_FFMPEG} - INSTALL_AUDIOWAVEFORM=${PHP_FPM_AUDIOWAVEFORM} - INSTALL_WKHTMLTOPDF=${PHP_FPM_INSTALL_WKHTMLTOPDF} + - WKHTMLTOPDF_VERSION=${WORKSPACE_WKHTMLTOPDF_VERSION} - INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF} - INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC} - INSTALL_PHPDECIMAL=${PHP_FPM_INSTALL_PHPDECIMAL} diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index d34469e7..3fe19454 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -1036,6 +1036,7 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ USER root ARG INSTALL_WKHTMLTOPDF=false +ARG WKHTMLTOPDF_VERSION=0.12.6-1 RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ ARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \ @@ -1050,8 +1051,8 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ xfonts-base \ xfonts-75dpi \ wget \ - && wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.stretch_${ARCH}.deb" \ - && dpkg -i "wkhtmltox_0.12.6-1.stretch_${ARCH}.deb" \ + && wget "https://github.com/wkhtmltopdf/packaging/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox_0.12.6-1.stretch_${ARCH}.deb" \ + && dpkg -i "wkhtmltox_${WKHTMLTOPDF_VERSION}.stretch_${ARCH}.deb" \ && apt -f install \ ;fi diff --git a/workspace/Dockerfile b/workspace/Dockerfile index 18640a6a..9aba7096 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1440,6 +1440,7 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \ USER root ARG INSTALL_WKHTMLTOPDF=false +ARG WKHTMLTOPDF_VERSION=0.12.6-1 RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ ARCH=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \ @@ -1454,8 +1455,8 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ xfonts-base \ xfonts-75dpi \ wget \ - && wget "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_${ARCH}.deb" \ - && dpkg -i "wkhtmltox_0.12.6-1.bionic_${ARCH}.deb" \ + && wget "https://github.com/wkhtmltopdf/packaging/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox_0.12.6-1.bionic_${ARCH}.deb" \ + && dpkg -i "wkhtmltox_${WKHTMLTOPDF_VERSION}.bionic_${ARCH}.deb" \ && apt -f install \ ;fi From e776f617453ceb8d3f1fa631f1ce7bd7117ce1a3 Mon Sep 17 00:00:00 2001 From: xiagw Date: Wed, 18 May 2022 09:21:20 +0800 Subject: [PATCH 361/372] =?UTF-8?q?=F0=9F=90=9Efix(M=20=20.env.example=20M?= =?UTF-8?q?=20=20docker-compose.yml):=20redis=20--requirepass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 1 + docker-compose.yml | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 3adafe94..54a5fd57 100644 --- a/.env.example +++ b/.env.example @@ -401,6 +401,7 @@ CLICKHOUSE_HOST_LOG_PATH=./logs/clickhouse ### REDIS ################################################# REDIS_PORT=6379 +REDIS_PASSWORD=secret_redis ### REDIS CLUSTER ######################################### diff --git a/docker-compose.yml b/docker-compose.yml index 70cef48e..ad18f128 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -627,7 +627,7 @@ services: build: context: ./postgres-postgis args: - - POSTGIS_VERSION=${POSTGIS_VERSION} + - POSTGIS_VERSION=${POSTGIS_VERSION} - INSTALL_PGSQL_HTTP_FOR_POSTGIS13=${POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13} volumes: - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data @@ -723,6 +723,7 @@ services: build: ./redis volumes: - ${DATA_PATH_HOST}/redis:/data + command: --requirepass ${REDIS_PASSWORD} ports: - "${REDIS_PORT}:6379" networks: From 727c53ac6b4b828f3eaf1a1678346a9b394b7155 Mon Sep 17 00:00:00 2001 From: grasebit Date: Fri, 27 May 2022 17:06:50 +0900 Subject: [PATCH 362/372] fix redis-webui --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index ad18f128..0df0a428 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1554,6 +1554,7 @@ services: - ADMIN_PASS=${REDIS_WEBUI_PASSWORD} - REDIS_1_HOST=${REDIS_WEBUI_CONNECT_HOST} - REDIS_1_PORT=${REDIS_WEBUI_CONNECT_PORT} + - REDIS_1_AUTH=${REDIS_PASSWORD} networks: - backend ports: From 0e79534cf8d608aaaeda8e330b7db566f28424e3 Mon Sep 17 00:00:00 2001 From: grasebit Date: Mon, 30 May 2022 10:58:39 +0900 Subject: [PATCH 363/372] =?UTF-8?q?=E6=88=BB=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0df0a428..ad18f128 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1554,7 +1554,6 @@ services: - ADMIN_PASS=${REDIS_WEBUI_PASSWORD} - REDIS_1_HOST=${REDIS_WEBUI_CONNECT_HOST} - REDIS_1_PORT=${REDIS_WEBUI_CONNECT_PORT} - - REDIS_1_AUTH=${REDIS_PASSWORD} networks: - backend ports: From b7945ded63cf0d96e3e39fdaf1dd24ff14aeb562 Mon Sep 17 00:00:00 2001 From: grasebit Date: Mon, 30 May 2022 11:01:32 +0900 Subject: [PATCH 364/372] Add redis password to redis-webui. --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index ad18f128..0df0a428 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1554,6 +1554,7 @@ services: - ADMIN_PASS=${REDIS_WEBUI_PASSWORD} - REDIS_1_HOST=${REDIS_WEBUI_CONNECT_HOST} - REDIS_1_PORT=${REDIS_WEBUI_CONNECT_PORT} + - REDIS_1_AUTH=${REDIS_PASSWORD} networks: - backend ports: From 9d3aec6a3f5537bd6a276d5b649d37dd7aff78b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 22:27:38 +0000 Subject: [PATCH 365/372] Bump eventsource from 1.0.7 to 1.1.1 in /react Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.1. - [Release notes](https://github.com/EventSource/eventsource/releases) - [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md) - [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.1) --- updated-dependencies: - dependency-name: eventsource dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index 8b0f6391..e0a5da59 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -6074,9 +6074,9 @@ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" }, "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.1.tgz", + "integrity": "sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA==", "requires": { "original": "^1.0.0" } From c99d86b8e34ecf669579d2c2056d25760469300f Mon Sep 17 00:00:00 2001 From: erikn69 Date: Tue, 21 Jun 2022 10:09:47 -0500 Subject: [PATCH 366/372] Fix tests --- workspace/Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index a67bc201..8e18acdb 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -804,11 +804,16 @@ COPY ./.npmrc /home/laradock/.npmrc # PNPM: ########################################################################### -USER laradock +USER root ARG INSTALL_PNPM=false +ENV PNPM_HOME="/home/laradock/.local/share/pnpm" +ENV PATH $PATH:/home/laradock/.local/share/pnpm RUN if [ ${INSTALL_PNPM} = true ]; then \ + echo "" >> ~/.bashrc && \ + echo 'export PNPM_HOME="/home/laradock/.local/share/pnpm"' >> ~/.bashrc && \ + echo 'export PATH="$PNPM_HOME:$PATH"' >> ~/.bashrc && \ npx pnpm add -g pnpm \ ;fi From 55b5fbaa9b58acc6c29fd31a0d9d82d434e094d5 Mon Sep 17 00:00:00 2001 From: zhushaolong <15210900722@163.com> Date: Fri, 1 Jul 2022 02:42:33 +0800 Subject: [PATCH 367/372] Update zsh config 1. Plugin laravel5 not found in zsh plugin list. 2. The executable command for the composer package could not be found. For example 'laravel new xxx'. The zsh composer plugin solves this problem. --- workspace/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/Dockerfile b/workspace/Dockerfile index a67bc201..3b0537fe 100644 --- a/workspace/Dockerfile +++ b/workspace/Dockerfile @@ -1560,7 +1560,7 @@ ARG SHELL_OH_MY_ZSH_ALIASES=false USER laradock RUN if [ ${SHELL_OH_MY_ZSH} = true ]; then \ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh) --keep-zshrc" && \ - sed -i -r 's/^plugins=\(.*?\)$/plugins=(laravel5)/' /home/laradock/.zshrc && \ + sed -i -r 's/^plugins=\(.*?\)$/plugins=(laravel composer)/' /home/laradock/.zshrc && \ echo '\n\ bindkey "^[OB" down-line-or-search\n\ bindkey "^[OC" forward-char\n\ From 225988b8ef9450b79318a59343561b7888f4ce50 Mon Sep 17 00:00:00 2001 From: Channaveer Hakari Date: Sat, 16 Jul 2022 23:37:13 +0530 Subject: [PATCH 368/372] Updated SSL Protocols For the sake of security purposes old SSL protocols ie TLSv1 and TLSv1.1 should be avoided. --- nginx/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nginx/nginx.conf b/nginx/nginx.conf index e747e983..9a536138 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -24,7 +24,7 @@ http { gzip on; gzip_disable "msie6"; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; include /etc/nginx/conf.d/*.conf; From 1101d2977998724a70d797ca6b43df585d303ef8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Jul 2022 19:50:06 +0000 Subject: [PATCH 369/372] Bump terser from 4.8.0 to 4.8.1 in /react Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/terser/terser/releases) - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) - [Commits](https://github.com/terser/terser/commits) --- updated-dependencies: - dependency-name: terser dependency-type: indirect ... Signed-off-by: dependabot[bot] --- react/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/react/package-lock.json b/react/package-lock.json index e0a5da59..3b06695f 100644 --- a/react/package-lock.json +++ b/react/package-lock.json @@ -14428,9 +14428,9 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", From 5cd37b9f17669aa3c4a72fa553bd863b9b40410a Mon Sep 17 00:00:00 2001 From: DavidLiu Date: Sat, 23 Jul 2022 15:38:58 +0800 Subject: [PATCH 370/372] Change ngx_brotli mirror of Openresty https://www.downsoft.cn/software/linux/nginx/ngx_brotli.tar.gz mirror is no longer available --- openresty/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openresty/Dockerfile b/openresty/Dockerfile index 50198cb1..f90803de 100644 --- a/openresty/Dockerfile +++ b/openresty/Dockerfile @@ -58,7 +58,7 @@ ARG RESTY_CONFIG_OPTIONS_MORE="\ --with-http_iconv_module \ --add-module=/tmp/nginx-ct-master \ --add-module=/tmp/nginx-dav-ext-module-master \ - --add-module=/tmp/ngx_brotli \ + --add-module=/tmp/ngx_brotli-master \ --add-module=/tmp/ngx_cache_purge-master \ --add-module=/tmp/ngx_http_substitutions_filter_module-master \ " @@ -166,7 +166,7 @@ RUN apk add --no-cache --virtual .build-deps \ && tar xzf nginx-ct.tar.gz \ && curl -fSL https://github.com/arut/nginx-dav-ext-module/archive/master.tar.gz -o nginx-dav-ext-module.tar.gz \ && tar xzf nginx-dav-ext-module.tar.gz \ - && curl -fSL https://www.downsoft.cn/software/linux/nginx/ngx_brotli.tar.gz -o ngx_brotli.tar.gz \ + && curl -fSL https://github.com/google/ngx_brotli/archive/master.tar.gz -o ngx_brotli.tar.gz \ && tar xzf ngx_brotli.tar.gz \ && curl -fSL https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.tar.gz -o ngx_http_substitutions_filter_module.tar.gz \ && tar xzf ngx_http_substitutions_filter_module.tar.gz \ From ee88ac2e8cafc2d73b665c2d3cdc251bd8d1d2f9 Mon Sep 17 00:00:00 2001 From: fahamjv Date: Wed, 27 Jul 2022 13:50:48 +0430 Subject: [PATCH 371/372] put Traefik varible in quotation --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index d0ac8185..e79c3122 100644 --- a/.env.example +++ b/.env.example @@ -900,7 +900,7 @@ TRAEFIK_HOST_HTTP_PORT=80 TRAEFIK_HOST_HTTPS_PORT=443 TRAEFIK_DASHBOARD_PORT=8888 # basic authentication for traefik dashboard username: admin password:admin -TRAEFIK_DASHBOARD_USER=admin:$2y$10$lXaL3lj6raFic6rFqr2.lOBoCudAIhB6zyoqObNg290UFppiUzTTi +TRAEFIK_DASHBOARD_USER='admin:$2y$10$lXaL3lj6raFic6rFqr2.lOBoCudAIhB6zyoqObNg290UFppiUzTTi' ACME_DOMAIN=example.org ACME_EMAIL=email@example.org From 7e4bba514a5575304b712bfe4a8822bb647ff6da Mon Sep 17 00:00:00 2001 From: davlet42 Date: Sat, 30 Jul 2022 14:08:23 +0300 Subject: [PATCH 372/372] Updating the Clickhouse and Gosu versions --- .env.example | 4 ++-- clickhouse/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index e79c3122..3277e883 100644 --- a/.env.example +++ b/.env.example @@ -389,8 +389,8 @@ MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d ### CLICKHOUSE ################################################# -CLICKHOUSE_VERSION=20.9.4.76 -CLICKHOUSE_GOSU_VERSION=1.10 +CLICKHOUSE_VERSION=22.2.2.1 +CLICKHOUSE_GOSU_VERSION=1.14 CLICKHOUSE_CUSTOM_CONFIG=./clickhouse/config.xml CLICKHOUSE_USERS_CUSTOM_CONFIG=./clickhouse/users.xml CLICKHOUSE_USER=default diff --git a/clickhouse/Dockerfile b/clickhouse/Dockerfile index 853c14df..c3d1aab8 100644 --- a/clickhouse/Dockerfile +++ b/clickhouse/Dockerfile @@ -1,7 +1,7 @@ FROM ubuntu:20.04 -ARG CLICKHOUSE_VERSION=20.9.4.76 -ARG CLICKHOUSE_GOSU_VERSION=1.10 +ARG CLICKHOUSE_VERSION=22.2.2.1 +ARG CLICKHOUSE_GOSU_VERSION=1.14 RUN apt-get update \ && apt-get install --yes --no-install-recommends \

lg?D> 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

b-50Kb1L8HOdED9r$3(7xT2w z7mKcj&m<^$rP6j?^_QF4!$pI?=wHF6?-<2sr+0AO@djyF%K9S>)$}f|JKn%Q2>e&P zOSf;#7CBwT$qaj;%T6`07p59M5mXfGawimAZeSl6OHS_u?EGw=%Z)}lcltc}%C8XPVV~aSb{EZTH6meE1NDDG) z=s_d(u&iKSwSC8z-ykpUYA33SDrM`LZj3La%~5AVAS*XbLDC;utgk z4N~fkIT?i+sHhw;a()P;l;-WKCzXFzl`}E6WVaSds-Xu}4)0U`YeB~d-`?(@OY!g> zcuVuR)tY-nXSwo!3Hqy4f7ck@-6BJke|uO|3!DBy8LoihitjVp<`7TR>d)~eShHyL zC+KX|r`u?Hd@5w1h{>H{ZCYjJZ;Q6wM;>{={}1x#v3CE%%0Dmou*f9f|HSTp(RK^r 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 literal 0 HcmV?d00001 diff --git a/react/src/assets/images/reactjs.jpg b/react/src/assets/images/reactjs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92f431a473b9549425a7d8fa6d9daa41f62b6fe2 GIT binary patch literal 137711 zcmeFZ1zcNM+CQF_+EkZPpm+ybXwl*t=(I@D6bZpI5Tqf50Ks+I8Hz)J;?`mTf)q(Y z&}oqrA6ydLiX^z(kM6s(GCS|=?z_AH|GuBkdp{vL=Q)pjpXWU1+$q=mewdM8(|m< zDdK7ABqA#OPz0c$lnbi5inV6ZY9M#3Z8PFNGGI?tK}U}q=O?`&J)P}d*yPcRzxiVI zj*<4WJ5Nw9Hg_b2rG#J)rKImj%LcgwS4&u9luc zj%c2rH7MJlVJ>hdS2)V?&KHfARwy@DAonTK|8fE8q^e>7W z#;gT3ZTV=0I>e?bXcA_Ap?E@ zoTK}4oPM9XaPIW);`wvu&R@KA;ljlW7cO1C^wsHc>GI{PUyjr7YuBz`rT=o=`r~ot z-1+mDE?&BE`SOih*RNmyBmM6#ocsu&zjRLK;&*gs=mBTx&(P7IIcWq;oX#C*&(fVa z^QUR$6x$`bb6=e~drCZW{?A(g=g*w|g8kC(0B7jv&YnAa;ryl3&-qJN0H+P~=g!}} z@UzsU3wAyn1}J5o|Vf>aVF-{4>6ff?w0ApB<`(tqhrgJCHW>l_PhbF zeV^59VC~9l_|;Ulid&p?jv9pi6w;|ax=R->(Oo=u=Iq7)(*CvR`EPV@S~|ao<`!eP z@UHYjx8AMQ$;VbMF+3MviZiZdmVNBeXPSC)R|2+?SHmcSNqXVl&0=_jWcMX9@?BpiKke^#7DQ(r%blk>vU zLQl8Bu;h-u9fL(lvZ|1?2@iR?AxM$N&|#i9djBtU{x7e572vRTz{XdViKB6lm$w%i zc&gfcGC{#e3CT`-{%(E94Cv;*vew$;t<>svA2`0JPB58dTO)7oIH6KDG3rt3er!iU zT0b4=QD^Kl_twwrL+=vvXgW}_gkB5wByTXmoowjgoNFO>6x?EOKsSXe$eXnnh>a<5 z);RCxclocvceZ(%WVe2_I4VvJSJmldIxtli!Bp0OU9h+3N{b?;4s^ii6!1)6!5;Sy zT#_L*KiZ1j7W_WbZCh*(A)jFSH1=_s>8Dbn(PnOL0paC~?!PkdZy?-=R52`&d_Jp^ zxp&`?sd>MQD(F{AW=_#~YBg3?DBNaJrq<$AHI;p205*X~)0;vsCm|VEn^P$sS}lF^ zdA7w^I+EF7ao{di9G5;F4!sUoxadb&+cf2A;gwNv^t?&2;#yq&0Yz>Zh z9uda~F0?RMe;2bAN*qt9s`Jl^+-ZyYK##KZTu{_e3c`c)Bl^Dk_qa-j3$MhNw+vZ~ znM$p94$QHIg-IWjtKEw5$$~!VW_)X*Bv!jm_M3I5kdRvJL+uvh4i&^|2j|wUxFVE# zc!XIpJ?j{vL*|~$i^u;SgnvsbBfVZ&%cK2*Vi#g-u}>wj6$f6Od+YnR#Qqc7x!7kA z;Ii_G7pb7*>RPe&xdrc- z{)N{6x2Za_q3`y*05Okg4*9(QX#YPMK3Cp!Je=(+eH}c5*2G}WGuStfnWtwfz}mjR z37P+i@gK*2rZjp-b9Nt;&@{}X^1=|e^`%07vyt+7k|9gnzq9#`TAv8#cpm~ zaMDUIF8uz;KOX0Qr^H!Ha^w(7cxjIIkd41b0K23a5ME_G=Wx|pu7bP2zsS5HXzML~ zYP#IUwdmT$nJH7>NI5U0$hRIc^8{}a4`j=%|B<{nwS$BR`rg@mas|14)E9QG*wBcx z&DchD@uwEBL_u#<-qmmaolg9wZbn^tuwig&|0C|q9Q{y{d%wy2KWwCvuh>an93rZ8 zEFTu``eHNvs*8)_s^T9!$j9b0GV%x45HrsNS65emGN)LJG1M&{)6}}$(EJ1H_oD6R zWqtb}y)PeK9ZLzrRr>!l!(v+vy<93(v%nU=b^^G%oq={#EIk632C+U^SIrywIIhGwgCLi|k;B=(kGm>l)hf~iriucS_< zq^@4-^I0|h@94EheZFgPOzl*&A8H9Fdw9fZhmzWhARiod3QEIr^WK2ULMvv$Igc9t z0rUT#vI^3MJ(m2pW6!7jxV&Q`H7>K=CP>hgQ@<0(W0ZE+#B3aHipdDm_3eIK9;2Qc zuTHyb?8xhrlMK;i>;Zy1UApOI3I@O9di@)qnV9Vl^gTue3Ui9m^{%4V-b)!+=NB78 z`LQO!eN*8Y!WidO5W~F(Q)oYQF(lV89>;qu+uOqGSKB@RO_|I=jn3mGX8&fApN&NP zpdc)os&460`YBT9a-5E>#4$UrO=B#bn#rrsvvlFv7Z}OvBOSxcs4SX(R-pS~Ocs3z zzgrJuY-X&07u*<_41q*kIb_JqyT9ZEAJ^$J-c9y!8q{{(a;80QV|e=;e*CX$q9a7K zTCWbmUpHE4Tlx-ENf7bgByLekubwmJ+_Q$13kv?+W!q+L@Z>Wa!72V6rd&b=>|rR~2O$P4dE23=CA(&r-(s6dTR93HHVg><-)J zEiZnmcWIx~D2(oWm2l0Na~2Vcr8eic@TcD~`0k&x`tOhyU8m?MO|T1 z>~=IQ(IGNIbP8&9>7x(2ppZb#1?a5}w4VodW?^^19+n#G1E1S+@3NwkfZr-pj*&8m z=(N&g?T=C|qVL!gkq~qRr&;l7bA4C&?*RPY>b&c7gPyQKCa{Ez8gqSgVixg1iLnkd zYqK#>x*U}arS-cD`(`o?b1a$rrCC;ysMzz0yiaE>#7k~3M~Y`V_gvcxChu~PV;hkU z2~)dlcBO*rtivL@91QF;gRDFpIjwW{_PTIgK23^U7cN(8bJvS6&9gbxuFSK!l%%e9 z`QLJx_h;VH%`#+!X5t_u%}RdngvJ|h0cY0Cf-Au5pd19KIP@CVqd#N*pB5R$hPO-j zDD$(iTroJ3G(Ce&%2YvdY(ZqV2EQ)OJ}b4Ro_i*TcVuB`zN*WN)N7S4XL16#=_4;O zzcBq#{+YC-(Y$DjT4^UNwxt8C0($qX`LmVV)b9Tj&oAY;IEz(fjpDqy7gQ!f>i}jP zpO$IE!@!CWwv{W@)16~9;e@8Cgi}n?ox#Y%xjPX_eKA+k*5PpK5aC~MFpn=v=9y^?pAyiTRw6V>y7;5L$19r9F z)^!sF-z;+Bm&MM!wfymyxc;%aQ6g=E+NRiN?aoeiltu3(01a*J`?kRy-cRTCE$}?9 zk~R6HPC`>wLvEyL$#S|m9WqFFM`0BYA0*!{a{?{R}gd9%%2^2MfX63gm{=Te(dnm_~I z=P)$wd1zjk!K&V%^)BEFn@7L{rGx`#_XK0<70LTliz#n<b_cBi!^dI{!s;Y*6e{Te3A-~GC7 zz>#E>_W}&uxvpFg7u>I2p(ZWz!6IPWE8zXgUg$0#F>D%ksJrAuEVl3dlvk(uBQBno zFLuJeoEXuP=o*Ear~a)a`)3oR~G zWEnFxr;_#cOX)VAgr5eu^SI(v>qZpNi0ik@l+w2CMpVvLwNW zoudq@!z_Cx_OgmO4@4O{{6y?KaY?WE{bIvg3(5w%mn$ta?ZcqU-2DDeOb#5-Ga6P) zva1IJYicWghuw!I2twcw2sARZrlwrEuS^XooQ;yhx|ZC~c)*r$Zt%_0^)UFx^+AbU z%15?vIm_b(6C?OVi5P6kuU8q%Rsz-i^W_pucoOCw^C~Q@y!7qr| zPI%$k9Go6Fz>`0bS_--lpS)098?A8KD>JuofA78b`LJPsnzg)WHQ%VwvKfn)u;94W zfo6grQrTyi`{`gNKd!^DH{qVaS(eIjF-M^f@syk7COEI*y3hQ`2a7k3mEND`@O7+l z&o4;)rvJa*DCCgfFFvf;3iElu%iodM?zF5X+SDi)HQ7v}P+?WhUUhH1IY?;i{o)dyBmyiyeI6>e`2GDj_tfHV2$s|`aJ z>(rc-Cy*v%xBIVzvCq^PN<{dK%5_<~(%w`F-|7-UocMdj$qq`(@gxEBUk2X3<%!~-)|G`+O`EMp=Bef zP#ajBT}4^^$JsUm4Dl_c49kiER{PA&?jG24RA5cI?zui%yv)hCCA z9N?VS*FSnPP+ncc^95MF0Tnh$uc(^N7A9fLSk`P$0G#n#ps_vP4oY-E=1@UzQ%OY2 z9=pP`{`%HhopQ{_3>B=BeH?ADHITL!>N_{oT+Upr%cPcDnTfBl@V3@|8W9b76LJ8a zi#JvG$PiXD8W|C_ZIWu5#kpZpqHZ6JLlRWihYI7b-17)(H)*kXQyTY^`G{7(b#xnR zcZZ8ebi{(QsA!>_<+J}vr3;!U6RVZ--8O~Uo?**kVOZ!swPq@CNhN^m!Upskqq+Xk znHDW+{QWfx0db?1^qID5PvH^dVZ2-$fdyjo_0x1pa^d*RfmRZ4!rgTKnbU=y$&YpS z_P9$GTN&Qc2nXTr`1SO!1{4$|Cg&iw(i(rA!CZMcF)S<+BCcrF8DAGsa4{nJbc)fr zpZ8AFP>2 zIC$$xF3XR9ZR0%-Ba9J>5+1S{8#&NQ=G_ZHHbH@5%DgV5z#uqJR zJ4FIg6$`%`8Y6GhuEpMEX$#6Gr-kIl5-51cJ;u_($g&Xw##wa1)C=6Br>Sv&3#R}n)bnk2$OyhL3k?l@(A z=lJLxK$+rcrAW~5s?gxcbLE(8i_}0sn=B-^w!K}gG+zrwyh4kFXBwNgura)G>*v}w zH#iLB<<>h8F0B~}h>huwq`4g%53qoyDrxm=zS=p{38_UWRqz&(-*i$ZUSuXs=EintqKjhz#odEr^yFguj*)eWWnu5T2*x5liFLw9oyv?5yx+Y?P@X0DHg(MxC38H1OuWN6#6Y8txv!`EGs16r zr6ff-(}hfmD`Te-S#T4=FKHNDk;#vVmVX&-@}$E%ehO_z;G~yRdp9mcA7VQ|jXxSg zs-K=O7T1S8?~UN@;GqV+0z4MbRI54@NGjo>L%HpafcTd8z!+)IVbsv{<-iHR)eLqA zUv5!eIIwUxws1@|Yh-|5uWnF@PG5Mj+?)sOQOo8mGZ*daimPX=m?RGi;M`T=pRf-2 z9gXzgwf93;;1UYYX82|~Hc6XvNlLHQwm&zHO|B=d?2y$hQS-!t!s8yW(gRm54LXmW z9Uth1^GNA9<_44x#$35R6e=~~=2jn3Q%BKAH?V-JT-H*??|WE`Ie5bAaEDUUP>5ZY zs_vkvzI^jKpJmBt=W~7Y>VyuH)Vl1gH`8B{9lh0bPXJQoxHcu6g+zuzKzW!`0uU-;Chd}K1X^bU0Ep8L1}N`zCP`?e@a z-a1V&(!W-L_Pu2zd3ImC^B`4|OAW-}D%*jPP}z)|&g8GeClb=HjJbRpGHu@+D>@Uh zew_1QgAZ>-;ULu260EAGFN%vXwdPYdlWS#l!3uIHNXcUShz#Gc-dOW^z6y-eQslY6 zv@jsCS>gI|=lw5oAIyO(d z`*CwQv&^qX%#BGWEOoB7HNqY&Dd1-S0tmeQEhGO-+qv;dzh25{yP4e@gAnZSUQF4j z5Ra?LX)0um=dWNBa>ooncZHMs&-8e6j_2+k-v}f3LT@d#nRCmi`R+Y?+4q-^8|dN( zglpR$1{6h~j+IPiL&?Nff`nB)wgGwubY9WE|8z?ly*go*`*Y`+J%HS&~$LvgauJB{AxOLn^qm zIAkOvhpqAi(Dr)Gqts^4aZf;2%1fXU6B{_)WqblaMF*;x54Gp@$Bay-vIiGOe6G`M zc}DC|DMyxkL`HVc7m`M3yi;A=+`Jl7A@e*5`v$qMVPz5sJ{f}kLarENOx=Vu?X-lh87$?5#W~pC-kp9>jN2q5h z)x+5VvKyC!6-Dw^Eo85!KiqgY=%?_{qCSLr(^ zfRfl<O;#kK{Ckg6-b zX64%ZD(&+^bRliTN^Fn{85%M(7nQBL1m*TZ+dojRc)UN2BPzF{))Emlw*0N6$sCx_ zozQbw_TUgU`jDe@LKx%zxnca?+(1na#SZH3V;0CN(yLoAmzAIi)@AG~V(5I~X2om8 z>l%a>fFUhiUyoR*`OzgtIdtbd02}n=gEMm!T9vb_;=7p0B0)?hbA`=y{73p->TZ_l z2soQ$O=PI;8e*tmkT3rk_6ZYWs=^{Zc|_jI_03D*06_~`=ie!q`ryMogN4q%O2%?w9c4vcD&hqY>oP`w(EZf>XJ=)#W+3$-F1 zBxJ^<>8i~Mpg_jYWvQ#Yd^NYSsArL@T&SAN1L=!XISllD*59#Cc$SSYQPtS#>3)82 z9Hj0f+Xz-^9tA7BjShI1aJ>2-kXYQ= zC5=A;2yU_WHryJJr!F7)S{Pd=56qxgN8su+%DuF1&YIc_7rSMqtV$Uui-8mWDH-=q z;JA)Z_vc*vYVeJo=m}uh<$;@>dWcmUh(pL?H_19d|7BEw!HYb60LK(WdCuY)dfH0>UIQGDOqoTbiM9_QoC#vsiYkx9(^ zj4To|YA$7z;mKf24G!5?8IL1zgtN#sFIu_c)1SX;5%;1Q3hC`ZewtIw-!oC!wVbcm zE6E>l+pVh_JWjBYemUyHQiv?tU{2X|o!#dktv|yA5o@_54jtKQZf~ghr?YwQ9z~5$ z46#px$^NrQ6!DnDwQlEK)HJln|3x853ba|A(FZe+nCAo?7|RE|8ZY*{L~SZ+3T!2h zef&Hdp>GD-2I~*b)IB$wE~l0u%XY;L5%wD)llxxdBKHW%bLz-Dy9f^<;|sW04gGkG zv+iZbGFVIe00|UiJZo+{;%ygRc^UVe?7J!=-rR6Qk=d(x*6LX0ariEQ#aXA4D!HLW z>Z1{y=1tyc#dQG1h>#^P>tmf-be=MNZ9PEZJvqU7-1ysdFVm$Ko6wH~KA6HX*$(BG z(oeBee$00>B<;?5ulU4u>)J#2;Awa|8spO*YrZ-3PbAELj_4HxYP?vD9_g|pFxQ)D z11`W0e*pUlw5NXvVC1&2>wAAF)Rfg$QW6SE2}7yudaNGq=r5JN*n@__ShBdQs@lWU zWMYSVu#Iizo{N2Lw;~i66e^d-$(ZP&%J1RQ@DVdp^D!l_s)df4a$g5cCgUt))R-WQI%2o+Q$$Mr38L>+$Yg_N!tBAnPUd4gay_?A< z^1I&k`apPEd7EiD3o+UvViFmPV#$Q|9?qNq60!-}vT_{+;}5kYHve}dkcXg8|FQ7y z5nr9?aQJ!J*QPuR!0^;>Yr?`&DpRR?6{l;VY0pOWGv|leP5f%ycTiAw|AlpLoRgIc zG>}r|Vfw^_ZK$;6Dz&fQzJR~C#S<+ciiPB^oDS-Eltl5<#2$p_fW*PQL?fwq=m;TQ zOOjmwF-Z=;wJD$M$Df`#_VDxk4YhISoOy)TG64rt-uAXt=zM^;wJBO0&W3Cs-y}aB z*N0P%ShV^2Js4AXtX?yMYW#@7&+NZ0p(a#E_dj zPXO2IW~Dc{Dj|;Ut^0%F9!W%&h!>2E%$kGwV!ds-B&r z%Rc(iB+jU*q4WwdUnMEY5gG*vhUM@c9%EQbOyZJMO%sBB&hzmna&5#|QnvNr8Y!s4g9Cyv&i@<| zX8?WDk9mUs%$8b%sT4Lq$CG2wu02ZpY5mx?xl1UC`Kx2cI=E(9N(q9VjaBdRb#kC4m!whmbYAP z*W)&tC`_DNk6y(aD-pP5$KND1_2P$)C~jMbt;&wBcA%!SQeRh$Z~BAaE!F5v@lsRr zkHJIS*4jExo3r%S*}9D)p9R*Ljz{F$b=Jt+RXY$E%aF*HTM$U8s9vXLyp&FjwvM2C zg$Xf#3xkcK8xJ8)($RP8faPrFi8BY)Vjv z-qX~Y&9XV(td!4c%`2L(`FlGS-V*{);x|5^1hsZk!|V$kK83Lts^nH?+hgyd7DQXW zQ~Pha^(>4~4XNKT>}_93y>L@=6ie982(vc5E9d~c6a&9c`ZQRt?5I|sI|x@P_^oH^ zCgu_4HZyFT4|HX;@ZRXissn?RfE#!{^($Le~ocyBZtTjFu2)M=`m%9buJf1?9>7Vg?ayi&ipK)de8MtFqowQ_+RW zCJHeb?yY9wKDG*qwgU+Ey02*!mAI;ipV|io4eSfOxijJB4;CfSjh?tjz4baA9?#Lf zn+a=b53v7~fFsn{Ru&2v?fZOCKr_;O7(>*lCN@h-EjawCHTRahX*b9A3D`2g;8Pb9KC}7yd~re;?6z0?@vNdBxyaXSFCZ{R-i2 z*K`74Dq`PDr`0{FJQz;ISR7g~JKT+rkF*ypbZZYC4~drG=3avth3zxy*b2b06uI*R zj}Zv(;+VjA)cpv7VRmkX<2X)}&;Qi)^vir_s&}kTDRX!1Y?(yMgNfl=%Q1L?CTshC zLfV_3c52*Dt+qcAS#J?7lMjquRB&IhT#@&vpml=<<42daC!&{+7YhgnxmS>) zUAE!T$v;I{%PTiwON|*-4n)nx>P?41o7YU2m9CaGPuJ12r#Dh|tEx2l%pPYk>kx~ly? zl-Zfn6)dpkmxt~2g{3nsW^O4KR=7yC0yp!8&Sg$h-smwJF@eQ)QC2WBtC*6JjWr}4 z&2A{mbwsrh#e9r0A2>$q^Jh6w2O)$H#lSRwq54~^*eyqVYL` z%$EDzZ2baN>3NiUg3BrcvUW1k=2%gq5CpaLyq9y+$QlHX0!hrb*vCCmXk8h!l)h+P zP7Sq_=cy>W?lM_^f5aZc_{v)6T2lU|EHHOB>+!o^1pg1!b0pM`egGAjlQ>j)l@f2N zuhe&F%KmB6MSC#feTzC5TedA;^7e5GIbY`f?5fkd zw`qvE^{Gng1DcKU#=fAGJ~XsK#Q*_m&W$%OR7Mz%O&55sX*r5QfUx=>_FU6X0FX4# z;u~j@wN3qZCTWAAuoY&Ff;~wJ;%NGbaipW6w-RWP-Cfp~`2;|SUCub=PruFnO5p3z zgscF%cPq{ay&m!cyJ$Vc7AV1^ss$=sqW@cVT+N- z`Iifl{M`PC_<{^=P21uUyA9!a4n?Nt;k)(McK3_AmU>G^kdY&8#Ji1S@(ckc_>l$w zCCKNN$*sYk^o?I_I_%r-`|LU?I%BQm|R zi&Qd?%M37I&BSz7FPifE0*`M~tX2qI;AwNErl#JfQaYO9Xo{6Bbah6j5WL9`_9uL8 z@i1Z+c*CQaP&YE#ONCG~%svM0#nKd|@s)Ej)ZlP%7PSZ62(U}=MRWxTxemU{Jv_d7 zEYxxWIE&EEFUkmVldG!OOe#)8)%5oDW1y^hnK}u3C9S<1(7EG5;l193>m~@yHQkRP zkA4fxf7j-|R@p|WopHat8;?kWe6JtF7h15(?V0cQKsxPfWDz}U>%vGi0~;Z+E#(K~ zm`R*5CC&jc%PJx=FuypXGchvA#WF2)HOY3&`aQ++_eO3nr;j(-niRDdtH>t=>FR5R zEc!g3*>8t5X>J7e*9^v7NuUbe=;yt;X5}G4Aa18@0`m>_O|t#9fADX|BPv%Oxg5Y` zzXuh0k3JRv@vZdGfSR1h`-2Q0D2ngF4x|ni%bTaw4 z&$%RHtEwbkZnnyBov5@;T^>8#P~K(XyhwFe)*~rsr88&0{?zA-vhOcO#N_4GX#~ZZ zlpFVWH7v1O5DHDo3$+jo<2R4uOH_Agq#r%l?5*8j&A#Akw&pQh)NuPcPKG3*QIk&c z(T2YB)(2iwRxKhozERl{7oL`v*D~Q^A8HF({?w%AEh}>C8TX$@^v{C( zm&G%-?gAB>V?|56KWR}sIpe~I&sWEAg`)RGBGP207FF`w`ubOLSO-PE`&~p=pf-Vs zmUk1*s?$>0>I90sJ!(GzToKP)EDt>p>CLb4y3d4il3zLW7%@*9=_5-GHI4+_Fsspb z<8s0ebP*<*)zcJn>$2;}I3T^}8J+KbhH?>@Hro`~AY5co+QHh-sKn3jnVDeNYdmlp zZJBGLEyCJZ%u!mmW_+zW;AJfHb7D%%ojAh!;%*+>d2q)IgtkaY#ha2DJs8vT7EzKq z&8d1cVjGvZx{DS6I9fX6u@-;R#>LRH(mIp{WfwXkTg(~#n54C7C8t($0mo=R@A)-O zJlj4nN5L?3r_D;K%uvuS+&>E4ZH z>m9oeRBwBu^?NTZ&3r$HIkicCAKjAt76ajs5H$HXs(Ki-l`qN_mgeW&K!t^7vS>L@ zwoT=cH52YCK2#z{W)v*;eilj$(O#CD+puY1Jl(xx7vZPh)}4u2fwrf2kKmb&%nXIc zb}Du3OUq227UC+rG4)P;Dr!LHD2=KFs(`0qOB!cHubjJZdDN7nRCid_X2y-M4(J{R z%A;JCr1c8%H9D@9Qn$k6z7;<;1@7Ca9TPaZ6!L-LGRnPg_= za4s-hPGZVzL*<(O69?NO`*5N`j*@xA9I|>5M4wnzF=K}qrAdR|&Wr)zNZ3p_D= zg)XJWJf5@Bm$HW-V% z+E;_2wROt|Qlsp3TL{}q4Mo8xU=9Z6WH(AGXZ_pst~4)>F6}*kft-!CjE3Qbl?|7T z8tFL@?R*&`$Z~n`%?veTBC=~L9XNtEfB((-LQyhV`4e)=UhICBy=a8JlQKdtI5^10 zqzU#kf}2x1_FkC@5}sn>)xMVG!Yl|lvm0;pE~2M>o5aANKenZc%S%7KMf&}Qz^YTQ z+@*!BbQvp(O&{hO+chmK2~R%4z~<*Ev&tGLI} zF~DS#jE2+QQYnq;)Qm(2zrI5JsLWPrUtXBc^Wykh;5AnSHPgR<=y#4bIA>zw+5x>0 zFGIp+3`|y)Y?FoMI`Bz~d^B=kEz^!&@8kx-qqMqn+-V{$JakUJvWPX-$gFw$)3A_5 z!5bA7lg}PEau|LLTRN~;!Dg^8nWa&1M*-GV0k6H&jhp;lP4N;Rx`a7pT-}B%_$BT0 zG7(#ApV8?ad->?|1~?3P$lo}t#6zG*ia%{Wnn@f^4`UC-O}*B@eqb1lZmnUxnDO@K zl>7UC_XlMo)k;tA9{P(_GBYuu_w}rJCEj2dYgdrErPju4&oI|BeZ(>Yp44R&j*+S> zoCwUa)t^1rok@yc(Uy3*0Jjfx;Ky)0n&Tt&?qOIGO%-if-&Z9 z9Wrp<-*Wes_=W&!kAjJcs_&)@EZq+-h^FF@odmud@O$Z~)HuPUUfd{BPEipUe)r${wakinVfWUFDZ}fs@)!iMwmNR3OJG486r*zbdWeqwTerV$ z<{#l0yAfU2N$ROwx$Zv7!4t2^QB1;AMPP*;^#^c)VV?uuUK;_N0n;;rpNDij8aQ6? zopUE!nso({qw789--504ZFsCm&6{(B=KMhR{Nt7=(0PMrk|l13OFIlM*vTkI>XHxR z#3!1=`0F?}lkU#SXrp>%_4X=!;w-ee_J|8=DM+VBG=rK%x;K-KXN zlCcRXd9kV)ntmm;(|yHyUaPQFrbu;ndGXLTaSN$+fpkX0(oZEIQ!h-3P7ktqq zt5Qky)4OC;52sSDjJe!A zc;oE@U*gK`HA579_Vgw!bu{Cl(UOW^Zg<7*UThF)lqZXzvf<#%xq?yaaWU;mdSG!I z)&$&W>+kdrD%uR7HajFkeFB2GURG(>O6|b9r#2sGH`NfN7UQftt!;>rIGbA6M_v69 z753f>`Vo|savGmmeA2qRcX~swH)k7WP`gg1@L1SA1Bi(l`oOCG*zph85Ms`{i6!?NOy_ zTh2Zs{$olbCGl1=y*pVtgZXQpT42_tvRtP*K_Y|-n8m56Y(|$eFl1M0j0n+-Hs9O7 zPwZ=*7DOAhQ51EUC@`1bsUtk-dWvFLh6;TkKNW!=DR|QiTWYDD2VD+Ws!lAu`>ti& zf=c{wpYP3Xr2*wRrG>M9==^_V>;eEv&K(j0M%k{2xqibFz&A!of$=%WPDxvc*UEXT z#_Ay6(gL`l&}?&>M9zbf*8?Wd1+ux@uEDX%Q9HPwI=i$_Al#&=?`;5kd#dQ{Zzb||4Ux+9sm2Hv zQ6+7tF}fHdyP_j?y5aD9UF^>095ySEGnDn|7wG<3F;6Xqt$ebgv4*t;MJ^)mo)zl6 zw0uP~oNR_iQWv7}I;?gknjqzn=K7+%QBqB<*V?NqmW6vvidX!<6%YMnD*e%-I;er7 zi-Yo3k9utGf2Ckr0BsS{oWkj$k->DOu&W--ub&7+M*}}cq2oh9oV*UV!e&C-7Z~n$ z=2x~5Myy*R%Mpg<*=n4?^kVdk`$n4+QFg#{Kv5zD+m<_a?Opllj%)auYTB5!bZhiW zId_?+=k?c+z&hD!q>o#qnU92u_yLTulDZFB)3e1;M#Vw|fSOb3ffLHJ4QA0zgFPD- z8ZflOa`8x2h>)yl!Q?KLKD&KU(3v0WYjvHjx%cN1A+2Tv=bO zP8h3|Ef5((aY@2E-8hM1$Rap({BxAj=oXM+b|pp{sHR19YkK7qU_ai#F4bXRIK zbf=37N~g>(MmGPhN9#*?007SP!*?DJJWc>`hqaxa!X#?JOryo3N$vKsuX0ibc{Yfk&{j zNpVM+MEj}ltJ2<1zvdeGTdF1{q@c-lkVk=lYDvbzC0CWUM_IAs!=rUDTO3L2ZwMSQi zmXDh`jxnJ@bbu#e^A@dW`gAC}(`dtUv64AB3(YlCF^;`(0Zt&|l?y$w`5n{=I}PkF zzdr3Sala3G+#Tu1@>Q;BH2*|y6x!P!CVw+eT38tSnK^rU=sxL4dvw6`xdVjHXM&^) zSW?>{smjVA>S@O(5R8QXSp)^X{hC}I^YXj09vx8IlUQzxB92}>f64XIc{6e!3^N%7$l534SlKlJc^wT&GJUP+;nQ zb%BvVOO`2a^;WG_#0@h+!16RbY5EN@5c9fbrg?3Tg`uOJ+=)ygL0Yj#)`R673@J~@ zgVcg@!B<{)%$2-1>E%*G?C-|;HBJ3pgidM$2wy(So-sbTi8bwtQMa34Oiag>R1 zpXQ$9k#JCn`}l zhNOn%WJ$qI67s{uJ%_FWlX^N#(Wom%ETk)P9n`(+pV?-H04TSD^+gp4wz`u z!srprwLglRq8`uo$5N`plLWoGVZrtEndXMzPU7kC{z$w~`?OfFwR zvQf)UBF+@g+>kQk=Giu^*u7 zYuVCb8K+LZjH(wH?~OI%-^LKJqxmTh+Jg7G`9vM`q%$my3|(kphMpd?Al_(7yY7|q z@BeKa{g;oI_zzHQ_)TFC@#DiIX04lA!SvB!2f1{F4H#}GVUEZZSqoz2wegk%Jy1%oAIMDEvgjF6`#7JXR*MJ!+G@if|TxY*OC1_PdAhpf}R&QUNvC_`Jvne{S=0?*bqCfVf@j ztc1Z({Yr_)XlQY^O5F}{>#@=w@p}H8gx}7m-r|>$5Ad%ER9FK-QY?ww0PeWY)<@vR z?VpNz{fhc|&qBAk*7*tDGVIa4|)u|)I! zCp%Kthdf@7@ul(I3%UiU0`}<`KwV~(2>UhNCx$*ymNKzD-#yPvLYveiE_ke4=9cZr zbirH#ttU&M^xfueof|c6X|HU(GpAI!nW=s7dAz&6+HikkGl{a-HT_*;pxZ|4h?Z|a^Q^Rib+WzM)Vt6vR7p13%G8dE+|7fzPh zEDWmY94ovN-u!B6CTRUay4NIQvC`cJ*pT5tMMiBJiufYZTAQ{_wBFQyP&knsqhTkc z)p)im+;UxLRt=lf$#Mp{*YoH;x!ciF&%t(beA2)Z!S$vwE})x#I7#>6Yn&UlgrJ&l zFIHJKH64_t*d$ZfAol1>ZG3Xqhaj>HB2{l52&qHar^s?w?i>OHg-w|9tY(@j@5_I z;iw^1<-{UsZq-iuksM53^s{nq{6ck#&@IeG%*=_yNRQ(gQvI!<36X7BoN)o^UXY{u z(Xms!#7i^f>vYQ8FZM>MogD{z_UktHRF{VAkCBtOKqA31{v)c>I*rE4osG^wsRMGY zl!#ipkr&oMEaV(EPh7#Z+@{32SHXb9aB$#I zOLUg%%a+<=8dpIcH*eZps4tQo7iH-Qtv{L&PeiF1`=N`m>v4>vQLVv{tf!gdTOgtx z5}-hhZi;OG^Mnxo<9n0IKA#KxLAk_=q{*A}dV|SH)%&G^0S2B<5h^2v#Q4#w9>?wz7`+X zQ~!F26zaX94~Q69-pg8g^FHuuc@_c&i9$*r!n0bB+qTB2CE($d*=_}fW5{5tI%Mz6RJlvHjSs%Uro|zlE>pOADZU++5D7)YtKW&+E_jjbq<(k18@Q?Fh_i)1e zBWXGFl~SRfuZ`cN5!sx=(BtaqrXs4VH&aGjcVVP4Zb*Gg^%}1nbP?N-GrW)>*mo_! zQm>h^Cx!deTKYis*srbQG1%Z88#&jq23fwZ#}gRGs|fGPfN#i!n`77 z-FyckrVbghD9)l}xsn=#%gNDhYJg(@+DB9IWFbc?O$t{+D|_%8_a zpZ#iR%J{&r_eFL2+T21)a9IArl-$(mEMzSl-G>QWk?oPDi3(M|O*NNl25?O0*Hid; zrq5-KEBiCTXj5|^z~gI5{r&manda_?g6*z#@p>Pmt+>-H)U-_=G(X!Kq)+>)`?BWX zo)H9ZQ2Q)nq#(Wi*L|etZ7*H zMOjX1;aW}HK}M7?H)9(_q2&a1=5O|5lTtLR z23+w{M@BauRgrpX0TrdLh=k07^WpUEF0{f1W-RUiw$Mn`MetW_(nkzC2HLK+WF#UZ zs?Dj2zlr1@syEd~Mbq)9p&z>S(w{T9l2_XL+lIb)EmFyMLTvoza}Hk1QGQ z7c{#yE3p5V2bUTAQY!{nwX-S>(D%T0$mb3 znyP@yxzIkhxS1JTuq}2#g2^lxW3!iLO-zZ4%O`DCYosuz+FZJ%t%AoMn~)l03A%n` zT}|qFTIMcD<&`#_OxE}D%qjt1V|m2Io6Ve)cC){UufqkE12KHld+Oz_Z3NAll^~jE zxf9(m*k6Y%Co4MVS>@OkeR3e8Nrk_j@#%(iE=(RIQq$99a|%(uUpd^ACBBx^5hFw}mW?_TgUpZ=3f20>#|5YbBgxZ44 zlo>>dY+4o)*RRaioz{vY-TzblE#76Mz}XEBp$7=epI*x`*I$D9%kE+k>ru_uQ%uxL z6IDZ$KArv3-wLvKU@y4<(=dTDcC`ghaCG;AOp>J&4BcVa6LsB}WE(C$r(!0Cn-s;4ff&=87F+qL+J4@Q!J`zQXE< zWN?akpI1?Fe8*DEN{jS0^Y)vyeH}XcEd^Xv5WyPF?ePz;TUj>ExKpnKTYMvb97YZp zSK4A1QcX)t@JkRPi+}a*f?_f=FQd ztbW&ZWpQcSYLFpa>3X%7pVRdkzB(1!!}Gnu9fPndfg|aI!aBw^h%t~gm6{j0WBUAX z7(|_X&t@)9?O-#Nx28XNa+gX>ZItA#TD8+LHVZS8;BfiJYX4i#G>a(>I~|NLaY-&i z>v3DEs7HlPG|#-MBY0K$qfEpBU8P~p1w?PRRob_vL zx{&<#6fV{rSQ^k}qS?(Tlwq0CE}EyPa-1O~c29yO44&H7M21|))Xsn9DC{;t*VFf9 ztNa;BI~UkiFSP>UnAH1q$a+TA32l?QIBZG1bQG4@WN(MLYUX^@k4VkWyu91*#OPU>*Wt<^#(2Syw zY?V+PLs;*P*k|P5+Y5nEc}}MBS&-pV)8*WxQeNsjCIOPi zz4i8);J@o(O}T?#re049_lgSxvQw5_UxYJo?ZsZ*BBq43v6cRtM2_)nG1Tny1?B@g~il7EqP(o8#W{e-}{E~;or``dwQ ztqJ85wlfRAy4oywU(T-1e3F5>B!u})4wxoZ&%FO$upcf!*St%wEKciweC^r4DD_`m zzSV*vu!Oq1tHIt*YV9IR`924>pBD6WcJ-z0yKVO>foMm`em3Uw^K`&5|77Gf%`hO@ zaeQuR*t&OhwK<@``D+4#ph7XUs9qQN3+)nGu>^0xvIL$x(ZT*?$`HX`xx5ayN zVi<`C6(X|i3ka|#kSAdbp~mRtlwK-JnwiD)#vBHZ*v+Kf}N0E61nUycG7khQ!&2{cyKdNdLN8Uu*ot+6LoC@>M>f zr}d0*IV^0iNss5t-gtrv*GH@pMiZlhr00~b}c@XlvsL_coP=BjY^P6TBZJ@G`ukvxy0?@3v0zs;;=3pgZe|^VL~Kw?@?f z?yq^o^rP@HEwr5VAn-55g=)Vsn6+%F_fV5^aWQ091jGHgLU-;xshc})&zgm%}TO79~S!ejTBT7_6&rwCB(Wt97i>_gm~4unMg2d?#&Mt|5s;V}v+QH9V?9`%Q@7J69Ve zGu4s0kUW-Jg6$x)k)2D`q1B~l?BD-$`Omblv2>kmPvKK>;Um3Y8NYCkZB*rx870ym zYRZCETBVlO=AyVr1{o30#19IOg>Qf5m?>kkWBCe6KKq9fUwPAtQ>U^UeD~*vNqfv{ zpwy?^x_bpo;Fiv&WhA(^bydcqHJkYxuidI@s3QgLx^2}`k9P^*p14xxkm8!yVLSdb zVUVS^vX6*(30i_6@ya04(CPd-BW!04y<5XZ2#^JYTeN+40MJYo-jc3TBb8{!lS| zf4=;J#BO<9jNILB2eEK@rTnKqFZv>=5hr`RjN&v(ybkM*^A`NcV(n~R(6EJ4ovl*z z{f_3pZ*b_ft%q^7gF({pnOYee85oxJ&UDm4?(=bYye#hr%N)r-sM71#7GUck2#kh{ zW~{qn_rv%e_3G*YN7O4s=bIYhmDmp`|0kvwyRY;CB*Zj>$n4H<6BdiVa;yW}*u#E}%@S69i5sH&_hSA3mA}N_)IvIS zkN7U`x0uVXJzS!$-%@Ka#h5)0pA5C0DttF^zjBk!EYcSs7j>Gwsa*lky3?_lcz?u6 zW>pb$>tDGv{$p#tp%RS*0P2#Z{>pb3@fg!D1wn_1NC?V23+TZ-~wd?j|g#j=HjRdldcWlVg{U>L>u#4W zD_GaUE0TPDr-eE}y|DW8UGK)n^}t_B8ZTCe>uu$^X6B_fnk2iy+vf)6d(cMLi6vDl$^4?tUHVO9`o-+?vcy_ZdE0`L6s`~9 zT8297^$Ix}KvpaM_b|*h@G!jis%P#mg$^1u^XtjRev98Bh52a$iB>HreWhS2DS-@> zf|{Ai=in`nnDfqS9NRsnOEPA@ShOv?vUSNeB+RxsFJW-Sf=1WG z)$~hqK_cYV?<+Og2fl2a)0!oB^c4q)zLgcgM-p? zTJM(gr=}SUJ4XFslnHnVdG?2%T!8Su>~@2FAvkJQ)J#jznz z;}`j(x?#(+Qx1pxuN*lQaFWS*=HAp|=k5w#?U21DJW9$;6!yY>oBvP0{tp-DpI>B_ z$5SX0{cuI9z>l3IAY7|JWgam(Y4Kcw)hu?NYlA^7qKm< zckbqNoI=f%hl|Nc_$%!TGH#}6#u=?HdcMgul4}f3mH1io< z8`YYMjlmTSu<;ylDAMY)dc5Li7CbUbUU9fd!sxg~OKgsc9}@_^tnm+(5I(C!xEx@tDxUK57eYiIM~iWN7v%p;`|j26ZKAZk-d9LvcD<~=mtU-v{qxs(<;6%>Uc=3xk^9dz*Nh^=l)6gO0k z_X8-`!K}9K5Rj9-p=Wzw7rYhh`f$o-a@@hlJ%q0veyPrYzp<$NxIthSrIas`qbFfK zCUCCu8CyBd=HdyfN>r1%ms3X}uMDz?Y9PC=pe}5Rw~gc4S*QpbRDdWJ zlw|_DQ4G6dmpS}4Pf~(I`tSPq+r_mQpEm9$w~aocJ(RtzJ@cwX)x?*0GE2?{KbfJg zljg`fSF<-|H`j&wkgYcB+xldB$hE;X#R$i=+7H^J%}Dq@L>s$^hXsZ)5;f0l?_VH3 z@siG~^YQ~aei!>JmW0ax!ZgCW>H5CT1}ZZW$W*V5ru=3e-IMcM&JpBz%YHTTljHtV zL5Xq9(a1ENx!am?Aiog2JRYItaoYOm)bLbT@WTR;xZY zEc2?d_b5)7{dh#pd_g(g13_DHo;T52olOU&*V0PA9Ct8LPAmP+Sgl7VTCsNhaQjg> zP=G9EZW%8nDT5LX&nh?^o*LFusCu3b4?%MohBoj|u!4FGhn+RE6h^ch+uzY#CoRUZ zdnYt=2C$2BQ(b(f`B$frfZXTgxhmVlK0EyQ#;Stql9L%7^Vx%0&kpIMl;pi%8|-c{ zUsBN3$sYq*qmtHkr%5m- zrLv=KXsZ6 z#(x_G=&3|4KW-CJo2#-);f`J4{3vky)tMEG3RG4i;PWMLllG^ zEyWXR3B$oGZck}-=%`wV6?LiHw2PmOPu0@=%AsD~J~F`qtWM0#mE{~w=^Fp*kQDz( zjsI`E?HiSG!QYwM0e3QTMZeK9Fx|t-G z3>ouXn1MNmHMc}Y#I6(-4FyZ_d4B#|{~8d&YvAF%Q>rZ~c!x8Jx7;65L*%Av9*jQc z9TY8~<5ptF^cMDPQS;B#qiWy|byEP%lm@4>*OKCy*D$yR}sEhOk@^yCl@ATh4@mRI#pdDDT))faAugM+fL zKgC*!Bg8yiHHk?8SFnqh{UAROT`WLu&G<~x*ES0Nb#Z#Y=e9x%t7rONz5ppBT2Bmm zzp=uH3WR%pL4AvWaTSI{=Qn^VO#T84*v4t zlWE*z${K(2+@E34_;=0)ct0i|{K2uA!IJ`hJXK-g0>ArbTycgDt6m>wVO0bO=wSlY>&!hbb^*l8{j&OWqhv0YHoe-ZP zcCpq>KpQwsdO3hoV}udTe)*?QJNdL`P6_0vR(==s_mxTzPr>Lw zm8A;#H-%~8>2Y%>acSse`ER~Pf&49jsfN6sFIsy8yXQl)r|fa3@Fr@zXhyVpSOS|R zaPq^Yrj%Nv5FT!bV?3Ky-Pd+g30l?+P}FPk`>7ZBR{{U0WVpg}-`%r|X3`2TXpXX^ zjf|mnu+-VWvg#|&(iJ*ruDG@sSXD6QqX66XQ`u)X^UEG)dXO|NeO@Els&k^Dp_(bX z#yE+dP&T+F5E^WL>xoYJ+q8K0i*Zt`cV?m2$m*k7fa&~NbMg%9z`kBoY$V<%4d#}3 z0xq=u4@S-I7@nvA7w(O{h}!*Xq)XG-Kc{o<`}m*e_{BJgydH}tfv>^Fop5%&za|W8_Aa-1a*g}Y1yMjd7Xj-ou7!ui>)}|W>NpnO=yze z79Q<0hh{+dn11AA4T+tdlKz8mhVIF*y^Y%zj{-)xeH|Fz@91EqaCe%5DIp%9mU}oY zo0q9MUpe$uKH!54PioZkt1axbI%oW<$g%C8#8YgMeZ!N-`ZL~8-b}FZq!W!p} zqAugd`vP90$6{Ng$A1acRZmg9HzXE(LdN4rI>8d19R_zQiRW@6cG zg_5tE3vZ`2AuQ;7OwgbP#*we^PW&PuTLW5518M#JgrX?2)RG9~`uC{J zi-I7D*Me3-ZK1OY6D>8*XnvDW+9&n~m5ZX)H1}(KD)WB)!jQrD?Uxfo#B4_6)O?Qj zhJJ@!8!Q-oaV>q^2BK_1^25$pqlo>=DnJ&=*@gVqLnDCSf`%f8J87OOjP2|bvM`+PpxE{;%qjBk0V4ry^01N|ijRh4 ze`6gSJn~ZJx%VaSuaxWTs2hM!V@0S8kJvmQ@WEa(WS0LKRn_~FIcEcb-|mLaf{}+EZ_X*~ zH7BxqcdxadnH2s(s2%|J*FV=+2e(Q%YRF&cqa?EZ5S{mN>#|5PWtCWBmvr8*)IA9q zR9RHr5HCAwMt-vkiiux=?@ zE8AT+wP5kr*+DN`k7vt0y!|R=)3%)ix?}9$C4d1LyrGy^IR!#=9^57*oO?w%I4+~~ zDkb(jWiGyJ@%AyenMQq7)514T&&g?i(D_$o`|r+F*xLd~u z-)O(0bT z!sC^cnDKJ{a3^$KefF9idakx-hB5zK8JCztsyN%PS0sY0Lvw0;PIz6gi#v$9Ix9k$ ziwQ6(v;Gh$JaPu5?kP~(k5}v(d zmwuuZbdPlE(H3-g{8|E6>cphmRVG zM6OgdeSlWERN`%82Y6&Mtv`~UeK?uWr1E`H(Y$!kft19~4;$_GkBOu1UpYd1P|YX! z7{X1EY+u`{XDv93Du;nmH9}zC>G(@JeS=r` z$@N+VCKub@H4~@p+0JxLQ-{O)AK+)>^zS_)+0ro;k3X{dY&i93Ik8aO6HK(AhurZ5wA@h?nrL&nW&SMK)3S3$q zi*nDrIXEWSVKYIeUyQ;@&C1xRw#`eI!d@B!_aIO2b*zK}<)*cTe7 z>h6BC_%|JQY)PR8H6X_o3D0SJtO@H1d};RESDMu%j8SD>M!%VBwGPk~h^ri_UsAW7 zt#j$-GnpGFXB{D%^9m%l7oW7Q3f3P%bSvT`(VXl0vP#JxxCX!uvL7j)eA9~o8}Bbi zz!ab2H$gUedHK@P$}*`0Vi+gdj28gp8{PiVeb88y&MM%Bc`Mr>vX@`nfUs?dtb-!e z!IX0T_CObvq@YEWSGF<I+AH^SsPilFM%91*W9Sb3Kzw8L6G~NFh>D@gG5zcG!4rN2F*_SEEd* zik#j8Bjx%`9uA-SXmra-SnTlPNquCTK*&dRIqk~_*Ngq4j+TvvS3MAVO`+)yYK_Cq zl@4F>HEex<+222vXy4RNHVISfN-#YEEH4CNWM$VGu2@2%SbctFwJ@F zW?Fe65K2hIrUjN{g#Yokk|!*jdYTr(CgCs`SZr5ilsg*<9zXt&v-a%YexHjmo*R)J zEdvw#Vr~r>ERTXIO|5mVnwSC9Fu$4fSTp`iS)ZPiN~@JMwcdaSgM8`?=s`J3#dQ#f znk$~)fr6jDpGAV36|;h=fRcCZP9{FspZHr3>erV=q;u*}Bu-6N=e;D0;HUEn&cFX# zm46%?2IN!W;XQmA4Fp z;?R0UaDR4$0ulEF9y{B*>?(-nD=NwWm zDsQB3?Iub(*aHu}t=x|CYHSMB;DsYY@|d;*N9ywM3*I~$T+CBrOKnW-iP`6HY%1!s zuR5DS{S%frQnQudv~<*3Zsju{^i#DCo?)n&vs8IpvgRNZphrk9YBNB5?A8D4vSc(hP=LKC#D*V(}6YN zO}f^c1Xq=hdB(s8S(k&aw1tgzMfEE47Kws!E$&92W0MV4RvsGJFyIP9d;D#u^>mSu zBLKKvyT6xoy=%UH&xs40~G_Zc1uKbnb&API^|8SUgyegS2(4wZ` z`biHY+^}ukp=V2LD=Pfb&3aj$A!r+Z4$CP?OLm-ws)D<I&;o4gaZFxVb2p4wf(Zk7}E3R2vn%_6O!;v8( zXPJw6pF ziBIUT5(jrtr^|)SFfV`!f`4`XNZ?U7hzx<6(<-vn4qyS~G=Qmww4A zn-5h|Qg~Z1;$ZeYug=B;n3~XZU{hCPTS8ZY$^8PMzWriH!Bgu$`?binW#;$iQw3+= z8{kui4g^po9km)SQy+RQv^dwqiN0}3{<7m-BpO^P;){N)d9HiSagDkBZjfeIc;=~R zY>zelmS=2-gMoC(yL_?FSt`8C<#y&^P(V0Y{@RcA&t4$1yydnSR_jzhYy~_dp}|fM zjvl?d`k-+4rH7FAzmJ=5X!v$l=2s4yx11a1u)%SC>ERu4-Bz5PaxBA?z+N~E%nUxr zMge4fgI3ZUTg{#hLO{Pg%0N3dYhJW~l8r16oF{dxYK-=s{jD@9Qz2um9wXK#xxuKO>momK zj0x=`&g>`49&09KS#jOmHE<;Dxi>-02X=4;tKmvcqWy>K7W)TU+-!sLh<3$JlCm|E^tjuq#@*O9*2ioO24ZH}!ouF*8Q+iXC4yA5m{xIVP=6%=xQ?oc9*7`og zCvpQRe?pNzNo~8p=BhED!-o~N+p)QFUradRpHetmCVCvd$tSP#K?z_;uC1*n8XHaaJk$&=*!@}6NP z(@$8FW5+Pw*q8A3M{8SeRGg%oAW16fc9f$k`0S=_;C}w@Nbkf-HX})e(fuZc$;Q20 z631ZGGq@e6&q2&XGR;hJZf;}o)o<4dah0Ra}lU^LRN+3$Q;_G-@cJytUC9V z!>498`&2r}EE8Lv@;y5$D{yzXdv?yr8R)c=(s6&S=D?x63tKMl=__~Azd+?pZeE%y zNPZWU_O3jv`k0u1i}2I8RZJWa6zG9rUQSnsIa!j78=v;B0ImeqO|#y z<7bU7^-Dp=@(IkjtnH0kE#Ny8M zp4Z%EMy>u@&wj5B!`Vkh9?g>#H2l7e0fuW2>-^a72Kc!DI?EmhjG|Qc!Ui^6wJvyB zOMz$n*-vRjxb+$|B~r^!uG})+Ti5@isM6lMT&fU{0kZep&JBCo5h0uj0i`=^p-4Wigc^ zMZ*ciOUoWrs|uA=oj%_$&rdH*YuJiR_=K54U(WYs6j4wq05K>91>7MlD>nyAnK9piyl1y7G|(=`!8A zjtDx9sMZ@x3nP%AAuSsNSejB{r7IB*M!GfmFy?;^5i#t#*JgX$#GX0lUIjb4XlsL~nYVKn>5p2;Y?wHgKSqp(5GHffA!U+5#-(bd-#pG}hu$)bOwTy6 z3oI{_sCf|e>iZK#N;|e zauo`krYS?}x;0-~=G0IIZTAv>m`5}9Zf0#i1(zOI51pJR2JtX50h9VJ>eflLr#|l# z7Q{1Wjqub)W|Tl@4OWSpyH1b%BDG*MLbFu7K$7ghL%mO|dsKfqKi%vZmONu~68rP_gO_5zI5A3=uz0mTsQAsywSjHJgz zMaBNfBzCBF=fuiop|@i=02?{?Pz<7+FPis`-fR3McPao4wkcSOiiz*S^1Jm06n$zP z#hCG8v{5OO(4fs20T3RyweGmWT0s(A3%C~^F)`B`i#;7o&yr6@u)4J=x>=gO)~TCR z@tZCMb1{D@KmA9QDT-s&W&uP(-4ysr$aG<9OKYq7>Y5r*I=X(!QR$`Qycxr_5HZNj zV$fqxN}_K%Y%YrKB-*k#q*%D7!Co7A^axjWFQ}^_D)f=01FdakOEh(oNVkH|+_G zu!(65G-igJ4A6INiw}$Yss7)&Avgvm2%9hAHN$?bbza?W3v{}Ka%AseT$tiPp3~Lv zl}$`;>vPccPW=N_;X`3&pEb(&$XhiJfv@qCi1 zH3?a;D9ibFlx?v}G2m%sv!uAs)%4R^7URjn31(h0hBXz4dl*4^IG3$d`M%##gcpU= z#vgQN-_tsK9XgD)9vdmX)rS22xb@6F7yh%hn|JW*cluZ5b|>OZWNYtFJiAZ$$}x7Xp(z-hT~{0)Au_uz4HwR8uX*(|YIW6U_nV^ke?LzD zC*&_#LLOx9^DB=eP-+2TyNy6?v5T}i&mC{+Vb6%xe^siv3WUHG&NEF%ZBoX z7Tu;O(KQF5ht_#6CHj^nQdxuoWr>O#*@{jix}tDh@vKvHvr_EI?Oz-bon4R*;-XkW zC>1*H2ga(H*RRW}MZgQi>+9QcnwDow^_rpdNtoJ+fpnlMQAn`GIb~V{s$E{1&d{Py zQL*wV13m($KOgcxqTcwi*H7XhO0BZ8{{9nZY1`?uM|zq>h;?kNp98YeM?(pdM4<#O zY9@qa%e?d<3C^z}a$Q2@=Pix&MNLlWX=r~(iEhuM33cdn0p2v186m~ZDr)pHB<)rn zIi<6s4%kKJs72o$hHXmIf)jL3+Kg)UGsk;;KaHyk`nIuhxvK)Vt;wmOm8JJzLr)`1 z*HzuyRb}@#k*zt15M0)cBMbVY%+*VNLRKWz%J+5IZD_tt-5t2}?E2IGttmSTf2h0z zQ5!LptO+<|8?EA>uZzCS=!V^|PZJqpcr__i1_M+hESf*xM5yQIFMfc4@jhuvyIoVg z`Yrf7(2-4#Lw}GyABJ2~9xZrYJGUtxY!-(pz#ZkO*b#hbI2*CmaUwlM)Y%Cgn{c2X z&39CoeV7?MJmDtF3c!qTa_!V~gORd%+4tiHurB!kiAt$E3A#m_n0Ri|6@Cp?yL$5F zei4dE8*-Hq;f`DS38w8Rsdc*=VXER47HX9qYWW=V%q|zYu{nGyMeX8J(^*v-+0=Jo zX>6|xNjCT_`6P(rjU2*`%5bV8VzXjB<{GUV?LM$Kr;dZ0O+ow-%);KalURUP*gvTK zH!I0KNo%JvYi<)^$s|NHcmpqKyS#tFBT9RPN9^0>GrX@Sb0cA0qybl1KSrs!oSTb} ze?)>k&gspiRU^A}uX-qF|L;zUM~I7)K1<>&6M(y}wM{k81*(Si?|b2cdX{z-1Ug0& zuIo{@_Cj*gCtM1`Zn|qewY3h);<_T3(vq{>-CtAu)O}A66pi2-PqSWQ zV3TzA!(621=MU1VRu0BYo*Z7OWNebt6-&dp>tTOw6XP?nSFFRX0&IPazsf2QXBRFUQ5pVflkI(t=o1D zzp!o_7wllq2gaF_h$N7hVz8KrGRqt@cMORIcxLU_}xJ4R8vx3$y6{KlX@oC1yy@gKqtq>}|8kUky#OzXrN zSN{}ycYnXCkg)dL`|k)-&uOt0=i1(Yy+~g<$`&P2bzM*iv6I!!ZT&U!kiaok(h*fq zAjQ};ZFsj4cWhP2-oBbGM6g8OF&D8x>hNoboNjI1(maUh@;V?yDe*)?s`zn#!=U}m zMX^R;`AGdO1U3E_A|GYDd|Ginc1~7tlE8KW37|8#vw5wM<)kXKoq*?u6#VDWnFF)i zG#^+)FFB`&FkA``_Q6Bnt^@@1i^=Pjq4%BFlHdAu^&Pv2B;NMAUeB(Q@^ytu= z-g`$>KZJyxc$_t($jLRs5b3ik|CK{h(GW~A`+t~w@2IrWc5m2uGLvMIOftr(i6wbr zjXn0RGl?Zu#)1Vb6KfRFD0Wb1Qmrudt`kd$1&IX^MT{|u-B?jTjJ<*#yZM+i-}gT6 zS?ip&zV*C+oR>fL+OQVvz1i2k@9Vye5uBdhJsotn|bY9XiDL~Yy zbpC}tkrEchHcoQ`(TO|EVT{ZS{w-q?TWdh1LlZWGq8_15wPx=tnLceo%Ld$Jk%rTWbw zNCzTWn+w#U!JE!|o5=?O9S8wiGhL!pKNX5M!>3FT85E%FPeev^fs?a{c@=&w) zk4(LznjxW6<=WSV&4eV0!|Pg}=GFC9Ip@sJe7>{?GUu%PQX7yfjY&@OPJ8D1>S6=) zrZ^kM0^0B&zR+h`6ijKpsiIlZ)2tRRUBIiN8j7ox&)z(B_{qq!tK!)fc->DA{XmnC z7C+zYNerl5^P$9D53W`mK8gmN8m8KhkbAj}KHr+?9_a}0sK>Hx@E}Q2H%HQ=mMit} zgRTQa$MQ)(A7A$e(7XRMc>GVlxs3G%&$07=$MsApAQeL!ket10XMvk{-bke0EO0Ha ztSNy>Z>`;&vtG&#^iXIbfkIItYx+a8-UNlW*V}dDds0w{DN59I)^tTmm;4(1^ytVQM|(CmoOM&iaxW1B9nj zK4%J@#jnISjva1Qzu@U|@d#Ad!XE= zin6}EYY$QGk2^AGkD~ZBaz$3WIle=IcFWX(WhNA{mv+iZM)@v%EOZzdsKywik?$F^ z$*!xyad7^(x@#=c=> zP6Q=&`!YB`+YkTBtgt5)=Y~7teZbH~5Yd)l`G7R3*taQ&ey4ua##JBT9EZ!VA9_k8 zhuAQnVn#rK?cG<5>7Nl;Lhp0*$Zb$R^tK}3V9Hw{FXTT5ol0X1p`c$jR@hsD+eXLO z4+(OnOwR1o?=w%{cw<33StBPc8!f$)R>Z=O{g9y46Ng#3UJZHdBi7phh)CtGNl7b6 z0>Rt=w#a8sgYVduil5cJE5#69XKTzjs#rGHa%!-L2!Di}EolS{5j$0~i_UimTc-}R z1>lQD&-=Y?%-mr-TJcE@Gm}WHfn_3qj)@iZyj-K>|2WT^0dWkrUf<=OCoDx;QFPvc z<5~BW8#8G`i^cWpUd7=*5ch+T&lUjXqB|0Zs#iK;) zwZyhkr}I87mc62XyV%W-8vaoqQfY^VLW>x4FFna4JqBFxLY2_H(q~c+`9l9vp{V#0 zAE8$5ASRw+;KW6jZG$D3z@V_)?H#!HK3Ch?r*#KV+MJlQBZ za$&k^kaf&ww*c;mFvk~!1bh2ElcK>j|J~bRI~RUAAR7GOJBc<_Xmw;BNzY%)<__wF z6Q@G%2z0k)!K^IHBP5vYhj4sjUkIm~UmySvA!Y-_?wi26bcSrOrPo12(v0&THoZoQ# z0;I+TYd&8sj$bj}47e|;Z&6ZS-`qRBC%5Ux_!4_Gg)-Nbk&UfXZv8x}a5CVw7t0SX z2xP*`Sq?Q0(MstJ*zx#8yPaExH>x(*7;|R|jITT=ptUpH^iIaXq2Z0#_OmvSx<({zY7QjpEh5Yw~=llFs>)R^+eROU|>q(NDKl$`J z*UmA5I&02~;7d~@wCpw1Jx-1`_B1~=OC^2c`Ny?fw(OUXbWas0G|m%5kq_Z&lTxRm z#cD|>i0t3*q(^MBX7ccIuRDZ35o=w$I((F%TX+Y-9k0NmR51PFKL8SG`cKAdYl#CP z*fcehW0C!ILcLdQOCt?@;WD(Pc`g%m8JUHw|De6wRAg-Bs#(hKQiCRS9l~Jw#>(Ez zwU0%(-8Q<}g$AR)(!j@IZ zI5=&5fwxRF7Ve*X-7?K3$iyVC-B6V2_ry|l30j0Tg`Qaq??d%sRY$4n%}lh}#?PEb+cnI+=zq=a9a zU#5R#2ltG^9hXC71^PWa%^aj2|JcK!1i7!K_1{4iMwWbPn!}bO&t6puIZoO#8dV+j zON(#tDbZaiDPxii&@M2VMmSy2=fdCCM^WAN-EJ;m^?v7VvFoN1N};y3Lp>d(IlB%- z!EPHX?UY;7X}|qXPp1Dm{x=Pxu*Pyo#D_eoZQ(>mMMr{mJ@?f0#3X=5~( zu^?PI&fLF3!K%X}Rb-)^9qneByWuySL3O`zX!rWz_DWr*Se_*pyV`5I(ZmnF5{^HV zmAeD5D|_&jXU)B-S}5TD&X#wveQXio+Rhw*vb|LW9ZE=nMCq``)fn-HsYIVl?JsePw>fhbXm3Vt$R7pKYZnNBXu@iN^Wnznb$yA{sbc z*kY^S^AA3DXXg<3{Ur8;+fzrSbeH0@&*Pr?5~0XKE)93ZJJ0JczbQhuz*n9}pvj2DsFH2_-8WprDbt9${)TR?9S6vhjbq)pzC*(gy9#H*Ra-i)Tdr0* z>W-5`)@o>-m#Th;E|CWu}cGmvcwPx-(GlK&Rp2n<&5!Hl3~6W`HZwGCL7=*t11)G?g7I#e}DM zIbc?6t7e36b{q}iPDGvRo#>Gpg#Clpj?H3b(>f6gS^kNr6Za} ztQ?84FBCC8BV{t&Vx(p}r(QYgtxI(^Kt*qW|G^yMWw<~=2d0(^ zwOS^QovmP@9Ib`wy3WgDgqVTCkg9ab+@vu1&J3`=#mm?zwjrd{rU8AU9ATv!AXd%JXR#2C7RyQIo3>`!ApFpFyPRmD_<|c`jj4ECWHM z$AnuM48iMzSv@O-&a#-h&x*r81xWynN7=X4HuZ%|SkRPtFiZX(xG71vMdp{H zLG(&=7o#2~uh0$qeG)AXAf3>lcJnP<3vVwu6iMxGO>ogr&)PAgwq_1AcDcsYH06dp zI@3!d2^IZd1o#HuzFASWl{=?8tva|D#lNaM*zc3?pr;m}INbUwbH-_h)5oFtz@5mm z-rG3}xmn#abIwXLuO~ua30Qk>=XlxJG3GqMt{THit$ zNSsE2N9%0S4{ET2CAosiC2jvo5)g>6-xj1Q^YWJcU2gn4o>+4#nojx4DguC^;Bz>2 z1izjQV#w}U_VA9`xB#tIxeU+uT^??5?rt|oL0HW8(VC;F7`)%zaW`1U(pg+G?1lH5 zdf_cT+0R#A7XM1P7A<_qV}cRWQWl@)8whH>+BIhP?i2c!sP(<^Z4eNYWUCtUC2wm# z-$@U2coRx3WN}BTz?BZGiK&mLZDe_|JWA+b%(t33L|dcT$-e#>V-cEmZh$%#5wwj|MxS*@hsJRpojCb7n zSyA`ex0CShH1&Xl&E@38MC6EDLn^k(8^6t|9uJ+x-yfHDEa^{J?1nnU9#`a%4-^2ldg)lCPzgyZG*a8Wrwp}ey-OU zX&}5La?k3w#x>32j|^G$v$rkxl6Fg?yZV}MEtx?bgPGW%+Wp4KDM(!4aTL9uOMq$E z0jTZ15%#z8HA@k;QPwN;82jn(yZ=AG{YU>K{IzrpVUAAKthYdQnD0+I8<@)TN`9+B7eC4_FVq~)~Xmfh*P9o)?m4cA|QmDB{7A_q< zC_*=*9j8{7+@v`5vm@45Bih`#V|_3ca4o%M;=^O*TVVPA0f6p#F+^BZjXcyRW!vD$ z%hdMf7)hw|U4moOp?x_3x=P zk@X24q`SsH0#lvl-SguptU+<-t;e2asA-=5gH}PhsHSwTiT0q0$1raf1f4X<^FB|v68X>(a7NVOBxX~K-Hj~UBTsn zd)o@%Gw!?6-^zv5238XvMhrv>_6z25sj}M&IqWc9MIy>Tiyn5dAcwn-;Lei(fHn#} z*get*T}$=^bIlEQ_?2!3iOtfKo>#CdoCexMQD#vcQ;2FgBbiyo1L`X7`?NkOJXnHebooEl$R9nr;jj!0)5{~~*q zbYhTsbUCuUwh(JJz11E?_bQ%j6^d4vT-npfhMVegqnwVgzuZwrt27@2Jdnm6UOIU5 zhIr`t?lJ0y-7HrEA7NuqWBBj~dDWj-e4We80@|(vcC>sTNJ?(5P>IiZyAz4D6NkL+ zbo0i#mJD=$uUK6P7UJ}>OUwLx9-i%02gM%8C`19E%a7Zn?)ycDIHb0O}e z!Zq>6qfu&%8G$QjRfQx~@H*|9Aankgs@gYGowFg%3Bz>Zfa3&2sC3<^yP$TYSoA14 zhZQwkTS*6r=TX`?B~qongA7Q7dIJHZIl3a4c-A9bozYRtBH^HoY%_e32JMRR(#*T8 zl&0q9M_wsHOUkJ|%g!66sZWx(DsazI`3toms{8ln3AbfLt{{G)h@>_735}Xs?)q!5 zCUgLW;uG8-2-^rfywU2-eKZYTimnA{Sg$7W*AG>3ir1ybSA}ypQFS5Jr`8eh9cgRY z)9$>ceMegHe%Q!x{QkA4ZUHjYthcom=xL)Bv0RA}AvsY~^_WbceHAdq2W6AAz9=?? zO%&F@T+KRa2@24mv=>Tuh(vA|!9GSFWyXBvfkhZE*naO(=W+0}knG4_*?24PqFhi2 zK=EqjeFssJ!EqvIa>8oi4#m^^OSb*-1hvieZDPa8JSTnF9TmoRTcqGIwAN3DnvZVe zsEz-4rtmy_OI~;c?3H4(Z8AMP($BY(zG5WbkI$ndlKi>T;f$W-HMQIi(o?0A#T~~b zny#kUACgC4G4>p{cdZeEtjb_+i#4J&AWpSN9pyvvT}J^%XUHLI#VgIX60LJXj@7nf z<)Xz`a-dkn@4NOidmr`2&BDi>HuU2+!?*fTgouMQw^G`1#;HBzO;D!$VV4PIPg9kf zLek@NkX(OdGWCQ^-ZwS;yi%(+r_EB1Vki13qefH(x!JRCldbmKMCL6;X}ISzsp_<@ zy;4wTIS}ZWCU#w*!9l&~m!%a8w;@nxy=s{$;+<8?)Qf=#DK=efm1Q{+cNvdQXFzOR z{%GkUtH>1~PveHPpaiD_`eagEcASs+>K^Ct1QopME`4TKYCF+-d{cUsHZBwr_)l#wp`_mcS{NezVbkH12_~tE?cH{rSL+f zV?{vi5;7bG>3%ZvWN&->2`caVFaH|b%{fxb;mjThM{eiyB~w;qK`>pkyH2`_@;ML+ zJJAhZkk|H`MaiDjH8gd*wEH4|-;ap6l=AGNP@VoN>B%_0vh1YK2y$=v<>WJ#27U78 z^1frl#;waS$5t(TxL&y-x$+|cteYNa(A!|7!d@KPh&S7uLs|GJcX)!u!5gH>!v4TU z(bntG(^BDRWlxr$@O*-n*rP=;F^%Gxx|B^ zX(X=BNdfFbZxR=1=ztrfx+(Z~ovNE-oV)swqo`H?1#O>@RTbOVkn9dzsLyC61rNIvd5WaGi$D+j<0n5pY^_1jaAFd%K& zOyd&tu%Csl6*-15)~Q4B3n+k&d?6P3)oT_CR)?tnfrGLR@JXif>2Y4wAdj$@Qeq%D zifyp+zSKR0-ZirBQY+F*3(Su3hmJ)3?Vr>GPGL_aXZSdDJ`(Nb+5^hPM7x&TZRcl9 zQ&^;IjB*S?BFi= zw#aq^k@VYrht5R{?&}ETTG1LI3spx?x&eLU){)W@4!m6r$>ai|E@PEd+e(LOgOph% z&CSMj5WT3)b!tz17FTfK|Md0E-APUPq!1^%RTzI}`EGSXV>8iF<04o!wL&7Xv!!cX zL1e+Ca+q}GK;=XiGLf>XYuGotNildz-#r9Q4+9nIoi6A4*(VA&zt*=K0(${^9-Rdi z4lfvfuIGS?h{vhP`@Q?&_pgKwvksLow9M7HqFx**%2cSjn4v<2A>p9hXzQgr>uZa1 zN5faUn2ZS*9}TjJj6%%>hU87^4-HYbP3?9d^4i3O|H|lW0*MH^x2fkbJ*~Ts=2$Km zSk640p9}u5>1wdI-&QLqhpHEPz9EGTk@OxIxIpT z5pm~om=nYEbR$}Cd}(cN;kC|}_mgF-Q2IdT@Rmy$Z6yYgvvH?)O{fnB1(-~RUEB%? zi45Y7zS7@+<@upGwphNs0s=3f)i*I0FG!Ly&8nBIe(5U6Di~Sua}@&#Lz!QBO6Ciq zp{>c@TbrBbxhOX%eOaR;a zdB1oxPH;TF!KPG^9@9v-Zp8XWy?vaW6wN-bX;iN=Q=G4684_z`tgzYshO!f6Q|$*a zp4+c-KEC@Cf*KJEvC5iC3JUTSunU%RjZou#QlxwFHqsqpJMxZGsvYdFe;F#I+nPzp zjef~Wmy!o!4E-C1nMx9ClOm@-a4F&cC3DBAf#bca<_&z1;dTdp~4XA|Ow+ zEhgKq@G~)iiX3Ag&3)5896r4%^w9E2run4!H!kVn%II?qw;Z3%rb#kaXN??=#IBuK7*Zzl7>Ojg!?^6bpn zdTK4DK?sd)3Pb=S=M z=-`{pp;@eobVIx4qbIi-zVfcWJsueJvd;Z0&nxE^ zJKHEL9Y0u$f=|X?#wO@&{~{ZO2i!1~@~6?51Lwh@PZQ8NbJH77QXqDp<9*}fQ|@{V z)I3<=G0#tyPBO_P4jfF-bv9~p`f&iEJEm_p1x^Lk1``TS(V|DoP(`nTzsU) zesz#$@sc-guG#HQuZY3xClf|hf&0)X!uj63v*8O?QO_eNim$2)vbyqoF?`Q$Dp4V4 z3H^xnXDU#VYeQjdH;V9ix0uB_o6yN_pHuI3u0E8~8u#Ur{`r8{)M8}6DWErFmj7@M{H{pcd zz5MomUMpgUHOPuy zVFS(y>WoxO=%noNy~N@*pkZCo;!lXSQL&ske(98h!OgSQ3hqb})b#BFgDZnT9=J7J zYlz~qxKHdv`$HfFRPnq@s=EJQ@+Nw}>@0oe<2w7)q%3zv2;vW>_5w!3VHb-p(N{-?`t>!l`X>m5qZk9f>_0-~07h%tI^4xT&me1dhhtg=8bplW zsHL?0_OIzhVA}W0O>-ks%7PRslRyjBw%rMyRtE=+29f?CJnP#39(BD75(6E^L>-8oX|rPAD^%+trk9Vk zG{axX-7b=GGcU?;yXPEjT;c&t$SHh`y+tw}xGWu<+%$XOx^9qRS{upD8y@C$BmMlU z%jJS@_)~JIJTVZLef4C2BHP{scfGQbl=|bfUypyT%cYYiS%t-KZo!assJVu1@Z_3$ z&ry~mx#%}#{gJOc$OSy|qi;hW`Ddj%1#83k;O;TF>pT)@9{mf0eyj}HHyv+JPwsGd z{I+kqYB4`rin9?oM|@?JeJ4J((SqMvrsQLFT2i--kF!f+(WURW9N+6#toIl>F$#p1 z(D#}rmr*UqgfDrGTyNVq^(a_cL3!dtm3{(Kyjg&6B}v_X&2ig#raJX#jJzEqlyC*U zI@ltl&LR|j%J+2xF(2c=mfd!0dUhh=&wAzv)ZIvGp)X55-t)7^lU!;FZIuvrgS#hWS zb~z$^!%I9-3zVFYl9JGkG4hXjz;Vq^eq)@IV9r)?mrn+*0_k*?v=r@r!L%!5J znk8rFZQJGNdoP5KCP}0mB!^&bMG3+65Vs3LvGd!ud>YJ&llOml+G+UL{crL1ugLpv z_WGc%V~rZtU+SiGL3MV5{$MIr}jDC_YKKae$xM%xnSzGa#mAJZ)PM}W4q+AA)B_iW%??r zF|hW1f#X2~%7<~1el(tSfykwT1rU>7Fd{fZ^;5t5hQ5!v-&?7E1PY+@D-8U2Kp<`% z6LNM>lN`_OXhsC9U18szsvXpjaGFeira^Z%qC5@3J;BV)59DH?WwCwB%-{LfF&mhK>a_Gq`d!QGTBVT;VSZ(G!*UPq1@g2zoQ`(Po0%W%>4!TGua zE`*4i7Ezm|zw(SNJyy9{{Yud~^R#&;mEI5uGi zAQPq?Z0&8czK2|IeI-%fRhz39mnic!O|2Zz^ygpg6;?jlgwn?&5hJs-g%dKMEj_EXIj*YU z@Gh;9JTNqOb{8Vo{p)8=A*DCyJ%7=VnhF=Fs^Pkln2? zJJE)aqA}#p2i@5xmpfNIqKoZ~0N}*6`=3)#rp(~>yl~Emwz$(-5P29Gga?K1L#8*b zFdvLfK+gL+8q3P3b+NA`YE(+0TO!qY<0MUyf^jqX&4asGlq7sDXmlq69(Yo8#Gul% z?==*0XPB@{3eH!q%!pX+s<(p1qAC)79qV?P#VAigjZg@dD=CMPX<)98w*T$F!uy^k!HmhO3Jj_pH9$PO;1C9w?8c66?3~a5`z>Yb_d>d}X zg+HLc{>`zwmt`7NwbB0F%x+zXeTt){->T=6(WCgag_hHm0EbjJOTUC@Fx{%{M7>2h z>O!+sb($oGRym}jdHZ7}wXO2qSDrsJR^ZrPwp`Rg4`SrVf6>5qC4E#U+!B})gidVj za8q7eSc&F+wa!`X_Deez>!4%!9eg2KN%NhKtFXNAfMNGoB= z0#>%LIfLD>#-BMI`v?dK*XM&p-&!X2W)y1gIhOOsT=6L3I!yM!z^I%EZ7n-<)AZz{ zC3du<^%--QMNZG}$YZ+uwD!8=z3<0PwHfk8JUcNs@1gW2ZJa%7ElJ{D z)0?ae>+2?%=;%I$1}`2FJXKQwR<}6r_%K*#6>0L9;m^wlwW@qv8-&VZmTD^s9r*C6 zXK9|xmDKK_)DrbOh8pEuyhGl2(V*h@AJ(I#l=|H%kzaX~2)&d0B*M}F=1>&HWM>tiuzk>I{~@Ew!VR8luuOAZ?+7(JHl@GT(7js!N!Cd*!eyNrcI$ z`e6z=BDJA^e>Np3DjwC^FS67%98i9|9kJu4&7T}Sd=uESnuz>3`D0Ky;yzR(9zw~~_&QK}bCynN+^?ki(xRX1_+)Q@fYq^g?@mXeMidSDO8{K2Z#>1ywyF zl)$H@*O7ba`tTGAO>FMh+`i|M!Q!3?TS@}D9ldRK4p|t%-v~c52EY!r>z|HCdLP~y zEY#3w=;Z=*MsbnDwW`YcwNoNd5asG%Pl6$ojo(o$#Wx2!>s94j{m$l{n?|8EJFeF>8PqzH@D~I9cd~K3Kx5+?K&zZ zz~6qXnS&O01{WuQ>WISUtKJpNKhMu!14J1Vt3Hf)O>y-s(6~R{t|Rl{d-69yC$$0I z(=E&Ntm~iZJcC2d)YE1h%Cz>(ZXyBwh^c$jz2Ei%F7-a4!uB;o*-KJYB648-R^VdZ ztQ%$+{nBPNo||6N3t;{f(t7u9Qp}T?Kn2LJ3G;RD4^OPaZ{t-K z>g}dcQ>n$(W3xqMqZ&ON3F7PzN_PuL&3wXht*_QpFYuL*#-pM{YV9)D7h%WPc+u9= z#(qPQ(KIH}16`D3rPUO5$YMQUKvaj_ZWJ2*Q9QVQgodtYMrn{F!Ku(c|BjgdYWt7b zbyE++!q!h+`FZrf=0N(xkObH@cPw>v%e^JZC}1UKzG%GA?8Bwd|LWWS>9cdvztM^P zV`+inffL<-bP0^Eb5W`=YKlZzx(DI!?yR^>O8?J zNsrPT4u+rq(x*P__jS8TpT>u(&8Jw*ExM*A%V(oDZ4bk>@0BD?U#c@-9utSV8}GZC z%EgsyU7x5wc{JiGKdV`&qCwqS(WLBB3K^OOvq!8Vm>hwgLes4gbgr=;mM@~`IjTqF zv&|Pg#7Z!{JxB*fl-joVj;#WwY6a#R^wwRZ^GS+&eC|%TbM!=DUrK}f_t7a`bJXV; zww?R6hgp?HiK9b#wE<*r#tiyn?^}fXtCJYJ!L@jHcumk80(b*L{rH#lr zGo-G{RJX&oMOC>ZWv_!Bv{xYUjl90b4X1`sseRL13o&Z?aIotQWE#wZ0 z6@~-%07@pvA{JW^%HaqFFn5zSeQNn{DI}IOMfuqywOp;NBhthUD@%a3ljEWqJ>jCh z((QQW#5RECv5(*+%sA~0W-cv-!!eocKYjfY30nT`KkolkFg%LA#3jCHS_R9lAT`8@16=W*{|Gc0 z)e<_*m4K&|s@z({&mKR|g|vPC)LQ;!DHhVxN9Ro8q6w zG0hBe5DKhs^QVwM&(%l&%v+4aU?%DST)lA{oa~bRnvoGe9rzb$h*xC6$1;=Rj6*-F zhNw>c$moBKdpt?^7`)V@v+%Bt*)vTDmKMZTXsPR8d|k79S^$0Ocqb^Ra9gQQ-)#y2 zN9?e-t0Nq=V|EsD&Au1Z`{t*U4?zkc;PvKP`Z>Fd1)13eBd1b#TR3FR@8b!DJns3O zZ*NeY!L%J0-$~HtGpEO-X&-BS4`ex>4KOG1+OLx&0r?l1(aivNVYNe8aWGwc~r{p;u}( z$(N6b;w#*KdJTAK3bXS1>ak!eo&+fIF{m<%UT|KhCEN@sUzB3Wz`WJ6wh!e>L+};L zAmG&q4VjLpa^iSswBlfx)%YbJbaQk^>ByBcI*YtDW#u(Nf(&<`*mCCB|FqwM6kEB! zPYi-ayUhi6X3k9OiSHf#7-P2>TR5@^$(M+n<3L#85#HVtkUYt^_XXSEP_@u2Xe)7m zKhQOhgmw^@EM}?T9T#OlINduAU>C zTIDzylyt8a!k`0#%?30Hg8^(ewu&jG!wentyhC6Y;`cHvd!6ZiM{X8RLOMGS$k5(n zOA^Pp{4;HrQ&lNlE8l!txW420og3aA2C`thp*7$9&vlJgI(d&&!b5&aYzRoqD+TWA zKX0qjn=+6^8svI081u7Gh z0S)tRJm9FJ9ZvSbl4x*4tozpH5&@Co6w*9w;vQ0|uGI_ace+Y<68{y@>_nRlrH%ctd;>l&%ECS%I z%ArkKCHCU{JoPJ&UCZs#2*3O`sC34AA9SK#)u&?9-*`$j&uAwX6zl0KIrIhRf0jJ; zJfj=D1ffeuVaL^mS7{WPM~_<*_1>kv9hk=c(ek2^RaL|mo%heaMH~@E!qU%HygMBU zpATKjW0ZfdKVAw^^@Gaezl5M2hA$vg9TRnC0UiP)!}}WK=ZdnC8$Z@@HalyI12}XJ zzNceO(I$=;5yzhjYuRfex|QW+cYvx&$j{dIx0t@QmSMw~r-!@KW+{^g2Gg`&3(~^y zywU`h`$U}B^mHi#WOmK(cK+)1s2r$KS?_m29cX7Qm>Lo0oEAr%JTnJPBTk! zFrc$Dl85{nCou)QN+ke4eI*ar9${7T{svrW&42pBjPp1lobXv?b-)J@BnC_~dAEoi zeu04sq&%)rR_^a}`IF}&_Gz=t!CNW)N!**SJbJ0CU2~;?=_i#sPN@dd*Zf)`d2lz5 z>(ZlxMsbasb7-9CQ8*>LwRLdtw@Jk0p*1?&ySdntvhEh=+rcu19+M&g>)ZQWC*(#Y zRb=%0zpvrn*j`I)Fvm(9@f5MigFz{o1OvoiVIjoOhuUW5D4O8{o zV@UhbJdE3=q|Yd`=mg002L#>3w7G-<;)-@!%quJ^UgI(!{g%f zZv4ZeM%EYOL4ySPTpO}+i)#hu_v6a>|Ek^i?_BXaZdEMF*!tePZ%cVwf)se)&w~iR zNPnBwkjXbr65T!Z;V4X1ePnPevL&9~EKiPfbNyay0Utzv&@;oS@Q3Z{EphN=$!NTZ zxK@d}2r0eY?5^b~K_;ZR@D;-C)Ytm#=|mu7-{DH~(=YpK-2ztkdLb+P*R@B|)Yran z$DhpzY!N;{C>SeU9CkZXEthblbwMt#OUkW&TC>ZZf+v z0ppUN*A0GULdDwzwnjGHY1q|WORXJU0)AYhH>wGZ3IG~1oB9GSkzW}k9m_+_gI}mfwB=s!; zlD5-A5Wz0PQO@=ns@qjzca3-VFb~^Acs0i)YI2E8C)orSTZxe2dpT9Eyvp~+H9se; z%{r@A4TtL+a-A33+nuUoRF{gzuax}s_pM>g1rvynuJzz8d8&%id9(yq;SIs7XHU+^ zANT`59-rbJ3DqxrjQ`bivsgwfW^Wj+G~}Tqbq3tpHaiiHoyH9O} z5rgfd<>D1F?ki|(pHq;?uY@a^#S(R<&GIkLOelf@Yor(J1VWHziyzk>YO!kBTFQbc zC)8IRpF3X_aVIp84IFQdse)dRY)<9%iC85hsvF?;c(n=jdNOT9OJ0$&^$`nhj#6Z5 zp*oIDU9Ev-_j7X;;lFYeK-+&@lE(DBX(O~fNS+Y5u`uG-ICIbkaUoql>#oE?>;@hI z2i%X;&V9ZwrrS;w_VqFQ?&W&gyr$@??3~7;ih6U8t884=?@9JS1!;1gK}mmHYHf_c zvIXH9;clW!Py1Ug(Ji=86Z~}*FX%}CkdQ4MRUVBTYcKy!+#6D9Z2tSA+UI_#TGsxR zP`i&yrt(3?kUVZuU&*bf|8nhvz|vzpYWDbp1Q+&4I5p3x9N{)!!abrNd_{mUr&!I)ptAj@bfu7B5b_b^ShWr(rJHz z`L6d9Y-*%(!U`-?$e&H%r_bUoLaO6xrH7AVt(BlW(Cxh6FJ`5!#42KR{uXPmA;>ZXYMg8HjINbwX!@lZj ze~VkOWGX*On5D)!s%R?8c@|2FgF8x}3wXHk{KL2wT2B?Ox_L?rTq`JSSZ{;~x4r9P zBrd?SpF35w0TJC-i!Jek?k|OC((atYAMf1vrj2-JX*wj%;e5!sNFmbzPP^YcYkahk zQP1w}z0uSI7;)tr+Em`c384Z)-cRaSJXcB5DQ4pkbb+oLy zXZ2ggeosIVM$qNBAu^cjwng)0Ae_)`DF{`ewRShv>PXKzX)_kv<9)ubcH^1&CRo$; zMBHX)1twfB3WBqtz$Xnxvw`f0#_%JAMI^%Ik15U4ARScF_Qc}Z#c_s*8Z}!x#V53g zw?alS06*xjEwZFoD4W#gkLHhFsRrG#nCW$CNE!~qlse^bX&H?h z*|$eH_163B%2@F<6ZvuB+moz38AfB(ubfeI_d=m$w{z%Ceva!cV<>q}-*q$e%& zduCh?YmY(bC5WL8z+T|E?AHNKm7m6t>ZRZiuE1AD3H*kMq?QKB$}Aya*tx_$^{)p_ z&^ItbX-=!Py{6bDh1+ng>fhXkwD_^HLyOid)yTE7ofonGk-qkyr+?-76c`|)`}&%J zj=4l-9;?i~RyAg9FH-4^<*iy1^FAf6!)E1k{3ovsrJ7>q27XFpT^Gi51EA#a=U;g@ee;bKhKKtPiYn4Ye(VJWMDwW87 z&6_pFjFy!jAFS+< z#^{~OeCkh9uO0j@y9}JSO4qHwMa1lZmCW}NoLRTYbcAei0qx*4RQl;s%_FYH1_I^~ zIqAt$2=!B+1x@b-!Q&LMYdUAy(5F#v-E|TBNo`|NaiS2zZEnxA?3hk>n43?J`t{9- zuUzXaeyIGqwn!`4UwSfRGa|k5U~{2q-(nL$p@>K`ksC_P4TFb=B`~9a2tJlkob?Eu z_gHlSIVgQ~KrNxO<&VEd{eNRy;dZ&}%D8)EAn7y{uc@BfOs0U;F@%OZ^G~BG_r``Z zDoa8tLTSDQ4dJJT&}Tb{$Tcvy;8XBp3-E`3<8c4&SFTQx?Iiu<=@4Rxe@s?O*K}or zilbyzk2fYA@>;s(QSk%M$IPPTIR)|BdImuO|5B}!f|mhewoM;V6!_X?ZG%)^c5hEx zb9pT9JL{KFm9B6$J3>>8s<9O2Wm8jA_ACNiLd}aAK;C{feWTuES=8`O^Q)p9>e?7D zv8kygm#UfG9sKl6DUa(aN{mqqsjM&>lL47z#>a1KJ=pyFyf1ikcCJZA{E(6XQRrij z2=fj0BU1SiEB=Chi07p%^HyUE(Kw7o2g*1xZQ8=r)nz0pdj~w50=QPa{Pfpkn+22k zZjCGiH%PuYH?7-5;e-83m&PwCdFqyjs#o2lwo90!?B~fe1?{7F*1)WcGWu4+v9MNc z-x^lZF}r_$haeZ0Rybm~u9|)`>C5=Gk(i1XZV7A=f=lFZ-2TEPinevnvw4pAjdyNXG)s5Ow!Ft+C^$AAze(HzTdAWwn&Vrl6&=j+L>ES z!Zp7pl|v}6f0XvVZdODgNKq4m4si6C@t(#kwqfEE6}tA`=iWFF0RV?TX|=x z%&xA9(W(NjR1L4*nE5Bmfz*EQ4UhxWZ&*B;p!ygZ$%!4W{a7xrlCsKd(OM;DCmkG= zz$=!G^xVQG7DM9c%@ZbSnP0=$hE%wY5uwIq8yVCkGaB78}4*u(&iQz9yu51Q`~-g z_sI8k34An7wq#68Rs=H1mn?ON1iQCshPubky04e9t?W#{Bv$p0?r;|~QfK-DwKLtF zLYxi?Xfs=2W&(>NoOlNI9%S*ZU%*g=aSUJTzEK8IL9Gg(=!yso=5a-qPE&6? zuS3T>CK@p*i59{)R=Jud?(W($62sEF>IS_C{V=<+=r{nSfii>TiZf0h70ZR4wH8i2{@7)%yT9;>}5ONae*D?n;-06Lv;BCs`HEHLWbnN>?m#i7Ym8#~(}y96|G z@-f42OKx^^+cK0{Pg-Fb_Il+Z9t|_Z!bV)RKdmTNZz1K)8edyIW@Y)aZ!S{2l(VNy zO4D@V4Y1(~kmB1CM^x^)KwM(Fax{}1-Asy;WN!~EyjB$9I*rWFEza?FP&EDb89?`s zIGhYiB~lc0C~e#NM^g*T*O0IaW_xyT8#<%U2FQ?+GmMQ@$7IbH7Z+3bLwNPV%th0<%nu4hNo zjbNA-B1`7GR*ss4@r@Y1XZ~(gQ*C;mU!9EKo8jBlzdYmi3vv!o@1?k<>6}!3Hceq) z)^a(3O0+_Jnm%Vfio^+5*gY3?G`QTJ=*N~KMvm8GbBjf+wELcnzOLQUAL<(ON(MqE z=1aIZ{&(-lMgg5E==nc+c+Oj#%W3?u0NoBhaggS6qKpuMUly?#Lz!#=v+|P9b$eST zDX;5Dgf7s-m?x*<`&Z1wBi?k+t?cN4XbM6fRXojx23-F9w)cHuIe{^?TsN)KIo8RV zaD_(*m4i-R>Vzk)nKuDk%oZO8)qb)B>4F;-s-G}*^K;}`Z=0Kc>P`R36Iv|^?B{F$lPD#^hxTzntU)o8l>#@Y#=Igr+)AK z+#IHPs%U>>ku!p$qrz2;P-LV=ZRWJ03G$;U`CAp=S zbKPhuUKAO>!KdNLbS0Rphd@nT#Pr-k1f7uT2)M)VUxH(1=%rT#pdm$mlLLCw=nLbm z3VV5bR++Ha>E=jw18i>xB~kLpv;2Qu=l?xBuJm($n&&*S_p7-|fUY?H<%-UG*@>#- zq^Z3~KDx{8i{nu}hKhh2D+*M^K(&WqMTB0AZQH9vqkdUs+}W{eS0HF1DVy9m9lnPL+nyPOKS?j7gGx zox3M5Asp}U-V+UvPEaFU8&3%s1X^dGPF*mubDFHK|@$V|B8s|SG&HbXAtI$tpf1X>%7xCR5?dlnGF&Ov&#=E@i!IC&1dTazT z5j)z|CrhK3d|O@1*h*o?QCU;EHIdb-TK6QnpqT6w6BpBS+hQtEc zz%dr=Mo~}^dso1M*v;MZ-uvEr&hvYI=iEQebDy*SknOX@z1L!~)^~lsp91!PRm9h} z{6@X#f!k0bY?f}>Zc-L(8-kX%%IPJT2IE-3lwu)HUW?6JcC)a#yVP-Ad?0g5 zS(B)1jeAdM^+)6Xw7T@ldA4`m#0KgGTuf`GL7j z`!jsJ%TV#{OA$=(POzfjM~397g0cB&e=gI;G?l?sDmX?#Zj7?#)>G&sjo4V??28<(l?6u zuzCBOL6rqiO);+@9^A=mg_AtqYP_ZTPljVXJo;rda9J-lh&3fhhJ;58x zt&7>sq^oS&xOh1#FW<9n#b?J86YBI2FbxhNsKoINU#w(~PupTvEx9_tm5xB4 zQ0~UZLye3z^Lr%!FrrrcPfIi26!x^|km^^f4;4dTYTy3R3@h;~c1?ejkh}vyc37bp zmJucNPEpThMQY3N8oZg384UIy#Aol?+-9X%$}tjK881Tu)-pkUAZ=+RhP7LTb%@N@ zd~G@**anvL2#XKvuXPX`W5Ay|2FRP(X=g~1VD`_^Gw23lO=eMp@P zKm0u~l{pvG%oJ!#5S1|7k7_f!K^-%*BjvL;B^gsb=kZ*1RVpv@of4IAX1J53&d|L^ zTU^Ku)-FB!d9l*;F2d-M%lQk_=$UfE*1n~_k%_zt90kun~{zSoakZKmpu{~B!N8U$KTizKEK~JA974(h#KhyGO zL%tC~o*{xOC5eKAN~RR4sG@g(G5BBE>PTf~Y4i6pO=V2!J5hpCtuGA*->zbc*Z{2l zAM5XZ-el16B58$pobwFNr`Il0+dqaeC1!{P3$Zhhiyn!24EEluS!5QMwTK$CYmxG6 z9=8#eHXCpU9CSjXeDpwlI(9PDSkdqk{a{V=B=r)Zy8?k*pQxFo9ljBbWH5+y}?esj@i5 zPkfG@#2F6;7~M9jsL#(>TM^s(Ez^hZGdl#6x3y;RqSMSmrmCL3QGGgL{asHLIz|1| zy*7}6r6*3|WY`Mepo~xxjo*L=`3ncJ_r)i^!GSrOc(BXEGo8#iksb(XiwY#EyUyu0 z*hAF8XV!oHsQ`I6LVOD^*44>*MC}cDtWoGMRIl<+wdCUTrxLkxUI3Z>sz0XlOisj-G=jyemR#X zOqc5qZO}CHJ)_eIO?&y$R8;D4aZJDDXEI+{dQP9h{Fe8_^X&9*C)Q+4EW1{kl{mm$ zY~BO-h4Y*G&=MfQsYt{^XA4!=FsC)H46@@?A&It*|Sszh7Yw5G=5amoM$GN4@UL`;TT* zAiXbQ?b@Hi(qhA7%75Bhl}H@t9RRXRc4&Lto13VY!azzm1hYp0(3cA4-#IQAUtbG;Aw}KQy=|i-b>^1`t)r9k}1$K<$jvH0AKO z;}Y-=d)gP(=?g0zz6DYgN~?{0`>_i`H>vhe6h!gu7I2EAg~b=Botu;0sfU-P-ZsHs z&9rThjYA~VVy}$&!Z_A74+~}k?)SL(KFy{#q>LY4``vQ?edir{zu9~IDo@AIg`ys) z0sBTbJYh<=ULL#lN4HGO(@Z^UF{L|-Ga=2kj#hdCcIu+>Wo^Ci;n;W^A6e_E(CoS+ zXyUtlL^31F-%(RU)?)YcZLYRpuA?JEUcjQHT*AjnUK}@89`7@j9z8AlwmR2CMi#$z zwd)4MMzL{-s-_$otl2jRmP0=^we;1o@R0@GG5%4vsm%bQ8Jy|laydU~iNru^c{OFg zI-h%*{vbr2J_d0JYbIuw#xNrOCvroXsK|5m{RF56r0Tvxt3*11_4QA0*%2W-E><74 z8}NUSq|xAtiX=4Priil_qYTzqc5QuU>4y)hJ@%rwpdLFTS&K(AHR%g2N%3A#HNQGV zhK;c(t&Jd4C>&kVehn{)_d zKtZ4QJcz*uK7Pt4ls(9G->WmT-JTLc>egT-0jRVSeQQ6_~63b$prS zu_pFnw)X6jc`JuayMK#gOj`o980(UJD=zhczlb@11{;Zfx3oDC}y~ zH(3MfS}nE*R4{O~{9b*^&)w>n=c>t6vHg-`X+|igkm%3{88(i%86Up{?%rCd=`y{& zMxkHV3ix~4bQHYQ+~P7*gv!lsgskgLPvj1E@eI-_ktC0a6%`z|2Mm~U{%1!WF?^JD zAxk_B351_hj*>Tfxv{sp!rrC78-F>H&Ym1kGsuriJzuP?nz&phWvW6wd3C6CsHD); zcDoYy?8HV~$MnvE4nD385X##~u!qah`XLTleyUC?qi`bT?o%L)27wr<}@0A@QE?BrHxhm%6uRmT%y0J+!F-4|5AVWW&bk*gf|zwcG`#jEFZZ3ObI{VJNJ)|IaA7dQGU8ki_K;-#C>!);Gl^$>uqgfi6 zwgyokip7ma^CR3{Zgz-wt(+CBzpfeqZ6t5$-(Nb!sW@>j^1(Lw159ZBVRPODc4&Jf zX9HXu29$Q+RhpFlV|Sz?CM~7UL~cJ= zDJvXXwAoi^GMRDwW)vdnmr?t;8e9p^Uwb?W5Bik=kOH~_sju%Wh!!U9wYzP$7Vs2_ zJ@`srUePpUDp_L*;LTqjhN2gJ1|SbLrh42xr_|mMGwNz?U5l@E#52n5Mz6E zK_69j!kGF}4Qw@|z;qRjKh&0omx*RC(h^2qcShA%r(%oQp&(g?#oS@O_`}=PBl7`y zK{lW+NfC*!E9{wl7N7V8LjkRVcgM58=gl!zIzRETmJ>hm_4KnaE5q`--Z{h(x1Td{ zpi(@mxS-nJp^+|Vt4(WEJ8Z`cyqa7SgLX4q&}rH0?dvXXtNPuVnz(0SJIfTkNK53z zg6L_12rI|;ZCg`Y5BrVL9KSrEVXq`KYXk4!v}J)S>k=y%f|A6}G_|;7K^i{;lcf?6 z%#aaVot@RSYQ(Q*F6r<(YuR-6T2V{?W#p=?ri%2l_gJ=a z5SH9HAkmzbelVzVC~`T<1yuQ>B~1Rb;-sy8{Xj%*v(+NF58{pi>nis%K@$3;bN)mhhEo{UX2MlQLl=tclXo%qf_%dYdRx9U@gszd_X*3@8T6Fc^qL~V zk1BILGUAd&+eR#p?IW5-s6li3SlCv82HlxgejWz~TsW&HKnYd3wWXL3+vtTR+msLU z9HoWyM5Q~I$G!r%P_A(!oZHyUjJ5kM_f-3Dw{p_h>(B<`6ml!yk@=y2xzHKM&NLHF z_Jci!w|XH+4!jaX&D#Dnp=~JYZctaZ$6faiDExM^eh=sJg9w$~ObUV^t6yvLe)*;H z+{jQ3#P;_;+}Bb6@Q;N)4Ikr#&rtvh_pr9mwDHbD*xmI)%w8Y&_pyEyn^OS?iM;0x zU-$JCI1K9ee8zm_OKQ&#QL*noubP>=ufNW0VdTu_D7`2=C%tWd{h@NXZu+j(<8!ZH znK@sZTII`Z z>)!O(COBT@&gc>lo%4^^1WV;Z9#E5nyNgaHP*>3;Pv^G1Y8mH+l90FbZ(r9ljuI7Q zv~v||zW4fDc|!4x42ZhJV)bGfV0@61!}5+BQ-k4#M*tMxi&IbW(YlN~S9SY5DxQ}%(TjCfAg-RWSYyJ_(@X__7Jo*vzuY5-Y)H%2!4b-}JOK zu8dgg$-daEwQ$qoyA0DmOT2KLzW9oM;mw8XoRA;1^H;VD;2_6n;joQS3X_`^INHOC zr5TRHcSFwz1nSJnsg5seYrqXfHZ})u|MvfB_2*WML5mP1_{`S@* z_)=)S@_L;h=;WF?Eum|W{2Nf{fW5N+-oWMikhEs-Q1C%&-w^+;bo-C-9oIY#^8n2} zyNo0$(_iWW|JfMM@=jEZoJ*~zNLY$RSr|M<>D#|=QaY!hw%GAmy^rcU?7&s}!YpxT z2Xm!s!@x~j=d-`EWPC#H1DKF3Jeu0I$}V>bKi_Y^GEAR2(#?`o0F;A@q8~tX)a|>j zJLRr6SFBdaJIE#E+uHs}Cv$*UMQEn|)rXU5kG#<$<*y33&bQWiE~m1kXYGwgF0rEf z?GmQYxee6B`JbEZxtkJ~8n%B;xqeihMD9Nk+#PG1{5<3MIn(g#gof$Nk&@%DEb_*U z7c+NtC;d)Dxwvi7h{3$}Yg(P6tRB?p;mA1eI;-96sF~B&7D(BqAC>2y$OA-sH|x(h ze*(>z(ZAiNI|L-wW@ zPAPwIgNC>kBz4UU2(*=geb3@5Le61~TD{m5Y0r<`>*=x!UNh|2?fJf^7fQnD3YCv~ zXMj~UHY6A52z+0+pqAV{v!s8Lujhy(P{n&Y&ALtZ21@nblo~qp!scMFE)L`kB3~pc zRkn4refl8kEQ!Y@BFM;q(>KE!ox6F&`qj;EM5m;k^>FbSQ{LtYZP9^-ky~{4AxZW#Z!@Y1wZlatpD+eZ&Nh+Hcx&v zrIH&a>FE|L*uMDoen06~O_F}kYXRuX#(^{GjJFDe#CKN|Qa$4)ea(IK?=Po{%Ju*$P9sJ)Zg!rN*s4fd^_;Z zd^{6s|EGEM$aYfY+d19VtBrx}N15)Mx=vn@aJArxy_WpYp79Xo`j7evogUlavo{8= zKW$Mt8hFZDLRDpK{Mi*y-uhaw)RpW_RrRGsRq~hoU98osl@j8ki;1M8t|V+b(mhA* ztzKL!NtaZ9gR=o6&3dPYwjEU{g{W;cUKxB7d?`;3CN5U7G{y$fq|YO**I z&r4OFZPwd7x0Af^l||QPdmud%9h<|*1xX+&kspE4^4UQ}!m=?~5+}H3^!e#=_ICKl zHf87aPGP{B^3gedkRE&M?hX5e6JeRefArYhi>@6@o?xH$e{~6X?_ZQCPpHAqyy*{9 zEwurqUVkGF?KKOJpNzMQ$?y^=+6A{&S8GMX`(gx3tjdS@Ye+X=BfV8_>%~kmzRO0* zXw1qx*)g%+T_hnXoitJhodKXY7OdB$oRQFSAJ;*$_> zZ{WBLz(Q!K!h)!}-2l?)71GmvP@ke-txJw0xuqG#O$(odud3yTQIDPs+SeWkyL5}Z zY5Bw_M&?$FwJAh^O`p%z)mxWJH4OLAC_w=S^SKihaWyyt@s|BZD5k-wTQCc1rA^Iu z8Cp62p3XA(wR0kr5%wsa{!-P*$US{(k@|wpEr_DzBgs$Mnm*Bs_ii|q_A-0>Y=20B zl}8t+%C#LAMqre?`(PLMat;R8lU_0Q82*uA^o21z{m4UV`^lTDAOG2X|BZe$=w1&< zkNEt~J;-Z(Q^u`+>?1&RcQ|EbbE`F;9e-LFcK)GnVM8OOJKB`N)A$FMKG+8hRM9$f zbOg{kB|@OdQ&^8l!isrs!o*<)D1lI-X*Pmt!Y&oSU8ZX(tE5*~Yu7~Qaj$Yz>~=+w zVaaoO#~|qdO)%abz6SfI0S7T*Qm`V;*ZqxKuqGtgON1yljL{F_g64m zo++!i#r+Fq2+YM=dh_r9?7T1Mn$Xl4=AbKdS3uG8OggQesVEf+E-*+go~z_kXO+!9 zwz&)F$b2>yEk0Lvba6eAL517|RzFECQ`GS<|4K@8Q&tj5sR0K4uBwVU7R?%ZR+Jfn zDKg|oEY(x;==4#6pu69y+)*A@pKegfqc3gXo{#CARtFVI_ zd&oc^t&W`^HbYu99Zl68Tzv0tOyOgO+S~_GdUElVXu0w~!mf_9Lm0A9Xs)&a={UBO zVm-OkacV2f_-ip)-!qbWf&2&1F_*f|nr4c3np<_sDr$=|?0eFBur{Zv?Z+N-R1&hx zAp6|r^NTePYRI#5Zew&g%0d@$Q{_%!Tv$Ch;Ji&;V~qU z%(1iwUxA9N2eyyUmugSdvG4IL@jJP@$t=490cdgoQd~6r=xv$15GP?v#n5!7I6@kL zcqot#V7r<`RZxm}No_=mguvSpU#AqQ4H4@G1?TAa3)r#SS!>tDW!lBBFz8}5Suz(* zE)7Eu=WdKrdCj1%30(J4I<95F;QIAza4@^APiFa*8iWZpnXvh;dO3nC$KSefQT`53 zJp9E@|F3Z2D*gC6>sen=CcDS_?#73d&UxG3#KUBhmQ63*&0>c-b^F5de~4%^-z2eE z1VdtzwwlkOYa&7+zWY~-Da*BgGt!rbzE_oRMIw2~AoQva-Y;XOlE*oMZyG)CCAIvffEt3EPvI>P)qvTEZ|Hw&rCsweVO|pYhy?2L{T(tFtKvu ze`f-aG3S}Y{Rp9N5_dL9 zE+FMM%8PT=Oo;8!TK5j;emVuvNcnL44$#Vf9iPu^YkZ7xF*qLz9XX1Tdhy-z{3((6 z($KcL60Kuhy~29CJg^I8meWtjYZ;&T0$ax6gj76GUvECXCvjkNT?3n~e`mkq($~>G z45CJ@%Y#~~G`{uZG8lbIH8SIphSVaaE-qc3YcVJsDOLZ-6Cllbbd=S>Oxim|;TPK$ z<~CyJxPLv&f16iDOy<@tZzL|MOJh~nCYjjkSza(L1^fPY`gKs$Xr0{0tPR}?#@g2|iY>-Z1!T>+CDFVnu`#DaLkYC>sU8(eG;EH+i*-pnJPm^Q^?^%((a_WqT&N$G z7+TB}m5Za?4Fd%(CL2|~6Qf2El4=Qa;N}XU}MX%DA+SQDrEC3eb3*Ay+&_| zylHJSUfJ0(Q!d|Dw>;t<2P5%$QAOVGnl?pTC018T4HG6(YVBOa#}2PuBnn-7n%l+< zJi=~p&3U-xyFpy|%CQ|<$CS3#aJDpde}BaJ;x@j0A^s5@`B|IzFyUv8M9Ry1Sg#CD zFzDbm_G0&Yn=DNM;c1xD{zb_p1Y6lUerKu7GJUzml&*7rEq2AAzh`#@!I06{KSjo* zk+k<}Y9kCk0?I3<4EwX8Zq#V`9Pd6*a22yK{KN-&lIBUCRWw|P`@|P{ru$y2a7O^=Hhi#O0EuH5i0`_|q{a_fWLXqf{Zl|BnB6OdZ2l?zC9ee?9OQTYjnxG*Eahxa zzyNINvc9_5{;|a;_JYi-GkmS+gW&|9+(4JthX~z1ANbsWb|G@+|8aW2Q&+}xINxb} zxzfSi?}hazzDkcilxk_UdYk1@v9(w&?i~u>((ydP%{TMG0v@Kt5u$zKYY@vndtb}Z zs9kxF>t0k^^b3jp^8m_A6*Rm@^_+w6A&E67Pge7iUyt99&3P^z+X2^)e%jSs>zRQw zhNb7q+5R#UKXFw>MaN>n;m#GMTi;`PJKywl)z6r>Iq1_gyV;OSd!ix)?p`x3zp7TcAg|{joVg&zVBan$Y(Rgns#)(uB+SG{?GMQBTjm>pA_VwmQS% zhZmZTo1=MG78Be7bJJ)w)_yDIt${6>8X;1>(w%lsK=3F$4{0xKO&*LH9Kk-0RnS0_ zK=)?yjY1E}SCh%$a-FA0*!uqW7y4@%(wlSF3~x$wo+rQm#D`)|SymBe19S!!s>m;! zJk$45#G_W6Qp^@g!mClQ|3snb3uuR)u#zL`W-5K%&mCiL+JLiC_g%0LP^YG7+=CVF z^=e8t*Mk(?Y)eQ#OlZqLF-j8DkM;{`O+2c%EUD|sc=Zk43-HXmM<85Sgt4#qOm$Kw z`n_w5>Ki?FtV=j1lFcaLjOwfoKA@cI4R=-c=V>UzCbjE4?rS{lQ<5<8bCm2;r) z$v{=Zc{NYh24FL!1z0U_8<(`~M&1mozQ=Ca=ugxozcfnWnXw9$ud1`&#=y4Vx*7M{ z{(OF@`_)nModTAONkD)JulNmPN zo&$!a239=`WUK^!htOo{sm5^8NH{oLj@}Jn+BB{#M$_nUE3y{F+V;fnSh*@pf%Gs0 zbqt+uJdxCu)cfP@ukY_z^+h+GS?a^yCXF=<+E%=Q=HkArs*;R;T(%XF0=E%28&e;R zu-I@(F3wx{6_+q=)!Jm5wZ1L}uU2-Q4YVBw(olp`1AuwU zFeEUg=4NLNgE9Lf6a0qV-`!l8o&C4#%zt+NRX5|JD^`q`6?tf^sZLN2&*}nQRnRw` zk;XSDMGj0LY$~hEZ!uf#N9}*Rx&EL1xBr6cs(HGqXNE07cV6pSIucb{!fXzd+#aC) zK_Ynyb6@K#PYHz|r(Ey

=cWQXKBM7UvgRm;7X4R29_bCJV=0sHk1kMLl3=Lb8@coOKtg=BndyMZA zrD0L3jUczTD_>Uz~y|2bmo{jgq+LiJ!9sXdC)I&iqDw& zWXu(daVcs-vLJNYLMh?D3sg{@}H zWFZ>9_7ZZR*@rD!z8pBA-;w(PbAUP?G@!+z@9TT$AIuNXKbjw*1(mIqm#VeARITNu zs$hxot)Q2x)xA{B_EI(5OVw;IRkOWR&Gu3?+e_7Bk*ZDj8m_5rsHZ3f-kHdp!f zILirIL3D#|VL3@FxNgubk-~XM;kN93pKMQ7O>H|Qa;}%ieBp;g&J~G_?@&8bHL%0% zjjEZ*Wn92}Bm6`=Q5kSe?^iK!O&=a@>&PmJybd{kgOQbyNVnB~WK@jM1)ClxA=rUVIYBSLy z)5OlQvsAXAqmt%}oZf5>Mk-tcPU;-;oonY3W}cl#_ysn^{(X%cU$=0JT?isob+A+4 zAjdb+%aUOi*+nXor^Q?3vcxV?RqRr`RMiHHZW*~Rx647WT4CW9yV9;yb$Oz&j|cYZ zd+Jzuu3&>vhrQOWrTm}pm136tl(PkOc*d;9-e@;cqfMMBHFmSzOpaUZ7Rm;W9ck{c zJ5+u2ne8MNXm*rvkKIG=dqG{xvEZ2C{x43T7TEoEKPCB&lc>fXum?!zASY6d{oZ~L zU2e-sGq8cmtvC~F+)3^v=+>N#HE70c1KpN0vc{e4 zPKIvh+CjH>?V&rk4$!B#Q=m^pV@}MS=1!xIr@Pak&v0izpXtto?&vx~cXFMe&vIu$ zpN;mMm^;Uv1AVSL7rL|S4BZ8dIWc#hI}iGNcRut54&;8G>)mLp?yftn)Wh|F?&*3$ z_j0|Ud!sYQqRa9U=u6R+V_hHD2fDB03FR(xmqGV){h<51{?M1Z%b~#<#AcSDvSpTl zJsL#495;qD8(D5F$a*<$9N&*-x$z+E<+xk;jxtL@?jGDhDC86}2!+I&>?SMc9^?G5aZ?=gZuhu*oO(Thjv9^D&8d_D%tG{-KjWTJ z_1ttf9UdrhMfieWh+XE&NMWX%Nt&P-VuNC+3f+tDMcn7OIoNaETtd!s^FRT7*}Y5( zpc|4V=!TSbp<77p-T)u4zI&4sCs}S0IDz%uVz(IjE%z2$yum(H`EHq8#wn5IZaJx~ z0NpEB<}UJOEGS>OGIvo8WbUGx%G?DS97No~K_m<~h`b4CYWS~|Ro&$JZe5DBmdl%?MP$y8$a6%<02BHJ-RdrWzsA*Eb4% z97X)l)Qf^v`WuFjc#?Y*PlBiBRB7~thlEZqOTsISFrN29JI&)i{6~5_GP0hMypp^h z`3o;aS2mJMt{mQ4Qm;^Eh2u7iC-N$~V#q7GvbZvc7u~|6sdp&zL@uP?sbP|Qoh)CH zYMLYup`x)SvOq>~bf*Smwv2R6zhy*5cQ$pX=tiFvErRwKq{zoacze4_x@{r$V;2y7AYl0Z0mVS{z)t`BB4Xs9Lhq8Av-$qJc#&D!bQ9m%HPl>8^F5$c&?W3L&aX5es*ddb_bczfyak++OcYle>+GF*M=?RDPXg!5SSgz#uP;WD1^gDWuep|2BtMp2}LNC|L^io#f z+L@DCjccK|>M!&by;*N!{ceL^uRmu^Z=L=W9R+Jy-W&K^rhZz#+h5p zc=KyB*4%3Ppm%8}D}7(-uk|;2x89@oqJwE48kqL$f9vn`0ew(^k0z!cbvX^JUAZyn zVsa*CGSJ49i7uvWQ`K}d)mR(MHF@qk^fJ{jHBBuvGu1YQrj9w*)H4lCeOXUpHL0C# zZ#&pi?5XxNd%8Wto@qPUPWCK&wmrw5YdhO6tTLT%FR)$hh4vzQvF&EN+a9br^|HO~ zCH7L=$M$9Ish{m{FSl3N0rpBe&Sy~*Be zhqF30(vGsD?HD`OjEfj|q;v zd9HM;+-lxE*SL3h_k7R2?>=xJx{r7RUF$w^pSpFtg?{eVyA5um+vGO8E$$1q)os%O z@1@&$E8XdKxv$*U?i;t8x6{37h}y^d>He6FxmYZg;r{IoxP$HoQ`i0IzBf6hAXYUd zPvQU9%JkU(L9I;5k-tvuG-H0r7&q6Makj0Daoa|34oA6gu8j1Md(j~AQ8?n=I>!8N z;o$hlKPdbfjd&d(QiX5#!m$;O{8UL%p%kc%1o-tY9{2bBoRR;(9`}cj`i~jkGRniz z9m;?mel+iqag03NpE~Ac#HWvIQJq=B z)t8;De(Ymi&e`1o>}3sPA8RoCSNEYq@P0H1KB)en{-_>SkE%&(zIufnt5?-)>UH+4 z-avoOBDI(kuS?WYwTu(5E7VH03OzbI&;+=P^TuDJL1(wx!7M#ZbBDQ$U7W|w-^}05 zKg<(mD!V!VG*6kQ%{23jnQn?qF?%|tW`-#* zOJZ%zRoZN9BxYuVbijy=}aw+(G$c0P_{f1{;sWn0^S*eBRSc+x(_9>O$s z5T@HATg)Cpshz=k|026sG|jNWzl@dr6|Cs5va9Xec8z_9b^Z74hxTJu@V{XV{##bj zGhKDo#_wX)^EHlPe$vn3+m@%|eUFfy3^pnhwWe%a~Eg9SLhN0=}r2B7D+&uk|lZzyAixdvT{*P0>b zYOlF4LwM3`qy^RxQ{D-@=D>`0XoecAo>nu_<+oh@psTZ&*$sV$snJLKD-; z^g`#}-;m%N%wBe#TJyB;##448`#w|9TesS7aM`TGcXc4-;dqiSiM;5*y*t@ zu^zGhvAbg>vG-%;87*j0G?XxtLMM%CW$va9#j@w1%0T=us>n6ME(P(!s1nE8Hnr2N zLq7vmCKS7a#NY-elvQk_UuH#H{L<5XKti#1AnD$ZUBuo2>9T7e={}A~^OUaHLf6}!khgk8c6H;-9y16BuG zvLAmc>+}}aV)KZ^VpoIkhOZzfYY*&F^JnZ5_6DLBod;D6A7qoxF{+*^m;W%bwCH^3 zGWVnp8!x?;_t;{a?fn;sKev>=x_5cayBu1kh4C`|x5Q;XM9L)X&FKm3QcjXcnV!Oq zdSelE8T$!R!zkwu_*cwc0zT}+5j(Awghx1s;eFSNFZ(Of)8nz>4_`((*-*?rgp@j+ zPlOYS+3k{&O~Ec=w@X?}`n1G}OUQrIp+f$Xx<~w1>gz854oz3;RLriGr29|oB6h8$ zR2{KP+~2UnbbZTszLWO!Irwp%;2QTV?#1RypVRX`OvFz+yw5K0^MdyYYr9e0*~5|a zQu%4G55LccpCi6*GB#Lw*d>Rwi}Xh^yJAv)YDxKfVwW1>?h-c@J1qapP^nxL$bYMS z9x_tP*nyI;QD4Tqe^u}Qs`zsY7v*}F*S$-64@sSi-4O9HGM=O46>=~&c-4(bLyQ{Iw+?CixZV+~_%djxf`&H+)db}Za8*&n%Cn}>_%aixf`*I z+|AgfZUi>Fg~;G(P{Ql^oR~R*=f{bhz>9Grr~~rtRL=W=E5#Wfw16=SI)+(LPxeK6 zGxw1beFKqGGUsWjCUCV<_i~-Y{AVKPibRWY8)iU%M2<~XkAn-ehU*maj6b8`5WmKZ z7FJm`3|-}1VFtQSGhqfXcJ)bb_D?=@Wl9D(rye*XE zbh-KqRHAlTbUkZYEY)q4cN5*w$#CdV=0bmSq7CYCZl;xJM^3n8u+!Nt(3y;FP| za7yO_PWN;*7nzIA_2ve1qq)i4Y=)Z=gv#N}R}1>IJuM&3WxI0@OJ=Ugv^h~=Mw(GZ z%4X^1?&hWx-_~fGyV6``t}y+~<)*(GXa<% zQJG<880T(Ao6+n)|ItmN9LfAh(M>X=asQKh$UW>HF~i)W?$4yvi`2T4@=#UR^d-%1 zq-f$P_A^)UR7*>RvJ6fs*#Js)CES^+BUv;g*CdwAO-L^)F?mp4N|{m$DFY=<%fUV3 z9!-X!oPYLfRfX`xu|CcEtZmjJmT+9SYgZ2!O-{Y(vA)zIlXkm`Q&K~zRgFaIaIc=g zKlJVqGvo!Ccgieuxc@IZ2CRJQNqQ3Ai}eyxZD^X)!pRbLVkLEneoHULr;%yQoUW;9 jMwn!Xy7a=?>bK~2A8*bv=bFx@i#gAnPs-9J^wj?V$Lg${ literal 0 HcmV?d00001 diff --git a/react/src/assets/fonts/Roboto/Roboto-BoldItalic.ttf b/react/src/assets/fonts/Roboto/Roboto-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b4e22103936078c50cdc7ddf7a3e2d51dd2d3c44 GIT binary patch literal 174520 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�alv#6BE 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 literal 0 HcmV?d00001 diff --git a/react/src/assets/fonts/Roboto/Roboto-Italic.ttf b/react/src/assets/fonts/Roboto/Roboto-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5b390ff950e6539bdfd4d84265fdb01e0c35f291 GIT binary patch literal 173516 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