Add database adapter system, production deployment configs, and new dashboard components

- Add PostgreSQL and SQLite database adapters with factory pattern
- Add migration script for SQLite to PostgreSQL
- Add production Dockerfiles and docker-compose configs
- Add deployment documentation and scripts
- Add BIA sync dashboard and matching service
- Add data completeness configuration and components
- Add new dashboard components (BusinessImportanceComparison, ComplexityDynamics, etc.)
- Update various services and routes
- Remove deprecated management-parameters.json and taxonomy files
This commit is contained in:
2026-01-14 00:38:40 +01:00
parent ca21b9538d
commit a7f8301196
73 changed files with 12878 additions and 2003 deletions

26
scripts/backup-database.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
# Backup script for CMDB cache database
# Run daily via cron: 0 2 * * * /path/to/backup-database.sh
BACKUP_DIR="${BACKUP_DIR:-./backups}"
DATE=$(date +%Y%m%d_%H%M%S)
CONTAINER_NAME="${CONTAINER_NAME:-zuyderland-cmdb-gui-backend-1}"
# Create backup directory if it doesn't exist
mkdir -p "$BACKUP_DIR"
# Backup SQLite database
echo "Backing up CMDB cache database..."
docker exec "$CONTAINER_NAME" sqlite3 /app/data/cmdb-cache.db ".backup '/tmp/cmdb-cache-$DATE.db'"
docker cp "$CONTAINER_NAME:/tmp/cmdb-cache-$DATE.db" "$BACKUP_DIR/cmdb-cache-$DATE.db"
docker exec "$CONTAINER_NAME" rm "/tmp/cmdb-cache-$DATE.db"
# Compress backup
echo "Compressing backup..."
gzip "$BACKUP_DIR/cmdb-cache-$DATE.db"
# Cleanup old backups (keep last 30 days)
echo "Cleaning up old backups..."
find "$BACKUP_DIR" -name "cmdb-cache-*.db.gz" -mtime +30 -delete
echo "Backup completed: $BACKUP_DIR/cmdb-cache-$DATE.db.gz"

51
scripts/build-and-push.sh Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
set -e
# Configuration - pas aan naar jouw Gitea instellingen
GITEA_HOST="${GITEA_HOST:-git.zuyderland.nl}"
REPO_PATH="${REPO_PATH:-icmt/cmdb-gui}"
VERSION="${1:-latest}"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}🔨 Building Docker images...${NC}"
echo "Registry: ${GITEA_HOST}/${REPO_PATH}"
echo "Version: ${VERSION}"
echo ""
# Check if logged in
if ! docker info | grep -q "Username"; then
echo -e "${YELLOW}⚠️ Not logged in to Docker registry${NC}"
echo "Please login first:"
echo " docker login ${GITEA_HOST}"
exit 1
fi
# Build backend
echo -e "${GREEN}📦 Building backend...${NC}"
docker build -t ${GITEA_HOST}/${REPO_PATH}/backend:${VERSION} \
-f backend/Dockerfile.prod ./backend
# Build frontend
echo -e "${GREEN}📦 Building frontend...${NC}"
docker build -t ${GITEA_HOST}/${REPO_PATH}/frontend:${VERSION} \
-f frontend/Dockerfile.prod ./frontend
# Push images
echo -e "${GREEN}📤 Pushing images to registry...${NC}"
docker push ${GITEA_HOST}/${REPO_PATH}/backend:${VERSION}
docker push ${GITEA_HOST}/${REPO_PATH}/frontend:${VERSION}
echo ""
echo -e "${GREEN}✅ Build and push complete!${NC}"
echo ""
echo "To deploy, run:"
echo " docker-compose -f docker-compose.prod.registry.yml pull"
echo " docker-compose -f docker-compose.prod.registry.yml up -d"
echo ""
echo "Or use the deploy script:"
echo " ./scripts/deploy.sh ${VERSION}"

71
scripts/deploy.sh Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/bash
set -e
VERSION="${1:-latest}"
COMPOSE_FILE="docker-compose.prod.registry.yml"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}🚀 Deploying version: ${VERSION}${NC}"
echo ""
# Check if compose file exists
if [ ! -f "$COMPOSE_FILE" ]; then
echo -e "${RED}❌ Compose file not found: ${COMPOSE_FILE}${NC}"
echo "Please create it first (see docs/GITEA-DOCKER-REGISTRY.md)"
exit 1
fi
# Check if logged in
if ! docker info | grep -q "Username"; then
echo -e "${YELLOW}⚠️ Not logged in to Docker registry${NC}"
echo "Please login first:"
echo " docker login <gitea-host>"
exit 1
fi
# Update image tags in compose file if using version tags
if [ "$VERSION" != "latest" ]; then
echo -e "${YELLOW}📝 Updating image tags to v${VERSION}...${NC}"
# Create backup
cp ${COMPOSE_FILE} ${COMPOSE_FILE}.bak
# Replace :latest with :v${VERSION} in image tags
sed -i.tmp "s|:latest|:v${VERSION}|g" ${COMPOSE_FILE}
rm ${COMPOSE_FILE}.tmp 2>/dev/null || true
fi
# Pull latest images
echo -e "${GREEN}📥 Pulling images...${NC}"
docker-compose -f ${COMPOSE_FILE} pull
# Deploy
echo -e "${GREEN}🚀 Starting services...${NC}"
docker-compose -f ${COMPOSE_FILE} up -d
# Wait a bit for services to start
echo -e "${YELLOW}⏳ Waiting for services to start...${NC}"
sleep 5
# Show status
echo -e "${GREEN}📊 Service status:${NC}"
docker-compose -f ${COMPOSE_FILE} ps
# Cleanup old images (optional)
echo -e "${YELLOW}🧹 Cleaning up unused images...${NC}"
docker image prune -f
echo ""
echo -e "${GREEN}✅ Deployment complete!${NC}"
echo ""
echo "View logs:"
echo " docker-compose -f ${COMPOSE_FILE} logs -f"
echo ""
echo "Check status:"
echo " docker-compose -f ${COMPOSE_FILE} ps"
echo ""
echo "Stop services:"
echo " docker-compose -f ${COMPOSE_FILE} down"

View File

@@ -0,0 +1,9 @@
#!/bin/bash
# Generate a secure random session secret for production use
echo "Generating secure SESSION_SECRET..."
SECRET=$(openssl rand -hex 32)
echo ""
echo "Add this to your .env.production file:"
echo "SESSION_SECRET=$SECRET"
echo ""