Compare commits

...

3 Commits

6 changed files with 82 additions and 23 deletions
+33
View File
@@ -0,0 +1,33 @@
# Abhängigkeiten
/vendor/
/node_modules/
# Symfony-Laufzeit
/var/cache/
/var/log/
/var/sessions/
# Sensible Daten
.env.local
.env.local.php
.env.*.local
/config/secrets/
# Generierte Assets
/public/bundles/
/public/build/
# Logs
/log/
# IDE & OS
.idea/
.vscode/
.DS_Store
Thumbs.db
# Lock-Dateien (groß, wenig Mehrwert)
composer.lock
symfony.lock
package-lock.json
yarn.lock
Generated
+1
View File
@@ -10,6 +10,7 @@
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.5" />
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
+4 -1
View File
@@ -1,7 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/var" />
<excludeFolder url="file://$MODULE_DIR$/vendor" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
+12 -5
View File
@@ -1,11 +1,18 @@
#!/bin/bash
set -e
IMAGE_NAME="${1:-symfony-app}"
IMAGE_TAG="${2:-latest}"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Projektnamen aus composer.json lesen (Teil nach "/") und bereinigen
PROJECT_NAME=$(grep -m1 '"name"' "$PROJECT_DIR/composer.json" \
| sed 's/.*"[^/]*\/\([^"]*\)".*/\1/' \
| tr '[:upper:]' '[:lower:]' \
| sed 's/[^a-z0-9]/-/g')
IMAGE_NAME="${1:-$PROJECT_NAME}"
IMAGE_TAG="${2:-latest}"
echo "Projekt: $PROJECT_NAME"
echo "Baue Produktions-Image: $IMAGE_NAME:$IMAGE_TAG"
echo ""
@@ -21,7 +28,7 @@ echo ""
echo "Container starten:"
echo ""
echo " podman run -d \\"
echo " --name symfony-app \\"
echo " --name $PROJECT_NAME \\"
echo " -p 9000:9000 \\"
echo " -e APP_ENV=prod \\"
echo " -e APP_SECRET=\$(openssl rand -hex 16) \\"
@@ -29,5 +36,5 @@ echo " -e REDIS_URL=redis://your-redis-host:6379 \\"
echo " $IMAGE_NAME:$IMAGE_TAG"
echo ""
echo "Cache warmup nach dem Start:"
echo " podman exec symfony-app php bin/console cache:warmup --env=prod"
echo " podman exec $PROJECT_NAME php bin/console cache:warmup --env=prod"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
+2 -2
View File
@@ -22,8 +22,8 @@ server {
fastcgi_pass localhost:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
+30 -15
View File
@@ -1,10 +1,24 @@
#!/bin/bash
set -e
POD_NAME="symfony-dev"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "Starte Symfony Entwicklungsumgebung..."
# Projektnamen aus composer.json lesen (Teil nach "/") und bereinigen
PROJECT_NAME=$(grep -m1 '"name"' "$PROJECT_DIR/composer.json" \
| sed 's/.*"[^/]*\/\([^"]*\)".*/\1/' \
| tr '[:upper:]' '[:lower:]' \
| sed 's/[^a-z0-9]/-/g')
POD_NAME="${PROJECT_NAME}-dev"
CTR_PHP="${PROJECT_NAME}-php"
CTR_NGINX="${PROJECT_NAME}-nginx"
CTR_REDIS="${PROJECT_NAME}-redis"
IMG_PHP="${PROJECT_NAME}-php"
IMG_NGINX="${PROJECT_NAME}-nginx"
VOL_REDIS="${PROJECT_NAME}-redis-data"
echo "Projekt: $PROJECT_NAME"
echo "Pod: $POD_NAME"
echo ""
# .env.local erstellen falls nicht vorhanden
@@ -33,33 +47,34 @@ echo ""
# PHP-FPM bauen und starten
echo "Baue PHP-FPM Container (inkl. Xdebug, Redis-Extension)..."
podman build -t symfony-php -f podman/php/Containerfile "$PROJECT_DIR"
podman build -t "$IMG_PHP" -f podman/php/Containerfile "$PROJECT_DIR"
echo "Starte PHP-FPM..."
podman run -d \
--pod "$POD_NAME" \
--name symfony-php \
--name "$CTR_PHP" \
-v "$PROJECT_DIR:/var/www/html:Z" \
symfony-php
"$IMG_PHP"
echo ""
# Nginx bauen und starten
echo "Baue Nginx Container..."
podman build -t symfony-nginx -f podman/nginx/Containerfile "$PROJECT_DIR"
podman build -t "$IMG_NGINX" -f podman/nginx/Containerfile "$PROJECT_DIR"
echo "Starte Nginx..."
podman run -d \
--pod "$POD_NAME" \
--name symfony-nginx \
symfony-nginx
--name "$CTR_NGINX" \
-v "$PROJECT_DIR:/var/www/html:Z" \
"$IMG_NGINX"
echo ""
# Redis starten
echo "Starte Redis..."
podman run -d \
--pod "$POD_NAME" \
--name symfony-redis \
-v symfony-redis-data:/data \
--name "$CTR_REDIS" \
-v "$VOL_REDIS:/data" \
docker.io/library/redis:8-alpine \
redis-server --appendonly yes
echo ""
@@ -70,11 +85,11 @@ sleep 2
# Composer install
if [ -f "$PROJECT_DIR/composer.json" ]; then
echo "Installiere Composer-Abhängigkeiten..."
podman exec symfony-php composer install --no-interaction
podman exec "$CTR_PHP" composer install --no-interaction
echo ""
echo "Leere Symfony Cache..."
podman exec symfony-php php bin/console cache:clear --env=dev
podman exec "$CTR_PHP" php bin/console cache:clear --env=dev
echo ""
fi
@@ -85,9 +100,9 @@ echo " App: http://localhost:8080"
echo " Redis: localhost:6379 (innerhalb des Pods)"
echo ""
echo "Nützliche Befehle:"
echo " podman exec -it symfony-php bash"
echo " podman exec -it symfony-php php bin/console <befehl>"
echo " podman exec -it symfony-php composer require <paket>"
echo " podman exec -it $CTR_PHP bash"
echo " podman exec -it $CTR_PHP php bin/console <befehl>"
echo " podman exec -it $CTR_PHP composer require <paket>"
echo ""
echo " podman pod stop $POD_NAME # Umgebung stoppen"
echo " podman pod start $POD_NAME # Umgebung starten"