Browse Source

Merge branch 'develop'

Vincent GUFFON 5 years ago
parent
commit
62cc960b61

+ 12 - 5
.env.skeleton

@@ -2,7 +2,7 @@
 OS=MAC
 
 #Composer hash for instal (check validity here : https://getcomposer.org/download/)
-COMPOSER_HASH=756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3
+COMPOSER_HASH=e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806
 
 #LetsEncrypt
 EMAIL=vincent.guffon@2iopenservice.com
@@ -15,13 +15,18 @@ ES_VIRTUAL_HOST=local.elasticsearch.opentalent.fr
 ES_PORT=9200
 
 #API
-API_VIRTUAL_HOST=local.api.opentalent.fr
+API_VIRTUAL_HOST=local.api.opentalent.fr,local.new.api.opentalent.fr
 
 #ADMIN
 ADMIN_VIRTUAL_HOST=local.admin.opentalent.fr
 ADMIN_PORT=3000
 ADMIN_REPORT_PORT=3001
 
+#ADMIN2
+ADMIN2_VIRTUAL_HOST=local.admin2.opentalent.fr
+ADMIN2_PORT=3002
+ADMIN2_REPORT_PORT=3003
+
 #PORTAIL
 PORTAIL_VIRTUAL_HOST=local.opentalent.fr
 
@@ -42,11 +47,13 @@ MAILCATCHER_PORT=1080
 THUMBOR_VIRTUAL_HOST=local.thumbor.opentalent.fr
 
 #Black Fire
-BLACK_FIRE_ID=97e9ee98-0703-478e-a298-6320bd432393
-BLACK_FIRE_TOKEN=31c026c1ee937f59834cec4da0d019d946ce3e3dd02119ab621e59d1b52a20e9
+BLACKFIRE_CLIENT_ID=988fcba8-552d-48df-a9c2-035c76535b69
+BLACKFIRE_CLIENT_TOKEN=8cfbeb263d044da9678dc2612531504da3790c308da7448e35724a5da91c136f
+BLACKFIRE_SERVER_ID=1171e53b-459b-41da-a292-80ff68cee8c2
+BLACKFIRE_SERVER_TOKEN=dbd1cfbea015fe83cccfc189a36ca3c16f3a1b43b94f50032a15e41e53548e8b
 BLACK_FIRE_VIRTUAL_HOST=local.blackfire.opentalent.fr
 BLACK_FIRE_PORT=8707
 
 #Metabase
 METABASE_VIRTUAL_HOST=local.metabase.opentalent.fr
-METABASE_PORT=3000
+METABASE_PORT=3000

+ 144 - 68
docker-compose.yaml

@@ -1,7 +1,8 @@
 version: '3.3'
+
 services:
   nginx-proxy:
-    hostname: nginx
+    hostname: nginx-proxy
     container_name: nginx-proxy
     build:
       context: .
@@ -14,6 +15,22 @@ services:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /etc/nginx/vhost.d
       - /usr/share/nginx/html
+
+  nginx:
+    hostname: nginx
+    container_name: nginx
+    image: nginx:alpine
+    volumes:
+      - ./apps/api/public:/var/www/html/public:cached
+      - ./apps/opentalent-platform/web:/var/www/html/web:cached
+      - ./docker/nginx/site.conf:/etc/nginx/conf.d/default.conf:cached
+    environment:
+      - VIRTUAL_HOST=${API_VIRTUAL_HOST}
+      - HTTPS_METHOD=noredirect
+    depends_on:
+      - php70
+      - php74
+
   db:
     hostname: db
     container_name: mariaDb
@@ -32,46 +49,10 @@ services:
       - ./apps/metabase:/usr/metabase:cached
     environment:
       MYSQL_ROOT_PASSWORD: ${MYSQL_PASS}
-  phpmyadmin:
-    hostname: phpmyadmin
-    container_name: phpmyadmin
-    image: phpmyadmin/phpmyadmin
-    environment:
-      - VIRTUAL_HOST=${PHPMYADMIN_VIRTUAL_HOST}
-    restart: always
-    depends_on:
-      - db
-  es:
-    hostname: es
-    container_name: es
-    image: elasticsearch:2.4.6-alpine
-    restart: always
-    volumes:
-      - ./elasticsearchdata:/usr/share/elasticsearch/data
-      - ./docker/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:cached
-    environment:
-      - cluster.name=docker-cluster
-      - bootstrap.memory_lock=true
-      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
-      - VIRTUAL_HOST=${ES_VIRTUAL_HOST}
-      - VIRTUAL_PORT=${ES_PORT}
-    ulimits:
-      memlock:
-        soft: -1
-        hard: -1
-  thumbor:
-    hostname: thumbor
-    container_name: thumbor
-    image: minimalcompact/thumbor
-    restart: always
-    environment:
-      - VIRTUAL_HOST=${THUMBOR_VIRTUAL_HOST}
-      - LOADER=thumbor.loaders.file_loader
-    #    volumes:
-    #      - ./apps/opentalent-platform/web/files:/data/loader:cached
-  php:
-    hostname: back
-    container_name: php
+
+  php70:
+    hostname: apiLegacy
+    container_name: php70
     build:
       context: .
       dockerfile: docker/php/Dockerfile
@@ -85,28 +66,49 @@ services:
       # Version Symfony 2
       - appdata:/var/www/html/app/cache/
       - appdata:/var/www/html/app/logs/
+      # ATTENTION : LES VENDROS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
+      # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated.
+      - appVendor:/var/www/html/vendor/
       - ./useruploaddata:/var/www/html/fileadmin/user_upload:cached
       # Le code sera surtout modifié en dehors du container, donc la consistence est prioritairement dans ce sens
       - ./apps/opentalent-platform:/var/www/html:cached
       # A l'inverse, les vendors seront surtout modifiés dans le container
-      - ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated
+#      - ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated
     depends_on:
       - db
       - es
       - thumbor
       - nginx-proxy
-  api:
+
+  php74:
     hostname: api
-    container_name: api
-    image: nginx:alpine
-    volumes:
-      - ./apps/opentalent-platform/web:/var/www/html/web:cached
-      - ./docker/nginx/site.conf:/etc/nginx/conf.d/default.conf:cached
+    container_name: php74
+    build:
+      context: .
+      dockerfile: docker/php7.4/Dockerfile
+      args:
+        - COMPOSER_HASH=${COMPOSER_HASH}
+        - OS=${OS}
+    restart: always
     environment:
-      - VIRTUAL_HOST=${API_VIRTUAL_HOST}
-      - HTTPS_METHOD=noredirect
+      - PHP_IDE_CONFIG=serverName=api
+    volumes:
+      # Le code sera surtout modifié en dehors du container, donc la consistence est prioritairement dans ce sens
+      - ./apps/api:/var/www/html:cached
+      # Version Symfony 5
+      - appdata5:/var/www/html/var/cache/
+      - appdata5:/var/www/html/var/logs/
+      # ATTENTION : LES VENDROS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
+      # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/api/New/vendor:/var/www/html/vendor:delegated.
+      - appVendor5:/var/www/html/vendor/
+      # A l'inverse, les vendors seront surtout modifiés dans le container
+      #- ./apps/api/New/vendor:/var/www/html/vendor:delegated
     depends_on:
-      - php
+      - db
+      - es
+      - thumbor
+      - nginx-proxy
+
   admin:
     hostname: front
     container_name: admin
@@ -125,7 +127,28 @@ services:
       - NODE_ENV=docker
       - HTTPS_METHOD=noredirect
     depends_on:
-      - api
+      - nginx
+
+  admin2:
+    hostname: front2
+    container_name: admin2
+    build:
+      context: .
+      dockerfile: docker/admin/Dockerfile
+    volumes:
+      - ./apps/admin:/home/workspace/admin:rw,cached
+    tty: true
+    ports:
+      - 3002:3002
+      - 3003:3003
+    environment:
+      - VIRTUAL_HOST=${ADMIN2_VIRTUAL_HOST}
+      - VIRTUAL_PORT=${ADMIN2_PORT}
+      - NODE_ENV=docker
+      - HTTPS_METHOD=noredirect
+    depends_on:
+      - nginx
+
   portail:
     hostname: portail
     container_name: portail
@@ -150,7 +173,8 @@ services:
       - VIRTUAL_HOST=${PORTAIL_VIRTUAL_HOST}
       - HTTPS_METHOD=noredirect
     depends_on:
-      - api
+      - nginx
+
   typo3:
     hostname: typo3
     container_name: typo3
@@ -168,7 +192,8 @@ services:
       - HTTPS_METHOD=noredirect
       - PHP_IDE_CONFIG=servername=typo3
     depends_on:
-      - api
+      - nginx
+
   adminassos:
     hostname: v59
     container_name: adminassos
@@ -186,7 +211,61 @@ services:
     environment:
       - VIRTUAL_HOST=${V59_VIRTUAL_HOST}
     depends_on:
-      - api
+      - nginx
+
+  metabase:
+    hostname: metabase
+    image: metabase/metabase
+    restart: always
+    volumes:
+      - ./metabase-data:/metabase-data
+    environment:
+      - MB_DB_FILE=./metabase-data/metabase.db
+      - VIRTUAL_HOST=${METABASE_VIRTUAL_HOST}
+      - VIRTUAL_PORT=${METABASE_PORT}
+    depends_on:
+      - db
+
+  es:
+    hostname: es
+    container_name: es
+    image: elasticsearch:2.4.6-alpine
+    restart: always
+    volumes:
+      - ./elasticsearchdata:/usr/share/elasticsearch/data
+      - ./docker/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:cached
+    environment:
+      - cluster.name=docker-cluster
+      - bootstrap.memory_lock=true
+      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+      - VIRTUAL_HOST=${ES_VIRTUAL_HOST}
+      - VIRTUAL_PORT=${ES_PORT}
+    ulimits:
+      memlock:
+        soft: -1
+        hard: -1
+
+  thumbor:
+    hostname: thumbor
+    container_name: thumbor
+    image: minimalcompact/thumbor
+    restart: always
+    environment:
+      - VIRTUAL_HOST=${THUMBOR_VIRTUAL_HOST}
+      - LOADER=thumbor.loaders.file_loader
+    #    volumes:
+    #      - ./apps/opentalent-platform/web/files:/data/loader:cached
+
+  phpmyadmin:
+    hostname: phpmyadmin
+    container_name: phpmyadmin
+    image: phpmyadmin/phpmyadmin
+    environment:
+      - VIRTUAL_HOST=${PHPMYADMIN_VIRTUAL_HOST}
+    restart: always
+    depends_on:
+      - db
+
   mailcatcher:
     hostname: mailcatcher
     container_name: mailcatcher
@@ -197,8 +276,10 @@ services:
     environment:
       - VIRTUAL_HOST=${MAILCATCHER_VIRTUAL_HOST}
       - VIRTUAL_PORT=${MAILCATCHER_PORT}
+      - HTTPS_METHOD=noredirect
     depends_on:
       - nginx-proxy
+
   blackfire:
     hostname: blackfire
     container_name: blackfire
@@ -212,22 +293,17 @@ services:
       - VIRTUAL_HOST=${BLACK_FIRE_VIRTUAL_HOST}
       - VIRTUAL_PORT=${BLACK_FIRE_PORT}
     depends_on:
-      - php
-  metabase:
-    hostname: metabase
-    image: metabase/metabase
-    restart: always
-    volumes:
-      - ./metabase-data:/metabase-data
-    environment:
-      - MB_DB_FILE=./metabase-data/metabase.db
-      - VIRTUAL_HOST=${METABASE_VIRTUAL_HOST}
-      - VIRTUAL_PORT=${METABASE_PORT}
-    depends_on:
-      - db
+      - php70
+      - php74
+
 volumes:
   mysqldata: ~
   elasticsearchdata: ~
   metabase-data: ~
   # On rajoute un volume (de données non accessibles en dehors)
   appdata: ~
+  appVendor: ~
+  appdata5: ~
+  appVendor5: ~
+  adminBower: ~
+  adminNode: ~

+ 13 - 0
docker/admin/Dockerfile

@@ -0,0 +1,13 @@
+    # Pull base image.
+FROM node:14.5.0-buster
+
+ENV WORKDIR /home/workspace
+
+# Define working directory.
+WORKDIR ${WORKDIR}
+
+RUN npm install npm; \
+    npm i -g create-nuxt-app; \
+    rm -rf /usr/local/lib/node_modules/npm;
+
+CMD node

+ 3 - 4
docker/adminassos/Dockerfile

@@ -61,7 +61,6 @@ RUN ln -s /var/source/opentalent/opentalent; \
     mkdir -p /var/log/opentalent; \
     chown www-data:www-data -R /var/log/opentalent;
 
-CMD cd /var/www/opentalent/opentalent && mkdir -p config && cd config \
-    && for f in $(ls -d /var/source/config/config/*); do ln -fs $f; done && cd .. \
-    && chown www-data:www-data -R config \
-    && apache2-foreground
+COPY ./docker/adminassos/entrypoint.sh /entrypoint.sh
+RUN chmod +x /entrypoint.sh
+ENTRYPOINT ["/entrypoint.sh"]

+ 5 - 0
docker/adminassos/entrypoint.sh

@@ -0,0 +1,5 @@
+#!/bin/bash
+cd /var/www/opentalent/opentalent && mkdir -p config && cd config \
+    && for f in $(ls -d /var/source/config/config/*); do ln -fs $f; done && cd .. \
+    && chown www-data:www-data -R config \
+    && apache2-foreground

+ 6 - 0
docker/nginx/certs/ssl_keys.sh

@@ -14,6 +14,9 @@ cp docker/nginx/certs/default.crt docker/nginx/certs/local.phpmyadmin.opentalent
 cp docker/nginx/certs/default.key docker/nginx/certs/local.api.opentalent.fr.key
 cp docker/nginx/certs/default.crt docker/nginx/certs/local.api.opentalent.fr.crt
 
+cp docker/nginx/certs/default.key docker/nginx/certs/local.new.api.opentalent.fr.key
+cp docker/nginx/certs/default.crt docker/nginx/certs/local.new.api.opentalent.fr.crt
+
 cp docker/nginx/certs/default.key docker/nginx/certs/local.elasticsearch.opentalent.fr.key
 cp docker/nginx/certs/default.crt docker/nginx/certs/local.elasticsearch.opentalent.fr.crt
 
@@ -26,6 +29,9 @@ cp docker/nginx/certs/default.crt docker/nginx/certs/local.v59.opentalent.fr.crt
 cp docker/nginx/certs/default.key docker/nginx/certs/local.admin.opentalent.fr.key
 cp docker/nginx/certs/default.crt docker/nginx/certs/local.admin.opentalent.fr.crt
 
+cp docker/nginx/certs/default.key docker/nginx/certs/local.admin2.opentalent.fr.key
+cp docker/nginx/certs/default.crt docker/nginx/certs/local.admin2.opentalent.fr.crt
+
 cp docker/nginx/certs/default.key docker/nginx/certs/local.thumbor.opentalent.fr.key
 cp docker/nginx/certs/default.crt docker/nginx/certs/local.thumbor.opentalent.fr.crt
 

+ 58 - 1
docker/nginx/site.conf

@@ -1,7 +1,63 @@
 server {
+    server_name local.new.api.opentalent.fr;
+    root /var/www/html/public;
+
+    location / {
+    add_header 'Access-Control-Allow-Origin' '*';
+
+        # try to serve file directly, fallback to index.php
+        try_files $uri /index.php$is_args$args;
+    }
+
+    # optionally disable falling back to PHP script for the asset directories;
+    # nginx will return a 404 error when files are not found instead of passing the
+    # request to Symfony (improves performance but Symfony's 404 page is not displayed)
+    # location /bundles {
+    #     try_files $uri =404;
+    # }
+
+    location ~ ^/index\.php(/|$) {
+        fastcgi_pass php74:9000;
+        fastcgi_split_path_info ^(.+\.php)(/.*)$;
+        include fastcgi_params;
+
+        # optionally set the value of the environment variables used in the application
+        # fastcgi_param APP_ENV prod;
+        # fastcgi_param APP_SECRET <app-secret-id>;
+        # fastcgi_param DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name";
+
+        # When you are using symlinks to link the document root to the
+        # current version of your application, you should pass the real
+        # application path instead of the path to the symlink to PHP
+        # FPM.
+        # Otherwise, PHP's OPcache may not properly detect changes to
+        # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
+        # for more information).
+        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
+        fastcgi_param DOCUMENT_ROOT $realpath_root;
+        # Prevents URIs that include the front controller. This will 404:
+        # http://domain.tld/index.php/some-path
+        # Remove the internal directive to allow URIs like this
+        internal;
+    }
+
+    # return 404 for all other php files not matching the front controller
+    # this prevents access to other php files you don't want to be accessible.
+    location ~ \.php$ {
+        return 404;
+    }
+
+    error_log /var/log/nginx/project_error.log;
+    access_log /var/log/nginx/project_access.log;
+}
+
+server {
+    server_name local.api.opentalent.fr;
     root /var/www/html/web;
 
     location / {
+        add_header 'Access-Control-Allow-Origin' '*';
+
         # try to serve file directly, fallback to app.php
         try_files $uri /app_dev.php$is_args$args;
 
@@ -12,7 +68,7 @@ server {
     # This rule should only be placed on your development environment
     # In production, don't include this and don't deploy app_dev.php or config.php
     location ~ ^/(app_dev|config)\.php(/|$) {
-        fastcgi_pass php:9000;
+        fastcgi_pass php70:9000;
         fastcgi_split_path_info ^(.+\.php)(/.*)$;
         include fastcgi_params;
         # When you are using symlinks to link the document root to the
@@ -24,6 +80,7 @@ server {
         # for more information).
         fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
         fastcgi_param DOCUMENT_ROOT $realpath_root;
+        proxy_read_timeout 6000;
 
         http2_push_preload on;
     }

+ 4 - 3
docker/node/Dockerfile

@@ -6,7 +6,7 @@ ENV WORKDIR /home/workspace
 # Define working directory.
 WORKDIR ${WORKDIR}
 
-RUN npm install npm@3.5.2; \
+RUN npm install npm@5.3.0; \
     rm -rf /usr/local/lib/node_modules/npm; \
     mv node_modules/npm /usr/local/lib/node_modules/npm; \
     printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list; \
@@ -23,5 +23,6 @@ RUN npm install npm@3.5.2; \
 
 RUN npm install;
 
-CMD cd modules/ruler && jison -t rule.jison && babel --presets=es2015 model/**/*.js model/*.js -d lib && npm link && cd ../.. && npm link @opentalent/ruler \
-    && node
+#CMD cd modules/ruler && jison -t rule.jison && babel --presets=es2015 model/**/*.js model/*.js -d lib && npm link && cd ../.. && npm link @opentalent/ruler \
+#    && node
+CMD node

+ 10 - 11
docker/php/Dockerfile

@@ -44,19 +44,18 @@ RUN sed 's/main$/main universe/' -i /etc/apt/sources.list; \
 
 ########   BLACKFIRE #########
 # If you use Alpine, you need to set this value to "alpine"
-ENV current_os=linux
-RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;"); \
-    curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/$current_os/amd64/$version; \
-    mkdir -p /tmp/blackfire; \
-    tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire; \
-    mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so; \
-    printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini; \
-    rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz;
+RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
+    && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \
+    && mkdir -p /tmp/blackfire \
+    && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire \
+    && mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so \
+    && printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini \
+    && rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz
 ########   BLACKFIRE #########
 
 ######## XDebug ########
-RUN pecl install xdebug-2.7.2; \
-    docker-php-ext-enable xdebug;
+#RUN pecl install xdebug-2.7.2; \
+#    docker-php-ext-enable xdebug;
 
 ######## For create organization ########
 RUN mkdir -p /env;
@@ -67,7 +66,7 @@ COPY /.ssh /root/.ssh
 COPY /docker/php/conf/memory.ini /usr/local/etc/php/conf.d
 COPY /docker/php/conf/apc.ini /usr/local/etc/php/conf.d
 COPY /docker/php/conf/execution_time.ini /usr/local/etc/php/conf.d
-COPY /docker/php/conf/xdebug.ini /usr/local/etc/php/conf.d
+#COPY /docker/php/conf/xdebug.ini /usr/local/etc/php/conf.d
 COPY /docker/adminassos/conf/nocturial.xml /home/config_oa/
 
 ######## FACL and Start ########

+ 7 - 1
docker/php/conf/apc.ini

@@ -1,2 +1,8 @@
 extension=apcu.so
-extension=apc.so
+extension=apc.so
+
+;opcache.memory_consumption=256
+;opcache.max_accelerated_files=20000
+;;opcache.validate_timestamps=0
+;realpath_cache_size=4096K
+;realpath_cache_ttl=600

+ 1 - 1
docker/php/conf/memory.ini

@@ -1 +1 @@
-memory_limit=4096M
+memory_limit=2G

+ 52 - 0
docker/php7.4/Dockerfile

@@ -0,0 +1,52 @@
+# ./docker/php/Dockerfile
+FROM php:7.4-fpm
+
+ARG COMPOSER_HASH
+ARG OS
+
+RUN sed 's/main$/main universe/' -i /etc/apt/sources.list; \
+    apt-get update; \
+    ### WKHTMLTOPDF
+    if [ "x$OS" = "MAC" ] ; then apt-get install -y --no-install-recommends openssh-server build-essential xorg iputils-ping libssl-dev libxrender-dev wget gdebi ca-certificates wget xz-utils libxrender1 libxt6 libxtst6 fontconfig zlib1g-dev libpng-dev libicu-dev g++; \
+    else DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y openssh-server build-essential xorg iputils-ping libssl-dev libxrender-dev wget gdebi ca-certificates wget xz-utils libxrender1 libxt6 libxtst6 fontconfig zlib1g-dev libpng-dev libicu-dev g++; \
+    fi; \
+    wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u12_amd64.deb; \
+        dpkg -i libssl1.0.0_1.0.1t-1+deb8u12_amd64.deb; \
+        wget http://ftp.de.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u3_amd64.deb; \
+        dpkg -i libpng12-0_1.2.50-2+deb8u3_amd64.deb; \
+        dpkg -i libpng12-0_1.2.50-2+deb8u3_amd64.deb; \
+        wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.jessie_amd64.deb; \
+        dpkg -i wkhtmltox_0.12.5-1.jessie_amd64.deb; \
+        ## ELASTICADUMP
+        curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -; \
+        apt-get install nodejs -y; \
+        npm install elasticdump@3.3.7 -g; \
+    ## COMPOSER
+    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"; \
+    php -r "if (hash_file('sha384', 'composer-setup.php') === '$COMPOSER_HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"; \
+    php composer-setup.php; \
+    php -r "unlink('composer-setup.php');"; \
+    mv composer.phar /usr/local/bin/composer; \
+    ## GIT, NANO, ACL, PROPCS, LIBZIP, IMAGICK
+    apt-get install -y --no-install-recommends git nano acl procps libzip-dev zip libmagickwand-dev imagemagick libtidy-dev; \
+    ## OP CACHE, PDO, BC MATH, CALENDAR, TODY
+    docker-php-ext-configure zip --with-libzip; \
+    docker-php-ext-configure intl; \
+    docker-php-ext-install opcache pdo_mysql mbstring exif bcmath calendar gd intl tidy zip; \
+    docker-php-ext-enable exif; \
+    docker-php-ext-enable tidy; \
+    # IMAGICK
+    pecl install imagick-3.4.3RC2; \
+    docker-php-ext-enable imagick; \
+    ## APCU
+    pecl install apcu-5.1.17; \
+    pecl install apcu_bc;
+
+######## Php conf ########
+COPY /.ssh /root/.ssh
+COPY /docker/php7.4/conf/memory.ini /usr/local/etc/php/conf.d
+COPY /docker/php7.4/conf/apc.ini /usr/local/etc/php/conf.d
+COPY /docker/php7.4/conf/execution_time.ini /usr/local/etc/php/conf.d
+######## FACL and Start ########
+
+WORKDIR /var/www/html

+ 8 - 0
docker/php7.4/conf/apc.ini

@@ -0,0 +1,8 @@
+extension=apcu.so
+extension=apc.so
+
+;opcache.memory_consumption=256
+;opcache.max_accelerated_files=20000
+;;opcache.validate_timestamps=0
+;realpath_cache_size=4096K
+;realpath_cache_ttl=600

+ 1 - 0
docker/php7.4/conf/execution_time.ini

@@ -0,0 +1 @@
+max_execution_time=300

+ 1 - 0
docker/php7.4/conf/memory.ini

@@ -0,0 +1 @@
+memory_limit=8G

+ 7 - 0
docker/php7.4/conf/xdebug.ini

@@ -0,0 +1,7 @@
+[xdebug]
+xdebug.remote_enable = 1
+xdebug.remote_autostart = 1
+xdebug.remote_connect_back = 0
+xdebug.remote_host = host.docker.internal
+xdebug.remote_host = dev
+xdebug.idekey=PHPSTORM

+ 0 - 0
docker/typo3/conf/LocalConfiguration.php