Ver Fonte

add python39 docker;review typo3 docker install

Olivier Massot há 4 anos atrás
pai
commit
d2bdb0ac4d

+ 22 - 2
docker-compose.yaml

@@ -120,6 +120,21 @@ services:
       - thumbor
       - nginx-proxy
 
+  python39:
+    hostname: python39
+    container_name: python39
+    build:
+      context: .
+      dockerfile: docker/python39/Dockerfile
+      args:
+        - OS=${OS}
+    restart: always
+    volumes:
+      - ./apps/python-scripts:/root/scripts:cached
+    depends_on:
+      - db
+      - nginx-proxy
+
   admin:
     hostname: frontLegacy
     container_name: adminLegacy
@@ -197,8 +212,13 @@ services:
         - COMPOSER_HASH=${COMPOSER_HASH}
     restart: always
     volumes:
-      - ./apps/ot_typo3:/var/opentalent/git/ot_typo3:cached
-      - ./apps/ot_typo3/docker/typo3:/var/www/typo3:delegated
+      - ./apps/ot_typo3/ot_admin:/var/opentalent/git/ot_typo3/ot_admin:cached
+      - ./apps/ot_typo3/ot_connect:/var/opentalent/git/ot_typo3/ot_connect:cached
+      - ./apps/ot_typo3/ot_core:/var/opentalent/git/ot_typo3/ot_core:cached
+      - ./apps/ot_typo3/ot_optimizer:/var/opentalent/git/ot_typo3/ot_optimizer:cached
+      - ./apps/ot_typo3/ot_stats:/var/opentalent/git/ot_typo3/ot_stats:cached
+      - ./apps/ot_typo3/ot_templating:/var/opentalent/git/ot_typo3/ot_templating:cached
+      - ./apps/ot_typo3/docker/typo3:/var/www/typo3:cached
     environment:
       - VIRTUAL_HOST=${TYPO3_VIRTUAL_HOST}
       - HTTPS_METHOD=noredirect

+ 10 - 0
docker/python39/Dockerfile

@@ -0,0 +1,10 @@
+FROM python:3.9.5-buster
+
+WORKDIR /root/scripts
+
+RUN pip3 install path.py pyyaml docopt sshtunnel;
+
+RUN pip3 install -r /root/scripts/clonedb/requirements.txt
+
+RUN chown -R 1000:1000 /root/scripts;
+ENTRYPOINT ["tail", "-f", "/dev/null"]

+ 1 - 7
docker/typo3/Dockerfile

@@ -11,7 +11,7 @@ COPY /docker/typo3/conf/xdebug.ini /usr/local/etc/php/conf.d/
 COPY /docker/typo3/conf/typo3.conf /etc/apache2/sites-available/
 
 # Set workdir
-WORKDIR /var/www
+WORKDIR /var/www/typo3
 
 RUN \
     # Install utilities and php extensions
@@ -30,12 +30,6 @@ RUN \
     pecl install xdebug-2.9.8; \
     docker-php-ext-enable xdebug; \
 
-    # Install composer.phar in the typo3 directory
-    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');"; \
-
     # Set locale
     echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen; \
     locale-gen; \

+ 369 - 0
docker/typo3/conf/.htaccess

@@ -0,0 +1,369 @@
+#####
+#
+# Example .htaccess file for TYPO3 CMS - for use with Apache Webserver
+#
+# This file includes settings for the following configuration options:
+#
+# - Compression
+# - Caching
+# - MIME types
+# - Cross Origin requests
+# - Rewriting and Access
+# - Miscellaneous
+# - PHP optimisation
+#
+# If you want to use it, you have to copy it to the root folder of your TYPO3 installation (if its
+# not there already) and rename it to '.htaccess'. To make .htaccess files work, you might need to
+# adjust the 'AllowOverride' directive in your Apache configuration file.
+#
+# IMPORTANT: You may need to change this file depending on your TYPO3 installation!
+#            Consider adding this file's content to your webserver's configuration directly for speed improvement
+#
+# Lots of the options are taken from https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess
+#
+####
+
+SetEnv TYPO3_CONTEXT Development
+SetEnv TYPO3_OPTIMIZE 1
+
+### Begin: Compression ###
+
+# Compressing resource files will save bandwidth and so improve loading speed especially for users
+# with slower internet connections. TYPO3 can compress the .js and .css files for you.
+# *) Uncomment the following lines and
+# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
+# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
+#    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
+
+<FilesMatch "\.js\.gzip$">
+	AddType "text/javascript" .gzip
+</FilesMatch>
+<FilesMatch "\.css\.gzip$">
+	AddType "text/css" .gzip
+</FilesMatch>
+AddEncoding gzip .gzip
+
+<IfModule mod_deflate.c>
+	# Force compression for mangled `Accept-Encoding` request headers
+	<IfModule mod_setenvif.c>
+		<IfModule mod_headers.c>
+			SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
+			RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
+		</IfModule>
+	</IfModule>
+
+	# Compress all output labeled with one of the following media types.
+	#
+	# (!) For Apache versions below version 2.3.7 you don't need to
+	# enable `mod_filter` and can remove the `<IfModule mod_filter.c>`
+	# and `</IfModule>` lines as `AddOutputFilterByType` is still in
+	# the core directives.
+	#
+	# https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
+
+	<IfModule mod_filter.c>
+		AddOutputFilterByType DEFLATE application/atom+xml \
+			application/javascript \
+			application/json \
+			application/ld+json \
+			application/manifest+json \
+			application/rdf+xml \
+			application/rss+xml \
+			application/schema+json \
+			application/vnd.geo+json \
+			application/vnd.ms-fontobject \
+			application/x-font-ttf \
+			application/x-javascript \
+			application/x-web-app-manifest+json \
+			application/xhtml+xml \
+			application/xml \
+			font/eot \
+			font/opentype \
+			image/bmp \
+			image/svg+xml \
+			image/vnd.microsoft.icon \
+			image/x-icon \
+			text/cache-manifest \
+			text/css \
+			text/html \
+			text/javascript \
+			text/plain \
+			text/vcard \
+			text/vnd.rim.location.xloc \
+			text/vtt \
+			text/x-component \
+			text/x-cross-domain-policy \
+			text/xml
+	</IfModule>
+
+	<IfModule mod_mime.c>
+		AddEncoding gzip svgz
+	</IfModule>
+</IfModule>
+
+### End: Compression ###
+
+
+
+### Begin: Browser caching of resource files ###
+
+# This affects Frontend and Backend and increases performance.
+<IfModule mod_expires.c>
+
+	ExpiresActive on
+	ExpiresDefault                                      "access plus 1 month"
+
+	ExpiresByType text/css                              "access plus 1 year"
+
+	ExpiresByType application/json                      "access plus 0 seconds"
+	ExpiresByType application/ld+json                   "access plus 0 seconds"
+	ExpiresByType application/schema+json               "access plus 0 seconds"
+	ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
+	ExpiresByType application/xml                       "access plus 0 seconds"
+	ExpiresByType text/xml                              "access plus 0 seconds"
+
+	ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
+	ExpiresByType image/x-icon                          "access plus 1 week"
+
+	ExpiresByType text/x-component                      "access plus 1 month"
+
+	ExpiresByType text/html                             "access plus 0 seconds"
+
+	ExpiresByType application/javascript                "access plus 1 year"
+	ExpiresByType application/x-javascript              "access plus 1 year"
+	ExpiresByType text/javascript                       "access plus 1 year"
+
+	ExpiresByType application/manifest+json             "access plus 1 week"
+	ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
+	ExpiresByType text/cache-manifest                   "access plus 0 seconds"
+
+	ExpiresByType audio/ogg                             "access plus 1 month"
+	ExpiresByType image/bmp                             "access plus 1 month"
+	ExpiresByType image/gif                             "access plus 1 month"
+	ExpiresByType image/jpeg                            "access plus 1 month"
+	ExpiresByType image/png                             "access plus 1 month"
+	ExpiresByType image/svg+xml                         "access plus 1 month"
+	ExpiresByType image/webp                            "access plus 1 month"
+	ExpiresByType video/mp4                             "access plus 1 month"
+	ExpiresByType video/ogg                             "access plus 1 month"
+	ExpiresByType video/webm                            "access plus 1 month"
+
+	ExpiresByType application/atom+xml                  "access plus 1 hour"
+	ExpiresByType application/rdf+xml                   "access plus 1 hour"
+	ExpiresByType application/rss+xml                   "access plus 1 hour"
+
+	ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
+	ExpiresByType font/eot                              "access plus 1 month"
+	ExpiresByType font/opentype                         "access plus 1 month"
+	ExpiresByType application/x-font-ttf                "access plus 1 month"
+	ExpiresByType application/font-woff                 "access plus 1 month"
+	ExpiresByType application/x-font-woff               "access plus 1 month"
+	ExpiresByType font/woff                             "access plus 1 month"
+	ExpiresByType application/font-woff2                "access plus 1 month"
+
+	ExpiresByType text/x-cross-domain-policy            "access plus 1 week"
+
+</IfModule>
+
+### End: Browser caching of resource files ###
+
+
+### Begin: MIME types ###
+
+# Proper MIME types for all files
+<IfModule mod_mime.c>
+
+	# Data interchange
+	AddType application/atom+xml                        atom
+	AddType application/json                            json map topojson
+	AddType application/ld+json                         jsonld
+	AddType application/rss+xml                         rss
+	AddType application/vnd.geo+json                    geojson
+	AddType application/xml                             rdf xml
+
+	# JavaScript
+	AddType application/javascript                      js
+
+	# Manifest files
+	AddType application/manifest+json                   webmanifest
+	AddType application/x-web-app-manifest+json         webapp
+	AddType text/cache-manifest                         appcache
+
+	# Media files
+
+	AddType audio/mp4                                   f4a f4b m4a
+	AddType audio/ogg                                   oga ogg opus
+	AddType image/bmp                                   bmp
+	AddType image/svg+xml                               svg svgz
+	AddType image/webp                                  webp
+	AddType video/mp4                                   f4v f4p m4v mp4
+	AddType video/ogg                                   ogv
+	AddType video/webm                                  webm
+	AddType video/x-flv                                 flv
+	AddType image/x-icon                                cur ico
+
+	# Web fonts
+	AddType application/font-woff                       woff
+	AddType application/font-woff2                      woff2
+	AddType application/vnd.ms-fontobject               eot
+	AddType application/x-font-ttf                      ttc ttf
+	AddType font/opentype                               otf
+
+	# Other
+	AddType application/octet-stream                    safariextz
+	AddType application/x-bb-appworld                   bbaw
+	AddType application/x-chrome-extension              crx
+	AddType application/x-opera-extension               oex
+	AddType application/x-xpinstall                     xpi
+	AddType text/vcard                                  vcard vcf
+	AddType text/vnd.rim.location.xloc                  xloc
+	AddType text/vtt                                    vtt
+	AddType text/x-component                            htc
+
+</IfModule>
+
+# UTF-8 encoding
+AddDefaultCharset utf-8
+<IfModule mod_mime.c>
+	AddCharset utf-8 .atom .css .js .json .manifest .rdf .rss .vtt .webapp .webmanifest .xml
+</IfModule>
+
+### End: MIME types ###
+
+
+
+### Begin: Cross Origin ###
+
+# Send the CORS header for images when browsers request it.
+<IfModule mod_setenvif.c>
+	<IfModule mod_headers.c>
+		<FilesMatch "\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$">
+			SetEnvIf Origin ":" IS_CORS
+			Header set Access-Control-Allow-Origin "*" env=IS_CORS
+		</FilesMatch>
+	</IfModule>
+</IfModule>
+
+# Allow cross-origin access to web fonts.
+<IfModule mod_headers.c>
+	<FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
+		Header set Access-Control-Allow-Origin "*"
+	</FilesMatch>
+</IfModule>
+
+### End: Cross Origin ###
+
+
+
+### Begin: Rewriting and Access ###
+
+# You need rewriting, if you use a URL-Rewriting extension (RealURL, CoolUri).
+
+<IfModule mod_rewrite.c>
+
+	# Enable URL rewriting
+	RewriteEngine On
+
+	# Store the current location in an environment variable CWD to use
+	# mod_rewrite in .htaccess files without knowing the RewriteBase
+	RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
+	RewriteRule ^.*$ - [E=CWD:%2]
+
+	# Rules to set ApplicationContext based on hostname
+	#RewriteCond %{HTTP_HOST} ^dev\.example\.com$
+	#RewriteRule .? - [E=TYPO3_CONTEXT:Development]
+	#RewriteCond %{HTTP_HOST} ^staging\.example\.com$
+	#RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
+	#RewriteCond %{HTTP_HOST} ^www\.example\.com$
+	#RewriteRule .? - [E=TYPO3_CONTEXT:Production]
+
+	# Rule for versioned static files, configured through:
+	# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
+	# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
+	# IMPORTANT: This rule has to be the very first RewriteCond in order to work!
+	RewriteCond %{REQUEST_FILENAME} !-f
+	RewriteCond %{REQUEST_FILENAME} !-d
+	RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ %{ENV:CWD}$1.$3 [L]
+
+	# Access block for folders
+	RewriteRule _(?:recycler|temp)_/ - [F]
+	RewriteRule fileadmin/templates/.*\.(?:txt|ts)$ - [F]
+	RewriteRule ^(?:vendor|typo3_src|typo3temp/var) - [F]
+	RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ - [F]
+
+	# Block access to all hidden files and directories with the exception of
+	# the visible content from within the `/.well-known/` hidden directory (RFC 5785).
+	RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
+	RewriteCond %{SCRIPT_FILENAME} -d [OR]
+	RewriteCond %{SCRIPT_FILENAME} -f
+	RewriteRule (?:^|/)\. - [F]
+
+	# Stop rewrite processing, if we are in the typo3/ directory or any other known directory
+	# NOTE: Add your additional local storages here
+	RewriteRule ^(?:typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L]
+
+	# If the file/symlink/directory does not exist => Redirect to index.php.
+	# For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
+	RewriteCond %{REQUEST_FILENAME} !-f
+	RewriteCond %{REQUEST_FILENAME} !-d
+	RewriteCond %{REQUEST_FILENAME} !-l
+	RewriteRule ^.*$ %{ENV:CWD}index.php [QSA,L]
+
+</IfModule>
+
+# Access block for files
+# Apache < 2.3
+<IfModule !mod_authz_core.c>
+	<FilesMatch "(?i:^\.|^#.*#|^(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|^composer\.(?:json|lock)|^ext_conf_template\.txt|^ext_typoscript_constants\.txt|^ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$">
+		Order allow,deny
+		Deny from all
+		Satisfy All
+	</FilesMatch>
+</IfModule>
+# Apache ≥ 2.3
+<IfModule mod_authz_core.c>
+	<If "%{REQUEST_URI} =~ m#(?i:/\.|/\x23.*\x23|/(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|/composer\.(?:json|lock)|/ext_conf_template\.txt|/ext_typoscript_constants\.txt|/ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$#">
+		Require all denied
+	</If>
+</IfModule>
+
+# Block access to vcs directories
+<IfModule mod_alias.c>
+	RedirectMatch 404 /\.(?:git|svn|hg)/
+</IfModule>
+
+### End: Rewriting and Access ###
+
+
+
+### Begin: Miscellaneous ###
+
+# 404 error prevention for non-existing redirected folders
+Options -MultiViews
+
+# Make sure that directory listings are disabled.
+<IfModule mod_autoindex.c>
+	Options -Indexes
+</IfModule>
+
+<IfModule mod_headers.c>
+	# Force IE to render pages in the highest available mode
+	Header set X-UA-Compatible "IE=edge"
+	<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff2?|xml|xpi)$">
+		Header unset X-UA-Compatible
+	</FilesMatch>
+
+	# Reducing MIME type security risks
+	Header set X-Content-Type-Options "nosniff"
+</IfModule>
+
+# ETag removal
+<IfModule mod_headers.c>
+	Header unset ETag
+</IfModule>
+FileETag None
+
+### End: Miscellaneous ###
+
+
+# Add your own rules here.

+ 19 - 0
docker/typo3/conf/AdditionalConfiguration.php

@@ -0,0 +1,19 @@
+<?php
+
+if (\TYPO3\CMS\Core\Core\Environment::getContext()->isDevelopment()) {
+    $GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] = '1';
+    $GLOBALS['TYPO3_CONF_VARS']['FE']['debug'] = '1';
+    $GLOBALS['TYPO3_CONF_VARS']['SYS']['enable_DLOG'] = '1';
+    $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*';
+    $GLOBALS['TYPO3_CONF_VARS']['SYS']['displayErrors'] = '1';
+    $GLOBALS['TYPO3_CONF_VARS']['SYS']['enableDeprecationLog'] = '';
+    $GLOBALS['TYPO3_CONF_VARS']['SYS']['sqlDebug'] = '1';
+    $GLOBALS['TYPO3_CONF_VARS']['SYS']['systemLogLevel'] = '0';
+    $GLOBALS['TYPO3_CONF_VARS']['SYS']['exceptionalErrors'] = '28674';
+}
+
+$GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:flux/Resources/Private/Language/locallang.xlf'][0] = 'typo3conf/LFEditor/OverrideFiles/flux/Resources/Private/Language/locallang.xml';
+$GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:core/Resources/Private/Language/locallang_mod_web_list.xlf'][0] = 'typo3conf/LFEditor/OverrideFiles/core/Resources/Private/Language/locallang_mod_web_list.xml';
+$GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:tstemplate/Resources/Private/Language/locallang_info.xlf'][0] = 'typo3conf/LFEditor/OverrideFiles/tstemplate/Resources/Private/Language/locallang_info.xml';
+$GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:frontend/Resources/Private/Language/locallang_tca.xlf'][0] = 'typo3conf/LFEditor/OverrideFiles/frontend/Resources/Private/Language/locallang_tca.xml';
+$GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:core/Resources/Private/Language/locallang_core.xlf'][0] = 'typo3conf/LFEditor/OverrideFiles/core/Resources/Private/Language/locallang_core.xml';

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

@@ -0,0 +1,192 @@
+<?php
+return [
+    'BE' => [
+        'compressionLevel' => '5',
+        'debug' => true,
+        'enabledBeUserIPLock' => false,
+        'installToolPassword' => '$argon2i$v=19$m=65536,t=16,p=1$Z2NIbFRRVlVYZHhoaEUuMg$88qbJUyQLt7mgO0AhyVZIEzLWlX72oJ9oHuvzQHhYBM',
+        'interfaces' => 'backend',
+        'lockIP' => '0',
+        'loginSecurityLevel' => 'normal',
+        'passwordHashing' => [
+            'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash',
+            'options' => [],
+        ],
+        'sessionTimeout' => '65000',
+        'showRefreshLoginPopup' => true,
+        'versionNumberInFilename' => '0',
+    ],
+    'DB' => [
+        'Connections' => [
+            'Default' => [
+                'charset' => 'utf8',
+                'dbname' => 'typo3',
+                'driver' => 'mysqli',
+                'host' => 'db',
+                'initCommands' => '',
+                'password' => 'mysql660',
+                'user' => 'root',
+            ],
+        ],
+        'extTablesDefinitionScript' => 'extTables.php',
+    ],
+    'EXT' => [
+        'extConf' => [
+            'backend' => 'a:6:{s:9:"loginLogo";s:0:"";s:19:"loginHighlightColor";s:0:"";s:20:"loginBackgroundImage";s:0:"";s:13:"loginFootnote";s:0:"";s:11:"backendLogo";s:0:"";s:14:"backendFavicon";s:0:"";}',
+            'extensionmanager' => 'a:2:{s:21:"automaticInstallation";s:1:"1";s:11:"offlineMode";s:1:"0";}',
+            'flux' => 'a:7:{s:9:"debugMode";s:1:"0";s:8:"doktypes";s:5:"0,1,4";s:12:"handleErrors";s:1:"0";s:8:"autoload";s:1:"1";s:11:"plugAndPlay";s:1:"0";s:20:"plugAndPlayDirectory";s:6:"design";s:33:"pagesLanguageConfigurationOverlay";s:1:"0";}',
+            'frontend_editing' => 'a:3:{s:11:"seoProvider";s:4:"none";s:29:"contentEditableWrapperTagName";s:3:"div";s:18:"enablePlaceholders";s:1:"0";}',
+            'lfeditor' => 'a:9:{s:13:"viewLanguages";s:0:"";s:15:"defaultLanguage";s:0:"";s:11:"searchRegex";s:60:"/^([a-z0-9_]*locallang[a-z0-9_-]*\\.(php|xml)|[^\\.]*\\.xlf)$/i";s:9:"extIgnore";s:23:"/^(CVS|.svn|.git|csh_)/";s:12:"extWhitelist";s:0:"";s:13:"changeXlfDate";s:1:"1";s:17:"editModeExtension";s:1:"1";s:27:"pathAdditionalConfiguration";s:37:"typo3conf/AdditionalConfiguration.php";s:16:"beMainModuleName";s:4:"user";}',
+            'news' => 'a:18:{s:13:"prependAtCopy";s:1:"1";s:6:"tagPid";s:1:"1";s:12:"rteForTeaser";s:1:"0";s:22:"contentElementRelation";s:1:"1";s:21:"contentElementPreview";s:1:"1";s:13:"manualSorting";s:1:"0";s:19:"categoryRestriction";s:0:"";s:34:"categoryBeGroupTceFormsRestriction";s:1:"0";s:19:"dateTimeNotRequired";s:1:"0";s:11:"archiveDate";s:4:"date";s:12:"mediaPreview";s:5:"false";s:20:"advancedMediaPreview";s:4:"true";s:13:"slugBehaviour";s:6:"unique";s:24:"showAdministrationModule";s:1:"1";s:35:"hidePageTreeForAdministrationModule";s:1:"0";s:12:"showImporter";s:1:"0";s:18:"storageUidImporter";s:1:"1";s:22:"resourceFolderImporter";s:12:"/news_import";}',
+            'scheduler' => 'a:2:{s:11:"maxLifetime";s:4:"1440";s:15:"showSampleTasks";s:1:"1";}',
+            'vhs' => 'a:1:{s:20:"disableAssetHandling";s:1:"0";}',
+        ],
+    ],
+    'EXTCONF' => [
+        'lang' => [
+            'availableLanguages' => [
+                'fr',
+            ],
+        ],
+    ],
+    'EXTENSIONS' => [
+        'backend' => [
+            'backendFavicon' => '',
+            'backendLogo' => '',
+            'loginBackgroundImage' => '',
+            'loginFootnote' => '',
+            'loginHighlightColor' => '',
+            'loginLogo' => '',
+        ],
+        'extensionmanager' => [
+            'automaticInstallation' => '1',
+            'offlineMode' => '0',
+        ],
+        'flux' => [
+            'autoload' => '1',
+            'debugMode' => '0',
+            'doktypes' => '0,1,4',
+            'handleErrors' => '0',
+            'pagesLanguageConfigurationOverlay' => '0',
+            'plugAndPlay' => '0',
+            'plugAndPlayDirectory' => 'design',
+        ],
+        'frontend_editing' => [
+            'contentEditableWrapperTagName' => 'div',
+            'enablePlaceholders' => '0',
+            'seoProvider' => 'none',
+        ],
+        'lfeditor' => [
+            'beMainModuleName' => 'user',
+            'changeXlfDate' => '1',
+            'defaultLanguage' => '',
+            'editModeExtension' => '1',
+            'extIgnore' => '/^(CVS|.svn|.git|csh_)/',
+            'extWhitelist' => '',
+            'pathAdditionalConfiguration' => 'typo3conf/AdditionalConfiguration.php',
+            'searchRegex' => '/^([a-z0-9_]*locallang[a-z0-9_-]*\\.(php|xml)|[^\\.]*\\.xlf)$/i',
+            'viewLanguages' => '',
+        ],
+        'news' => [
+            'advancedMediaPreview' => 'true',
+            'archiveDate' => 'date',
+            'categoryBeGroupTceFormsRestriction' => '0',
+            'categoryRestriction' => '',
+            'contentElementPreview' => '1',
+            'contentElementRelation' => '1',
+            'dateTimeNotRequired' => '0',
+            'hidePageTreeForAdministrationModule' => '0',
+            'manualSorting' => '0',
+            'mediaPreview' => 'false',
+            'prependAtCopy' => '1',
+            'resourceFolderImporter' => '/news_import',
+            'rteForTeaser' => '0',
+            'showAdministrationModule' => '1',
+            'showImporter' => '0',
+            'slugBehaviour' => 'unique',
+            'storageUidImporter' => '1',
+            'tagPid' => '1',
+        ],
+        'scheduler' => [
+            'maxLifetime' => '1440',
+            'showSampleTasks' => '1',
+        ],
+        'vhs' => [
+            'disableAssetHandling' => '0',
+        ],
+    ],
+    'FE' => [
+        'compressionLevel' => 5,
+        'debug' => true,
+        'disableNoCacheParameter' => '0',
+        'pageNotFoundOnCHashError' => '0',
+        'passwordHashing' => [
+            'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash',
+            'options' => [],
+        ],
+    ],
+    'GFX' => [
+        'jpg_quality' => '96',
+        'processor' => 'GraphicsMagick',
+        'processor_allowTemporaryMasksAsPng' => false,
+        'processor_colorspace' => 'RGB',
+        'processor_effects' => false,
+        'processor_enabled' => true,
+        'processor_path' => '/usr/bin/',
+        'processor_path_lzw' => '/usr/bin/',
+    ],
+    'HTTP' => [],
+    'INSTALL' => [],
+    'LOG' => [
+        'TYPO3' => [
+            'CMS' => [
+                'deprecations' => [
+                    'writerConfiguration' => [
+                        5 => [
+                            'TYPO3\CMS\Core\Log\Writer\FileWriter' => [
+                                'disabled' => false,
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ],
+    'MAIL' => [
+        'defaultMailFromAddress' => 'ne_pas_repondre@opentalent.fr',
+        'transport' => 'sendmail',
+        'transport_sendmail_command' => ' -t -i ',
+        'transport_smtp_encrypt' => '',
+        'transport_smtp_password' => '',
+        'transport_smtp_server' => '',
+        'transport_smtp_username' => '',
+    ],
+    'SYS' => [
+        'UTF8filesystem' => '1',
+        'belogErrorReporting' => 30711,
+        'caching' => [
+            'cacheConfigurations' => [
+                'extbase_object' => [
+                    'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcBackend',
+                    'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\VariableFrontend',
+                    'groups' => [
+                        'system',
+                    ],
+                    'options' => [
+                        'defaultLifetime' => 0,
+                    ],
+                ],
+            ],
+        ],
+        'cookieDomain' => 'opentalent.fr',
+        'devIPmask' => '*',
+        'displayErrors' => 1,
+        'encryptionKey' => 'ed7ad07c97e4703bd18aaad78071be42',
+        'exceptionalErrors' => 12290,
+        'fileCreateMask' => '2660',
+        'folderCreateMask' => '2770',
+        'sitename' => 'Opentalent',
+        'systemLocale' => 'fr_FR.UTF-8',
+        'systemLogLevel' => 0,
+    ],
+];

+ 69 - 0
docker/typo3/conf/composer.json

@@ -0,0 +1,69 @@
+{
+	"repositories": [
+		{ "type": "composer", "url": "https://composer.typo3.org/" }
+	],
+	"name": "typo3/cms-base-distribution",
+	"description" : "TYPO3 CMS Base Distribution",
+	"license": "GPL-2.0-or-later",
+	"config": {
+		"platform": {
+			"php": "7.4"
+		}
+	},
+	"require": {
+		"typo3/cms-about": "^9.5",
+		"typo3/cms-adminpanel": "^9.5",
+		"typo3/cms-backend": "^9.5",
+		"typo3/cms-belog": "^9.5",
+		"typo3/cms-beuser": "^9.5",
+		"typo3/cms-core": "^9.5",
+		"typo3/cms-extbase": "^9.5",
+		"typo3/cms-extensionmanager": "^9.5",
+		"typo3/cms-felogin": "^9.5",
+		"typo3/cms-filelist": "^9.5",
+		"typo3/cms-filemetadata": "^9.5",
+		"typo3/cms-fluid": "^9.5",
+		"typo3/cms-fluid-styled-content": "^9.5",
+		"typo3/cms-form": "^9.5",
+		"typo3/cms-frontend": "^9.5",
+		"typo3/cms-info": "^9.5",
+		"typo3/cms-install": "^9.5",
+		"typo3/cms-lowlevel": "^9.5",
+		"typo3/cms-recycler": "^9.5",
+		"typo3/cms-redirects": "^9.5",
+		"typo3/cms-reports": "^9.5",
+		"typo3/cms-rte-ckeditor": "^9.5",
+		"typo3/cms-scheduler": "^9.5",
+		"typo3/cms-seo": "^9.5",
+		"typo3/cms-setup": "^9.5",
+		"typo3/cms-t3editor": "^9.5",
+		"typo3/cms-tstemplate": "^9.5",
+		"fluidtypo3/flux": "^9.4",
+		"fluidtypo3/vhs": "^6.0",
+		"georgringer/news": "^8.4",
+		"helhum/typo3-console": "^5.7",
+		"causal/image_autoresize": "^2.0",
+		"friendsoftypo3/frontend-editing": "^1.9",
+		"sgalinski/lfeditor": "^6.0",
+		"twig/twig": "^3.3"
+	},
+	"scripts":{
+		"typo3-cms-scripts": [
+			"typo3cms install:fixfolderstructure",
+			"typo3cms install:generatepackagestates"
+		],
+		"post-autoload-dump": [
+			"@typo3-cms-scripts"
+		]
+	},
+	"autoload": {
+		"psr-4": {
+			"Opentalent\\OtCore\\": "public/typo3conf/ext/ot_core/Classes",
+			"Opentalent\\OtConnect\\": "public/typo3conf/ext/ot_connect/Classes",
+			"Opentalent\\OtTemplating\\": "public/typo3conf/ext/ot_templating/Classes",
+			"Opentalent\\OtAdmin\\": "public/typo3conf/ext/ot_admin/Classes",
+			"Opentalent\\OtStats\\": "public/typo3conf/ext/ot_stats/Classes",
+			"Opentalent\\OtOptimizer\\": "public/typo3conf/ext/ot_optimizer/Classes"
+		}
+	}
+}

+ 7 - 26
docker/typo3/entrypoint.sh

@@ -1,35 +1,16 @@
 #!/bin/bash
 
-# Prepare
-cd /var/www/typo3
-mv /var/www/composer.phar /var/www/typo3/composer.phar
-ln -s /var/opentalent/git/ot_typo3/docker/conf/composer.json /var/www/typo3/composer.json
+# Fix db connection infos
+sed -ir "s#'host' => '[^\']*'#'host' => 'db'#" /var/www/typo3/public/typo3conf/LocalConfiguration.php
+sed -ir "s#'password' => '[^\']+'#'password' => 'mysql660'#" /var/www/typo3/public/typo3conf/LocalConfiguration.php
+sed -ir "s#'user' => '[^\']+'#'user' => 'root'#" /var/www/typo3/public/typo3conf/LocalConfiguration.php
 
-# Install Typo3 and extensions
-php composer.phar install
-ln -s /var/opentalent/git/ot_typo3/ot_core /var/www/typo3/public/typo3conf/ext/ot_core
-ln -s /var/opentalent/git/ot_typo3/ot_templating /var/www/typo3/public/typo3conf/ext/ot_templating
-ln -s /var/opentalent/git/ot_typo3/ot_connect /var/www/typo3/public/typo3conf/ext/ot_connect
-ln -s /var/opentalent/git/ot_typo3/ot_optimizer /var/www/typo3/public/typo3conf/ext/ot_optimizer
-ln -s /var/opentalent/git/ot_typo3/ot_admin /var/www/typo3/public/typo3conf/ext/ot_admin
-ln -s /var/opentalent/git/ot_typo3/ot_stats /var/www/typo3/public/typo3conf/ext/ot_stats
-php composer.phar dumpautoload
-
-# Add custom configuration
-ln -s /var/opentalent/git/ot_typo3/docker/conf/LocalConfiguration.php /var/www/typo3/public/typo3conf/LocalConfiguration.php
-ln -s /var/opentalent/git/ot_typo3/docker/conf/AdditionalConfiguration.php /var/www/typo3/public/typo3conf/AdditionalConfiguration.php
-mkdir -p /var/www/typo3/config
-ln -s /var/opentalent/git/ot_typo3/docker/conf/sites.tar.gz /var/www/typo3/config/sites.tar.gz
-tar -xzf /var/www/typo3/config/sites.tar.gz -C /var/www/typo3/config/
-
-# replace the default .htaccess
-rm /var/www/typo3/public/.htaccess
-ln -s /var/opentalent/git/ot_typo3/docker/conf/.htaccess /var/www/typo3/public/.htaccess
-
-# Finalize
+# Fix files perms
 chown -R 1000:www-data /var/www/typo3
 chown -R 1000:www-data /var/opentalent/git/ot_typo3
 chmod -R 771 /var/www/typo3
+
+# Enable install tool
 touch /var/www/typo3/public/typo3conf/ENABLE_INSTALL_TOOL
 
 # Continue with apache job (without it, docker exits here)