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/
|
||||
/var/
|
||||
/public/assets/js/
|
||||
/public/assets
|
||||
/public/bundles
|
||||
/public/share
|
||||
/public/system
|
||||
/public/vendor
|
||||
/system
|
||||
/bin/console
|
||||
/node_modules/
|
||||
/.env
|
||||
/.env.local
|
||||
/.idea/
|
||||
@@ -10,10 +10,16 @@ Voraussetzungen: Docker Desktop (Compose v2) und optional Node.js 20+ für die T
|
||||
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>
|
||||
- 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`)
|
||||
|
||||
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": {
|
||||
"contao/managed-edition": "^5.3"
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true,
|
||||
"scripts": {
|
||||
"post-install-cmd": [
|
||||
"Contao\\ManagerPlugin\\Bundle\\Config\\ScriptHandler::initializeApplication"
|
||||
|
||||
@@ -2,13 +2,13 @@ services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/php-apache/Dockerfile
|
||||
dockerfile: php-apache/Dockerfile
|
||||
ports:
|
||||
- "8080:80"
|
||||
environment:
|
||||
APP_ENV: 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:
|
||||
- ./:/var/www/html
|
||||
- contao_vendor:/var/www/html/vendor
|
||||
|
||||
@@ -9,7 +9,7 @@ RUN apt-get update \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -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