contau, maria und adminer up and running
This commit is contained in:
1 parent
b234dc47bd
commit
2ec65936c9
9 files changed
+219
-6
No files matched your search
@@ -1,6 +1,13 @@
|
|||||||
/vendor/
|
/vendor/
|
||||||
/var/
|
/var/
|
||||||
/public/assets/js/
|
/public/assets
|
||||||
|
/public/bundles
|
||||||
|
/public/share
|
||||||
|
/public/system
|
||||||
|
/public/vendor
|
||||||
|
/system
|
||||||
|
/bin/console
|
||||||
/node_modules/
|
/node_modules/
|
||||||
/.env
|
/.env
|
||||||
|
/.env.local
|
||||||
/.idea/
|
/.idea/
|
||||||
@@ -10,10 +10,16 @@ Voraussetzungen: Docker Desktop (Compose v2) und optional Node.js 20+ für die T
|
|||||||
docker compose up --build
|
docker compose up --build
|
||||||
```
|
```
|
||||||
|
|
||||||
Danach:
|
Beim ersten Start eines frischen Clones erzeugt Contao die benötigten Laufzeitverzeichnisse und Asset-Symlinks. Danach einmalig ausführen:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
docker compose exec app vendor/bin/contao-setup --no-interaction --env=dev
|
||||||
|
docker compose exec app chown -R www-data:www-data var public
|
||||||
|
docker compose exec app vendor/bin/contao-console contao:migrate --no-interaction
|
||||||
|
```
|
||||||
|
|
||||||
- Website/CMS: <http://localhost:8080>
|
- Website/CMS: <http://localhost:8080>
|
||||||
- Contao-Installation: <http://localhost:8080/contao/install>
|
- Contao-Login: <http://localhost:8080/contao/login>
|
||||||
- Datenbankinspektor: <http://localhost:8081> (Server `db`, Benutzer `perspektivwerk`, Passwort `perspektivwerk`, Datenbank `perspektivwerk`)
|
- Datenbankinspektor: <http://localhost:8081> (Server `db`, Benutzer `perspektivwerk`, Passwort `perspektivwerk`, Datenbank `perspektivwerk`)
|
||||||
|
|
||||||
Für die Frontend-Logik:
|
Für die Frontend-Logik:
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Contao.
|
||||||
|
*
|
||||||
|
* (c) Leo Feyer
|
||||||
|
*
|
||||||
|
* @license LGPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Contao\ManagerBundle\Console\ContaoApplication;
|
||||||
|
use Contao\ManagerBundle\HttpKernel\ContaoKernel;
|
||||||
|
use Symfony\Component\Console\Input\ArgvInput;
|
||||||
|
|
||||||
|
set_time_limit(0);
|
||||||
|
@ini_set('zlib.output_compression', '0');
|
||||||
|
@ini_set('display_errors', '0');
|
||||||
|
|
||||||
|
// System maintenance mode comes first as it has to work even if the vendor directory does not exist
|
||||||
|
if ('contao:cron' === ($_SERVER['argv'][1] ?? null) && file_exists(__DIR__.'/../var/maintenance.html')) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
require __DIR__.'/../vendor/autoload.php';
|
||||||
|
|
||||||
|
$input = new ArgvInput();
|
||||||
|
$kernel = ContaoKernel::fromInput(\dirname(__DIR__), $input);
|
||||||
|
|
||||||
|
$application = new ContaoApplication($kernel);
|
||||||
|
$application->run($input);
|
||||||
@@ -5,6 +5,8 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"contao/managed-edition": "^5.3"
|
"contao/managed-edition": "^5.3"
|
||||||
},
|
},
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"prefer-stable": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"post-install-cmd": [
|
"post-install-cmd": [
|
||||||
"Contao\\ManagerPlugin\\Bundle\\Config\\ScriptHandler::initializeApplication"
|
"Contao\\ManagerPlugin\\Bundle\\Config\\ScriptHandler::initializeApplication"
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ services:
|
|||||||
app:
|
app:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: docker/php-apache/Dockerfile
|
dockerfile: php-apache/Dockerfile
|
||||||
ports:
|
ports:
|
||||||
- "8080:80"
|
- "8080:80"
|
||||||
environment:
|
environment:
|
||||||
APP_ENV: dev
|
APP_ENV: dev
|
||||||
CONTAO_ENVIRONMENT: dev
|
CONTAO_ENVIRONMENT: dev
|
||||||
DATABASE_URL: mysql://perspektivwerk:perspektivwerk@db:3306/perspektivwerk?serverVersion=mariadb-10.11
|
DATABASE_URL: mysql://perspektivwerk:perspektivwerk@db:3306/perspektivwerk?serverVersion=mariadb-10.11.0
|
||||||
volumes:
|
volumes:
|
||||||
- ./:/var/www/html
|
- ./:/var/www/html
|
||||||
- contao_vendor:/var/www/html/vendor
|
- contao_vendor:/var/www/html/vendor
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ RUN apt-get update \
|
|||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
||||||
COPY docker/php-apache/vhost.conf /etc/apache2/sites-available/000-default.conf
|
COPY php-apache/vhost.conf /etc/apache2/sites-available/000-default.conf
|
||||||
|
|
||||||
WORKDIR /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
# Assets in /assets and /bundles either contain a hash in their filename
|
||||||
|
# or are called with a ?version suffix, therefore cache them for 1 year.
|
||||||
|
RewriteRule ^(assets|bundles)/ - [ENV=CONTAO_ASSETS:true]
|
||||||
|
Header set Cache-Control "max-age=31536000" env=CONTAO_ASSETS
|
||||||
|
|
||||||
|
# Allow CORS on the Contao TinyMCE skin.
|
||||||
|
RewriteRule ^assets/tinymce4/js/skins/contao/fonts/ - [ENV=CONTAO_TINYMCE_SKIN:true]
|
||||||
|
Header set Access-Control-Allow-Origin "*" env=CONTAO_TINYMCE_SKIN
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
# Determine the RewriteBase automatically and set it as environment variable.
|
||||||
|
# If you are using Apache aliases to do mass virtual hosting or installed the
|
||||||
|
# project in a subdirectory, the base path will be prepended to allow proper
|
||||||
|
# resolution of the index.php file and to redirect to the correct URI. It will
|
||||||
|
# work in environments without path prefix as well, providing a safe, one-size
|
||||||
|
# fits all solution. But as you do not need it in this case, you can comment
|
||||||
|
# the following 2 lines to eliminate the overhead.
|
||||||
|
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
|
||||||
|
RewriteRule ^(.*) - [E=BASE:%1]
|
||||||
|
|
||||||
|
# Sets the HTTP_AUTHORIZATION header removed by Apache
|
||||||
|
RewriteCond %{HTTP:Authorization} .
|
||||||
|
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||||
|
|
||||||
|
# Redirect to URI without front controller to prevent duplicate content
|
||||||
|
# (with and without `/index.php`). Only do this redirect on the initial
|
||||||
|
# rewrite by Apache and not on subsequent cycles. Otherwise, we would get an
|
||||||
|
# endless redirect loop (request -> rewrite to front controller ->
|
||||||
|
# redirect -> request -> ...).
|
||||||
|
# So in case you get a "too many redirects" error or you always get redirected
|
||||||
|
# to the start page because your Apache does not expose the REDIRECT_STATUS
|
||||||
|
# environment variable, you have 2 choices:
|
||||||
|
# - disable this feature by commenting the following 2 lines or
|
||||||
|
# - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
|
||||||
|
# following RewriteCond (best solution)
|
||||||
|
RewriteCond %{ENV:REDIRECT_STATUS} ^$
|
||||||
|
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
|
||||||
|
|
||||||
|
# If the requested filename exists, simply serve it.
|
||||||
|
# We only want to let Apache serve files and not directories.
|
||||||
|
RewriteCond %{REQUEST_FILENAME} -f
|
||||||
|
RewriteRule ^ - [L]
|
||||||
|
|
||||||
|
# Rewrite all other queries to the front controller.
|
||||||
|
RewriteRule ^ %{ENV:BASE}/index.php [L]
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule !mod_rewrite.c>
|
||||||
|
<IfModule mod_alias.c>
|
||||||
|
# When mod_rewrite is not available, we instruct a temporary redirect of
|
||||||
|
# the start page to the front controller explicitly so that the website
|
||||||
|
# and the generated links can still be used.
|
||||||
|
RedirectMatch 302 ^/$ /index.php/
|
||||||
|
# RedirectTemp cannot be used instead
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Contao.
|
||||||
|
*
|
||||||
|
* (c) Leo Feyer
|
||||||
|
*
|
||||||
|
* @license LGPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Contao\ManagerBundle\HttpKernel\ContaoKernel;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpKernel\TerminableInterface;
|
||||||
|
|
||||||
|
// Suppress error messages (see #1422)
|
||||||
|
@ini_set('display_errors', '0');
|
||||||
|
|
||||||
|
// Disable the phar stream wrapper for security reasons (see #105)
|
||||||
|
if (in_array('phar', stream_get_wrappers(), true)) {
|
||||||
|
stream_wrapper_unregister('phar');
|
||||||
|
}
|
||||||
|
|
||||||
|
// System maintenance mode comes first as it has to work even if the vendor directory does not exist
|
||||||
|
if (file_exists(__DIR__.'/../var/maintenance.html')) {
|
||||||
|
$contents = file_get_contents(__DIR__.'/../var/maintenance.html');
|
||||||
|
|
||||||
|
http_response_code(503);
|
||||||
|
header('Content-Type: text/html; charset=UTF-8');
|
||||||
|
header('Content-Length: '.strlen((string) $contents));
|
||||||
|
header('Cache-Control: no-store');
|
||||||
|
|
||||||
|
die($contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
$loader = require __DIR__.'/../vendor/autoload.php';
|
||||||
|
|
||||||
|
$request = Request::createFromGlobals();
|
||||||
|
$kernel = ContaoKernel::fromRequest(dirname(__DIR__), $request);
|
||||||
|
|
||||||
|
$response = $kernel->handle($request);
|
||||||
|
$response->send();
|
||||||
|
|
||||||
|
if ($kernel instanceof TerminableInterface) {
|
||||||
|
$kernel->terminate($request, $response);
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Contao.
|
||||||
|
*
|
||||||
|
* (c) Leo Feyer
|
||||||
|
*
|
||||||
|
* @license LGPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Contao\ManagerBundle\HttpKernel\ContaoKernel;
|
||||||
|
use FOS\HttpCache\TagHeaderFormatter\TagHeaderFormatter;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpKernel\TerminableInterface;
|
||||||
|
|
||||||
|
// Suppress error messages (see #1422)
|
||||||
|
@ini_set('display_errors', '0');
|
||||||
|
|
||||||
|
// Disable the phar stream wrapper for security reasons (see #105)
|
||||||
|
if (in_array('phar', stream_get_wrappers(), true)) {
|
||||||
|
stream_wrapper_unregister('phar');
|
||||||
|
}
|
||||||
|
|
||||||
|
// System maintenance mode comes first as it has to work even if the vendor directory does not exist
|
||||||
|
if (file_exists(__DIR__.'/../var/maintenance.html')) {
|
||||||
|
$contents = file_get_contents(__DIR__.'/../var/maintenance.html');
|
||||||
|
|
||||||
|
http_response_code(503);
|
||||||
|
header('Content-Type: text/html; charset=UTF-8');
|
||||||
|
header('Content-Length: '.strlen((string) $contents));
|
||||||
|
header('Cache-Control: no-store');
|
||||||
|
|
||||||
|
die($contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
$loader = require __DIR__.'/../vendor/autoload.php';
|
||||||
|
|
||||||
|
$request = Request::createFromGlobals();
|
||||||
|
$request->attributes->set('_preview', true);
|
||||||
|
|
||||||
|
$kernel = ContaoKernel::fromRequest(dirname(__DIR__), $request);
|
||||||
|
$response = $kernel->handle($request);
|
||||||
|
|
||||||
|
// Prevent preview URLs from being indexed
|
||||||
|
$response->headers->set('X-Robots-Tag', 'noindex');
|
||||||
|
|
||||||
|
// Force no-cache on all responses in the preview front controller
|
||||||
|
$response->headers->set('Cache-Control', 'no-store');
|
||||||
|
|
||||||
|
// Strip all tag headers from the response
|
||||||
|
$response->headers->remove(TagHeaderFormatter::DEFAULT_HEADER_NAME);
|
||||||
|
$response->send();
|
||||||
|
|
||||||
|
if ($kernel instanceof TerminableInterface) {
|
||||||
|
$kernel->terminate($request, $response);
|
||||||
|
}
|
||||||
Reference in new issue
Block a user