From 502ab34c450016da448ce85414fe7dfd3cfe20da Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 24 May 2022 18:31:46 +0200 Subject: [PATCH] wait #5294 @0.5 --- .../Operations/Tools/DockerWebContainer.php | 35 +++++++++--- app/Models/FluidbookPublication.php | 2 +- resources/tools/dockerwebcontainer/base | 17 ++++++ .../dockerwebcontainer/docker-compose.yml | 53 ------------------- resources/tools/dockerwebcontainer/mysql | 23 ++++++++ resources/tools/dockerwebcontainer/network | 4 ++ resources/tools/dockerwebcontainer/php | 9 ++++ .../phpdocker/php-5.6-fpm/debconf | 2 - .../phpdocker/php-fpm/debconf | 2 - .../{ => template}/httpd/httpd.conf | 0 .../{ => template}/phpdocker/README.html | 0 .../{ => template}/phpdocker/README.md | 0 .../phpdocker/php-5.6-fpm/Dockerfile | 4 +- .../phpdocker/php-5.6-fpm/overrides.conf | 0 .../phpdocker/php-5.6-fpm/php-fpm-startup | 0 .../php-5.6-fpm/php-ini-overrides.ini | 0 .../phpdocker/php-fpm/Dockerfile | 7 +-- .../phpdocker/php-fpm/php-ini-overrides.ini | 0 .../dockerwebcontainer/{ => template}/update | 0 .../{ => template}/www/.env | 0 .../{ => template}/www/index.php | 0 21 files changed, 84 insertions(+), 74 deletions(-) create mode 100644 resources/tools/dockerwebcontainer/base delete mode 100644 resources/tools/dockerwebcontainer/docker-compose.yml create mode 100644 resources/tools/dockerwebcontainer/mysql create mode 100644 resources/tools/dockerwebcontainer/network create mode 100644 resources/tools/dockerwebcontainer/php delete mode 100644 resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/debconf delete mode 100644 resources/tools/dockerwebcontainer/phpdocker/php-fpm/debconf rename resources/tools/dockerwebcontainer/{ => template}/httpd/httpd.conf (100%) rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/README.html (100%) rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/README.md (100%) rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/php-5.6-fpm/Dockerfile (94%) rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/php-5.6-fpm/overrides.conf (100%) rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/php-5.6-fpm/php-fpm-startup (100%) mode change 100755 => 100644 rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/php-5.6-fpm/php-ini-overrides.ini (100%) rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/php-fpm/Dockerfile (79%) rename resources/tools/dockerwebcontainer/{ => template}/phpdocker/php-fpm/php-ini-overrides.ini (100%) rename resources/tools/dockerwebcontainer/{ => template}/update (100%) rename resources/tools/dockerwebcontainer/{ => template}/www/.env (100%) rename resources/tools/dockerwebcontainer/{ => template}/www/index.php (100%) diff --git a/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php b/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php index 74fefd5a5..757594ca0 100644 --- a/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php +++ b/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php @@ -22,7 +22,8 @@ trait DockerWebContainer $form->addField('name', Text::class, __('Nom du container'), ['prefix' => '/docker/']); $form->addField('domain', Text::class, __('Nom du domaine ou sous-domaine'), ['placeholder' => 'containername.dev.cubedesigners.com']); $form->addField('phpversion', SelectFromArray::class, __('Version de PHP'), ["options" => - ['5.6' => '5.6', + ['none' => '-', + '5.6' => '5.6', // '7.0' => '7.0', // '7.1' => '7.1', // '7.2' => '7.2', @@ -30,7 +31,7 @@ trait DockerWebContainer '7.4' => '7.4', '8.0' => '8.0', '8.1' => '8.1'], 'value' => '8.1']); - $form->addField('deploy', Checkbox::class, __('Déployer sur le serveur de dev')); + $form->addField('mysql', Checkbox::class, __('Serveur Mariadb') . ' (MySQL)', ['default' => true]); return view('tools.form', ['form' => $form]); } @@ -38,13 +39,11 @@ trait DockerWebContainer public function dodockerwebcontainer() { $request = request(); - $files = ['httpd/httpd.conf', 'phpdocker/php-fpm/Dockerfile', 'phpdocker/php-fpm/php-ini-overrides.ini', 'docker-compose.yml', 'update', 'www/.env']; $name = Str::slug($request->get('name', 'containername')); $variables = ['$name' => $name, '$port' => rand(10000, 60000), '$portadminer' => rand(10000, 60000), '$domain' => $request->get('domain', ''), - '$phpversion' => $request->get('phpversion', '8.1'), '$dbpassword' => Str::random(16), '$phpfpmimage' => 'php-fpm' ]; @@ -52,14 +51,34 @@ trait DockerWebContainer if (!$variables['$domain']) { $variables['$domain'] = $name . '.dev.cubedesigners.com'; } - if (version_compare($variables['$phpversion'], '7.3', '<=')) { - $variables['$phpfpmimage'] = 'php-' . $variables['$phpversion'] . '-fpm'; - } $tmp = Files::tmpdir(); $dir = Files::mkdir($tmp . '/' . $name); - $source = resource_path('tools/dockerwebcontainer'); + $source = resource_path('tools/dockerwebcontainer/template'); `cp -r $source/* $dir/`; + + $compose = ['base']; + $variables['$phpversion'] = $request->get('phpversion', '8.1'); + if ($variables['$phpversion'] !== 'none') { + $compose[] = 'php'; + if (version_compare($variables['$phpversion'], '7.3', '<=')) { + $variables['$phpfpmimage'] = 'php-' . $variables['$phpversion'] . '-fpm'; + } + }else{ + `rm -rf $dir/phpdocker`; + } + if ($request->get('mysql', true)) { + $compose[] = 'mysql'; + } else { + `rm -rf $dir/database`; + } + $compose[] = 'network'; + $composeFileContent = ''; + foreach ($compose as $item) { + $composeFileContent .= file_get_contents(resource_path('tools/dockerwebcontainer/' . $item)); + } + file_put_contents($dir . '/docker-compose.yml', $composeFileContent); + Files::recursiveReplaceStringInDir($dir, $variables); $tmpfile = Files::tempnam() . '.zip'; diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 1091f0540..ec342d068 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -62,7 +62,7 @@ class FluidbookPublication extends ToolboxModel $this->addField('section_locale', FormBigSection::class, __('Langue')); $this->addField('locale', FluidbookLocale::class, __('Langue principale'), ['default' => 'fr', 'allows_null' => false, 'filter' => true, 'filter_label' => 'Langue', 'column' => true, 'column_label' => '']); - $this->addFieldOnFill('translations', KeyValueBunchOfFieldsMultiple::class, __('Traductions personnalisées'), ['bunch' => FluidbookTranslationOverwrite::class, 'add_label' => __('Nouvelle traduction'),]); + //$this->addFieldOnFill('translations', KeyValueBunchOfFieldsMultiple::class, __('Traductions personnalisées'), ['bunch' => FluidbookTranslationOverwrite::class, 'add_label' => __('Nouvelle traduction'),]); $this->addField('section_chapters', FormBigSection::class, __('Sommaire')); $this->addField('chapters', Textarea::class, __('Sommaire')); diff --git a/resources/tools/dockerwebcontainer/base b/resources/tools/dockerwebcontainer/base new file mode 100644 index 000000000..8d0f2c77f --- /dev/null +++ b/resources/tools/dockerwebcontainer/base @@ -0,0 +1,17 @@ +version: '3.1' +services: + webserver: + container_name: $name-httpd + image: 'httpd:alpine' + working_dir: /application + volumes: + - '/docker/$name/www/public/:/usr/local/apache2/htdocs/' + - '/docker/$name/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf' + ports: + - '$port:80' + environment: + VIRTUAL_HOST: $domain + LETSENCRYPT_HOST: $domain + networks: + - $name + diff --git a/resources/tools/dockerwebcontainer/docker-compose.yml b/resources/tools/dockerwebcontainer/docker-compose.yml deleted file mode 100644 index be2995f9c..000000000 --- a/resources/tools/dockerwebcontainer/docker-compose.yml +++ /dev/null @@ -1,53 +0,0 @@ -version: '3.1' -services: - webserver: - container_name: $name-httpd - image: 'httpd:alpine' - working_dir: /application - volumes: - - '/docker/$name/www/public/:/usr/local/apache2/htdocs/' - - '/docker/$name/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf' - ports: - - '$port:80' - environment: - VIRTUAL_HOST: $domain - LETSENCRYPT_HOST: $domain - networks: - - $name - mariadb: - container_name: $name-mariadb - image: 'mariadb' - environment: - MARIADB_ROOT_PASSWORD: $dbpassword - MARIADB_DATABASE: $name - volumes: - - "/docker/$name/database:/var/lib/mysql" - - "/docker/$name/dump.sql:/docker-entrypoint-initdb.d/dump.sql" - networks: - - $name - php-fpm: - container_name: $name - build: phpdocker/$phpfpmimage - working_dir: /application - volumes: - - '/docker/$name/www:/application' - - '/docker/$name/phpdocker/$phpfpmimage/php-ini-overrides.ini:/etc/php/$phpversion/fpm/conf.d/99-overrides.ini' - networks: - - $name - adminer: - image: adminer:latest - container_name: $name-adminer - restart: always - ports: - - $portadminer:8080 - environment: - ADMINER_DEFAULT_SERVER: $name-mariadb - VIRTUAL_HOST: adminer.$domain - LETSENCRYPT_HOST: adminer.$domain - networks: - - $name - -networks: - $name: - external: - name: $name diff --git a/resources/tools/dockerwebcontainer/mysql b/resources/tools/dockerwebcontainer/mysql new file mode 100644 index 000000000..f372f992c --- /dev/null +++ b/resources/tools/dockerwebcontainer/mysql @@ -0,0 +1,23 @@ + adminer: + image: adminer:latest + container_name: $name-adminer + restart: always + ports: + - $portadminer:8080 + environment: + ADMINER_DEFAULT_SERVER: $name-mariadb + VIRTUAL_HOST: adminer.$domain + LETSENCRYPT_HOST: adminer.$domain + networks: + - $name + mariadb: + container_name: $name-mariadb + image: 'mariadb' + environment: + MARIADB_ROOT_PASSWORD: $dbpassword + MARIADB_DATABASE: $name + volumes: + - "/docker/$name/database:/var/lib/mysql" + - "/docker/$name/dump.sql:/docker-entrypoint-initdb.d/dump.sql" + networks: + - $name diff --git a/resources/tools/dockerwebcontainer/network b/resources/tools/dockerwebcontainer/network new file mode 100644 index 000000000..3104a0ad7 --- /dev/null +++ b/resources/tools/dockerwebcontainer/network @@ -0,0 +1,4 @@ +networks: + $name: + external: + name: $name diff --git a/resources/tools/dockerwebcontainer/php b/resources/tools/dockerwebcontainer/php new file mode 100644 index 000000000..608f834e6 --- /dev/null +++ b/resources/tools/dockerwebcontainer/php @@ -0,0 +1,9 @@ + php-fpm: + container_name: $name + build: phpdocker/$phpfpmimage + working_dir: /application + volumes: + - '/docker/$name/www:/application' + - '/docker/$name/phpdocker/$phpfpmimage/php-ini-overrides.ini:/etc/php/$phpversion/fpm/conf.d/99-overrides.ini' + networks: + - $name diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/debconf b/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/debconf deleted file mode 100644 index 30050b4f2..000000000 --- a/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/debconf +++ /dev/null @@ -1,2 +0,0 @@ -postfix postfix/main_mailer_type string 'Internet Site' -postfix postfix/mailname string $domain diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-fpm/debconf b/resources/tools/dockerwebcontainer/phpdocker/php-fpm/debconf deleted file mode 100644 index 30050b4f2..000000000 --- a/resources/tools/dockerwebcontainer/phpdocker/php-fpm/debconf +++ /dev/null @@ -1,2 +0,0 @@ -postfix postfix/main_mailer_type string 'Internet Site' -postfix postfix/mailname string $domain diff --git a/resources/tools/dockerwebcontainer/httpd/httpd.conf b/resources/tools/dockerwebcontainer/template/httpd/httpd.conf similarity index 100% rename from resources/tools/dockerwebcontainer/httpd/httpd.conf rename to resources/tools/dockerwebcontainer/template/httpd/httpd.conf diff --git a/resources/tools/dockerwebcontainer/phpdocker/README.html b/resources/tools/dockerwebcontainer/template/phpdocker/README.html similarity index 100% rename from resources/tools/dockerwebcontainer/phpdocker/README.html rename to resources/tools/dockerwebcontainer/template/phpdocker/README.html diff --git a/resources/tools/dockerwebcontainer/phpdocker/README.md b/resources/tools/dockerwebcontainer/template/phpdocker/README.md similarity index 100% rename from resources/tools/dockerwebcontainer/phpdocker/README.md rename to resources/tools/dockerwebcontainer/template/phpdocker/README.md diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/Dockerfile b/resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/Dockerfile similarity index 94% rename from resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/Dockerfile rename to resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/Dockerfile index 45064abf5..94587999a 100644 --- a/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/Dockerfile +++ b/resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/Dockerfile @@ -57,9 +57,6 @@ CMD /usr/bin/php-fpm # Open up fcgi port EXPOSE 9000 -RUN apt-get update && debconf-set-selections /docker/$name/phpdocker/php-5.6-fpm/debconf && \ - apt-get install --assume-yes postfix - RUN apt-get update; \ apt-get -y --no-install-recommends install \ git \ @@ -78,6 +75,7 @@ RUN apt-get update; \ php5.6-xsl \ php5.6-curl \ php5.6-json \ + php5.6-mcrypt \ less nano wget curl; \ apt-get clean; \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*; diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/overrides.conf b/resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/overrides.conf similarity index 100% rename from resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/overrides.conf rename to resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/overrides.conf diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/php-fpm-startup b/resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/php-fpm-startup old mode 100755 new mode 100644 similarity index 100% rename from resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/php-fpm-startup rename to resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/php-fpm-startup diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/php-ini-overrides.ini b/resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/php-ini-overrides.ini similarity index 100% rename from resources/tools/dockerwebcontainer/phpdocker/php-5.6-fpm/php-ini-overrides.ini rename to resources/tools/dockerwebcontainer/template/phpdocker/php-5.6-fpm/php-ini-overrides.ini diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-fpm/Dockerfile b/resources/tools/dockerwebcontainer/template/phpdocker/php-fpm/Dockerfile similarity index 79% rename from resources/tools/dockerwebcontainer/phpdocker/php-fpm/Dockerfile rename to resources/tools/dockerwebcontainer/template/phpdocker/php-fpm/Dockerfile index ef8608a08..56a42bc71 100644 --- a/resources/tools/dockerwebcontainer/phpdocker/php-fpm/Dockerfile +++ b/resources/tools/dockerwebcontainer/template/phpdocker/php-fpm/Dockerfile @@ -1,11 +1,7 @@ FROM phpdockerio/php:$phpversion-fpm WORKDIR "/application" -RUN apt-get update && && \ - apt-get install --assume-yes postfix - RUN apt-get update; \ - debconf-set-selections /docker/$name/phpdocker/php-fpm/debconf; \ apt-get -y --no-install-recommends install \ git \ php$phpversion-bz2 \ @@ -23,7 +19,8 @@ RUN apt-get update; \ php$phpversion-xsl \ php$phpversion-curl \ php$phpversion-json \ - less nano wget curl postfix; \ + php$phpversion-mcrypt \ + less nano wget curl; \ apt-get clean; \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*; diff --git a/resources/tools/dockerwebcontainer/phpdocker/php-fpm/php-ini-overrides.ini b/resources/tools/dockerwebcontainer/template/phpdocker/php-fpm/php-ini-overrides.ini similarity index 100% rename from resources/tools/dockerwebcontainer/phpdocker/php-fpm/php-ini-overrides.ini rename to resources/tools/dockerwebcontainer/template/phpdocker/php-fpm/php-ini-overrides.ini diff --git a/resources/tools/dockerwebcontainer/update b/resources/tools/dockerwebcontainer/template/update similarity index 100% rename from resources/tools/dockerwebcontainer/update rename to resources/tools/dockerwebcontainer/template/update diff --git a/resources/tools/dockerwebcontainer/www/.env b/resources/tools/dockerwebcontainer/template/www/.env similarity index 100% rename from resources/tools/dockerwebcontainer/www/.env rename to resources/tools/dockerwebcontainer/template/www/.env diff --git a/resources/tools/dockerwebcontainer/www/index.php b/resources/tools/dockerwebcontainer/template/www/index.php similarity index 100% rename from resources/tools/dockerwebcontainer/www/index.php rename to resources/tools/dockerwebcontainer/template/www/index.php -- 2.39.5