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="highlightLevel" value="WARNING" />
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.5" />
<component name="PhpStanOptionsConfiguration"> <component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" /> <option name="transferred" value="true" />
</component> </component>
+4 -1
View File
@@ -1,7 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4"> <module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager"> <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="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
+12 -5
View File
@@ -1,11 +1,18 @@
#!/bin/bash #!/bin/bash
set -e set -e
IMAGE_NAME="${1:-symfony-app}"
IMAGE_TAG="${2:-latest}"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 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 "Baue Produktions-Image: $IMAGE_NAME:$IMAGE_TAG"
echo "" echo ""
@@ -21,7 +28,7 @@ echo ""
echo "Container starten:" echo "Container starten:"
echo "" echo ""
echo " podman run -d \\" echo " podman run -d \\"
echo " --name symfony-app \\" echo " --name $PROJECT_NAME \\"
echo " -p 9000:9000 \\" echo " -p 9000:9000 \\"
echo " -e APP_ENV=prod \\" echo " -e APP_ENV=prod \\"
echo " -e APP_SECRET=\$(openssl rand -hex 16) \\" 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 " $IMAGE_NAME:$IMAGE_TAG"
echo "" echo ""
echo "Cache warmup nach dem Start:" 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 "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
+2 -2
View File
@@ -22,8 +22,8 @@ server {
fastcgi_pass localhost:9000; fastcgi_pass localhost:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params; include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_buffer_size 128k; fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k; fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k; fastcgi_busy_buffers_size 256k;
+30 -15
View File
@@ -1,10 +1,24 @@
#!/bin/bash #!/bin/bash
set -e set -e
POD_NAME="symfony-dev"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 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 "" echo ""
# .env.local erstellen falls nicht vorhanden # .env.local erstellen falls nicht vorhanden
@@ -33,33 +47,34 @@ echo ""
# PHP-FPM bauen und starten # PHP-FPM bauen und starten
echo "Baue PHP-FPM Container (inkl. Xdebug, Redis-Extension)..." 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..." echo "Starte PHP-FPM..."
podman run -d \ podman run -d \
--pod "$POD_NAME" \ --pod "$POD_NAME" \
--name symfony-php \ --name "$CTR_PHP" \
-v "$PROJECT_DIR:/var/www/html:Z" \ -v "$PROJECT_DIR:/var/www/html:Z" \
symfony-php "$IMG_PHP"
echo "" echo ""
# Nginx bauen und starten # Nginx bauen und starten
echo "Baue Nginx Container..." 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..." echo "Starte Nginx..."
podman run -d \ podman run -d \
--pod "$POD_NAME" \ --pod "$POD_NAME" \
--name symfony-nginx \ --name "$CTR_NGINX" \
symfony-nginx -v "$PROJECT_DIR:/var/www/html:Z" \
"$IMG_NGINX"
echo "" echo ""
# Redis starten # Redis starten
echo "Starte Redis..." echo "Starte Redis..."
podman run -d \ podman run -d \
--pod "$POD_NAME" \ --pod "$POD_NAME" \
--name symfony-redis \ --name "$CTR_REDIS" \
-v symfony-redis-data:/data \ -v "$VOL_REDIS:/data" \
docker.io/library/redis:8-alpine \ docker.io/library/redis:8-alpine \
redis-server --appendonly yes redis-server --appendonly yes
echo "" echo ""
@@ -70,11 +85,11 @@ sleep 2
# Composer install # Composer install
if [ -f "$PROJECT_DIR/composer.json" ]; then if [ -f "$PROJECT_DIR/composer.json" ]; then
echo "Installiere Composer-Abhängigkeiten..." echo "Installiere Composer-Abhängigkeiten..."
podman exec symfony-php composer install --no-interaction podman exec "$CTR_PHP" composer install --no-interaction
echo "" echo ""
echo "Leere Symfony Cache..." 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 "" echo ""
fi fi
@@ -85,9 +100,9 @@ echo " App: http://localhost:8080"
echo " Redis: localhost:6379 (innerhalb des Pods)" echo " Redis: localhost:6379 (innerhalb des Pods)"
echo "" echo ""
echo "Nützliche Befehle:" echo "Nützliche Befehle:"
echo " podman exec -it symfony-php bash" echo " podman exec -it $CTR_PHP bash"
echo " podman exec -it symfony-php php bin/console <befehl>" echo " podman exec -it $CTR_PHP php bin/console <befehl>"
echo " podman exec -it symfony-php composer require <paket>" echo " podman exec -it $CTR_PHP composer require <paket>"
echo "" echo ""
echo " podman pod stop $POD_NAME # Umgebung stoppen" echo " podman pod stop $POD_NAME # Umgebung stoppen"
echo " podman pod start $POD_NAME # Umgebung starten" echo " podman pod start $POD_NAME # Umgebung starten"