Files
appfactory-tools/scripts/deploy-app.sh
T
2026-05-20 11:27:50 +02:00

78 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
APP_ID="${1:-}"
if [ -z "$APP_ID" ]; then
echo "Usage:"
echo " ./deploy-app.sh <app-id>"
exit 1
fi
BASE_DIR="/opt/appfactory"
WORKSPACE_DIR="$HOME/workspace"
APP_SOURCE_DIR="$WORKSPACE_DIR/$APP_ID"
if [ ! -d "$APP_SOURCE_DIR" ]; then
echo "Missing app source: $APP_SOURCE_DIR"
exit 1
fi
echo "Building Docker image..."
docker build -t "$APP_ID:latest" "$APP_SOURCE_DIR"
COMPOSE_FILE="$BASE_DIR/deploy/apps-compose.yml"
mkdir -p "$BASE_DIR/deploy/generated"
if [ ! -f "$COMPOSE_FILE" ]; then
cat > "$COMPOSE_FILE" <<EOF
services:
EOF
fi
if grep -q "container_name: $APP_ID" "$COMPOSE_FILE"; then
echo "App already registered in compose."
else
cat >> "$COMPOSE_FILE" <<EOF
$APP_ID:
image: $APP_ID:latest
container_name: $APP_ID
restart: unless-stopped
networks:
- appfactory
EOF
fi
if ! grep -q "apps/$APP_ID" "$BASE_DIR/gateway/Caddyfile"; then
cat >> "$BASE_DIR/gateway/Caddyfile" <<EOF
handle_path /apps/$APP_ID/* {
reverse_proxy $APP_ID:8000
}
EOF
fi
echo "Restarting stack..."
cd "$BASE_DIR/deploy"
docker compose -f docker-compose.yml -f apps-compose.yml up -d
docker restart appfactory-caddy
echo ""
echo "DONE"
echo ""
echo "Open:"
echo "http://SERVER_IP/apps/$APP_ID/docs"