Add app deploy script
This commit is contained in:
Executable
+77
@@ -0,0 +1,77 @@
|
|||||||
|
#!/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"
|
||||||
Reference in New Issue
Block a user