#!/usr/bin/env bash set -euo pipefail WEB_DIR="/opt/hx-ki/web/hx-ki-website" COMPOSE_FILE="/opt/hx-ki/docker/docker-compose.yml" CADDY_FILE="/opt/hx-ki/caddy/Caddyfile" echo "==> Prüfe, ob Web-Verzeichnis existiert: $WEB_DIR" if [ ! -d "$WEB_DIR" ]; then echo "FEHLER: Verzeichnis $WEB_DIR existiert nicht." echo "Bitte sicherstellen: ZIP entpackt nach /opt/hx-ki/web/hx-ki-website" exit 1 fi echo "==> Erstelle/überschreibe Dockerfile im Web-Verzeichnis ..." cat > "$WEB_DIR/Dockerfile" << 'EOF_DF' FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build ENV NODE_ENV=production ENV PORT=3003 EXPOSE 3003 CMD ["npm", "start"] EOF_DF echo "==> Sicherung von docker-compose.yml anlegen ..." cp "$COMPOSE_FILE" "${COMPOSE_FILE}.bak_website_$(date +%Y%m%d_%H%M%S)" echo "==> Prüfe, ob Service 'hxki-web' bereits existiert ..." if grep -q "hxki-web:" "$COMPOSE_FILE"; then echo "Service 'hxki-web' ist bereits in $COMPOSE_FILE vorhanden. Überspringe Einfügen." else echo "==> Füge Service 'hxki-web' in docker-compose.yml ein ..." awk ' BEGIN {added=0} /^services:/ {print; in_services=1; next} in_services && !added && ($0 !~ /^ /) { print " hxki-web:"; print " container_name: hxki-web"; print " build:"; print " context: /opt/hx-ki/web/hx-ki-website"; print " restart: unless-stopped"; print " networks:"; print " - hxki-internal"; print ""; added=1; } {print} END { if (in_services && !added) { print " hxki-web:"; print " container_name: hxki-web"; print " build:"; print " context: /opt/hx-ki/web/hx-ki-website"; print " restart: unless-stopped"; print " networks:"; print " - hxki-internal"; print ""; } } ' "$COMPOSE_FILE" > "${COMPOSE_FILE}.tmp" mv "${COMPOSE_FILE}.tmp" "$COMPOSE_FILE" fi echo "==> Sicherung der Caddyfile anlegen ..." cp "$CADDY_FILE" "${CADDY_FILE}.bak_website_$(date +%Y%m%d_%H%M%S)" echo "==> Prüfe, ob hx-ki.com bereits in Caddyfile existiert ..." if grep -q "hx-ki.com" "$CADDY_FILE"; then echo "ACHTUNG: Ein Eintrag für hx-ki.com existiert bereits." echo "Ich füge KEINEN neuen Block hinzu, um nichts zu zerschießen." echo "Bitte später manuell prüfen/anpassen: $CADDY_FILE" else echo "==> Ergänze hx-ki.com Block in Caddyfile ..." cat >> "$CADDY_FILE" << 'EOF_CF' hx-ki.com { encode gzip reverse_proxy hxki-web:3003 } EOF_CF fi echo "==> Baue Service hxki-web über das Orchester-Compose ..." cd /opt/hx-ki/docker docker compose build hxki-web echo "==> Starte komplettes Orchester (inkl. hxki-web) ..." docker compose up -d echo "==> Caddy neu laden ..." docker exec -it hx-caddy-caddy-1 caddy reload || echo "Hinweis: Caddy-Reload fehlgeschlagen, bitte prüfen." echo "==> Fertig. hxki-web ist jetzt Teil des Orchesters und im internen Netz erreichbar."