🚀 ci: add Docker deployment for Manacore, Todo, Calendar, and Clock apps

Add complete Docker deployment infrastructure for 4 new applications:
- Dockerfiles for backend (NestJS) and web (SvelteKit) apps
- docker-entrypoint.sh scripts with PostgreSQL wait and schema push
- Updated docker-compose.staging.yml with 7 new services
- Updated CI/CD workflows with build matrix and health checks
This commit is contained in:
Wuesteon 2025-12-08 16:04:50 +01:00
parent bb4e12c36e
commit 5e0b5a8e7a
13 changed files with 898 additions and 0 deletions

View file

@ -24,6 +24,13 @@ on:
- mana-core-auth
- chat-backend
- chat-web
- manacore-web
- todo-backend
- todo-web
- calendar-backend
- calendar-web
- clock-backend
- clock-web
workflow_call:
permissions:
@ -184,6 +191,15 @@ jobs:
# Create chat database (for chat-backend service)
docker compose exec -T postgres psql -U postgres -c "CREATE DATABASE chat;" 2>/dev/null || echo "chat database already exists"
# Create todo database (for todo-backend service)
docker compose exec -T postgres psql -U postgres -c "CREATE DATABASE todo;" 2>/dev/null || echo "todo database already exists"
# Create calendar database (for calendar-backend service)
docker compose exec -T postgres psql -U postgres -c "CREATE DATABASE calendar;" 2>/dev/null || echo "calendar database already exists"
# Create clock database (for clock-backend service)
docker compose exec -T postgres psql -U postgres -c "CREATE DATABASE clock;" 2>/dev/null || echo "clock database already exists"
echo "✅ Databases ready"
EOF
@ -238,6 +254,83 @@ jobs:
exit 1
fi
# Check manacore-web
echo "Checking manacore-web..."
if docker compose exec -T manacore-web wget -q -O - http://localhost:5173/health > /dev/null 2>&1; then
echo "✅ manacore-web is healthy"
else
echo "❌ manacore-web health check failed"
echo "=== Logs ==="
docker compose logs --tail=50 manacore-web
exit 1
fi
# Check todo-backend
echo "Checking todo-backend..."
if docker compose exec -T todo-backend wget -q -O - http://localhost:3018/api/v1/health > /dev/null 2>&1; then
echo "✅ todo-backend is healthy"
else
echo "❌ todo-backend health check failed"
echo "=== Logs ==="
docker compose logs --tail=50 todo-backend
exit 1
fi
# Check todo-web
echo "Checking todo-web..."
if docker compose exec -T todo-web wget -q -O - http://localhost:5188/health > /dev/null 2>&1; then
echo "✅ todo-web is healthy"
else
echo "❌ todo-web health check failed"
echo "=== Logs ==="
docker compose logs --tail=50 todo-web
exit 1
fi
# Check calendar-backend
echo "Checking calendar-backend..."
if docker compose exec -T calendar-backend wget -q -O - http://localhost:3016/api/v1/health > /dev/null 2>&1; then
echo "✅ calendar-backend is healthy"
else
echo "❌ calendar-backend health check failed"
echo "=== Logs ==="
docker compose logs --tail=50 calendar-backend
exit 1
fi
# Check calendar-web
echo "Checking calendar-web..."
if docker compose exec -T calendar-web wget -q -O - http://localhost:5186/health > /dev/null 2>&1; then
echo "✅ calendar-web is healthy"
else
echo "❌ calendar-web health check failed"
echo "=== Logs ==="
docker compose logs --tail=50 calendar-web
exit 1
fi
# Check clock-backend
echo "Checking clock-backend..."
if docker compose exec -T clock-backend wget -q -O - http://localhost:3017/api/v1/health > /dev/null 2>&1; then
echo "✅ clock-backend is healthy"
else
echo "❌ clock-backend health check failed"
echo "=== Logs ==="
docker compose logs --tail=50 clock-backend
exit 1
fi
# Check clock-web
echo "Checking clock-web..."
if docker compose exec -T clock-web wget -q -O - http://localhost:5187/health > /dev/null 2>&1; then
echo "✅ clock-web is healthy"
else
echo "❌ clock-web health check failed"
echo "=== Logs ==="
docker compose logs --tail=50 clock-web
exit 1
fi
echo ""
echo "✅ All health checks passed!"
EOF

View file

@ -86,6 +86,13 @@ jobs:
- { name: 'mana-core-auth', path: 'services/mana-core-auth', port: '3001' }
- { name: 'chat-backend', path: 'apps/chat/apps/backend', port: '3002' }
- { name: 'chat-web', path: 'apps/chat/apps/web', port: '3000' }
- { name: 'manacore-web', path: 'apps/manacore/apps/web', port: '5173' }
- { name: 'todo-backend', path: 'apps/todo/apps/backend', port: '3018' }
- { name: 'todo-web', path: 'apps/todo/apps/web', port: '5188' }
- { name: 'calendar-backend', path: 'apps/calendar/apps/backend', port: '3016' }
- { name: 'calendar-web', path: 'apps/calendar/apps/web', port: '5186' }
- { name: 'clock-backend', path: 'apps/clock/apps/backend', port: '3017' }
- { name: 'clock-web', path: 'apps/clock/apps/web', port: '5187' }
fail-fast: false
steps:
- name: Checkout code