7 Docker Stacks with 34 Containers
Status: PRODUCTION ACTIVE
Last Updated: 2025-11-09
| # | Stack Name | Path | Containers | Role | Status |
|---|---|---|---|---|---|
| 1 | pro-0kt-stack | /opt/pro-0kt-stack | 16 | Infrastructure | Active |
| 2 | seller1-prod-stack | /opt/seller1-prod-stack | 4 | Production 🔴 | Active |
| 3 | seller1-dev-stack | /opt/seller1-dev-stack | 4 | Development | Active |
| 4 | varbase-stack | /opt/varbase-stack | 3 | Demo | Active |
| 5 | commerce-stack | /opt/commerce-stack | 3 | Demo | Active |
| 6 | myshop-stack | /opt/myshop-stack | 3 | Demo | Active |
| 7 | python-stack | /opt/python-stack | 2 | Apps | Active |
Total Containers: 34
Location: /opt/pro-0kt-stack/
Purpose: Core infrastructure services for all projects
Network: pro-0kt-stack_pro-0kt-network
Containers: 16
| Container Name | Service | Port(s) | RAM | Status |
|---|---|---|---|---|
| pro-0kt-nginx | Nginx Proxy Manager | 80, 81, 443 | ~200MB | Running |
| pro-0kt-homarr | Homarr Dashboard | 7575 | ~150MB | Running |
| pro-0kt-authelia | Authelia OAuth | 9091 | ~50MB | Running |
| pro-0kt-postgres | PostgreSQL Shared | 5432 | ~200MB | Running |
| pro-0kt-mariadb | MariaDB Shared | 3306 | ~150MB | Running |
| pro-0kt-redis | Redis Shared | 6379 | ~50MB | Running |
| pro-0kt-gitea | Gitea Git Hosting | 3000, 2222 | ~200MB | Running |
| pro-0kt-minio | MinIO S3 Storage | 9000, 9001 | ~300MB | Running |
| pro-0kt-portainer | Portainer Docker UI | 9002 | ~100MB | Running |
| pro-0kt-pgadmin | PgAdmin PostgreSQL UI | 5050 | ~100MB | Running |
| pro-0kt-mailhog | Mailhog Email Testing | 1025, 8025 | ~50MB | Running |
| pro-0kt-n8n | N8N Workflow Utils | 5678 | ~150MB | Running |
| pro-0kt-jupyter | Jupyter Notebooks | 8888 | ~500MB | Running |
| pro-0kt-uptime | Uptime Kuma Monitoring | 3001 | ~100MB | Running |
| pro-0kt-restic | Restic Backup Server | N/A | ~50MB | Running |
| pro-0kt-adminer | Adminer DB UI | N/A | ~30MB | Running |
Total Memory: ~2500MB (2.5GB)
cd /opt/pro-0kt-stack
# View status
docker compose ps
# View configuration
docker compose config
# Start all services
docker compose up -d
# Stop all services
docker compose down
# Restart all services
docker compose restart
# View logs
docker compose logs -f
# Specific service logs
docker compose logs <service> --tail 100
# Restart specific service
docker compose restart <service>
# Pull latest images
docker compose pull
# Update and restart
docker compose pull && docker compose up -d
/opt/pro-0kt-stack/
├── docker-compose.yml # Service definitions
├── .env # Environment variables
├── .env.example # Template
├── volumes/ # Local data (also in /mnt/data/)
└── logs/ # Stack logs
Copy from: /mnt/data/
All persistent data stored in:
/mnt/data/
├── nginx/ # NPM + SSL certs
├── homarr/ # Dashboard
├── authelia/ # OAuth config
├── postgres-shared/ # Database data
├── mariadb-shared/ # Database data
├── redis-shared/ # Cache data
├── gitea/ # Git repos
├── minio/ # S3 storage
├── portainer/ # Docker mgmt
├── pgadmin/ # PgAdmin config
├── mailhog/ # Email messages
├── n8n-utils/ # N8N workflows
├── jupyter/ # Notebooks
├── uptime/ # Uptime Kuma
└── restic/ # Backups
# Check all services running
docker compose ps | grep -v "Up"
# Test critical services
docker exec pro-0kt-postgres pg_isready
docker exec pro-0kt-redis redis-cli ping
docker exec pro-0kt-nginx nginx -t
# Check NPM connectivity to other networks
docker network inspect pro-0kt-stack_pro-0kt-network | grep pro-0kt-nginx
Location: /opt/seller1-prod-stack/
Purpose: Production service for seller1.ru (CRITICAL 24/7)
Network: seller1-prod-stack_seller1-prod-network
Containers: 4
Criticality: 🔴 CRITICAL PRODUCTION SERVICE
| Container Name | Service | Port(s) | RAM | Status |
|---|---|---|---|---|
| seller1-prod-web | Drupal/Varbase | 80 | ~124MB | Running |
| seller1-prod-db | PostgreSQL (isolated) | 5432 | ~180MB | Healthy |
| seller1-prod-redis | Redis Cache | 6379 | ~50MB | Running |
| seller1-prod-n8n | N8N Workflows | 5678 | ~168MB | Running |
Total Memory: ~522MB
/mnt/data/seller1-prod/ (417MB)
├── drupal-files/ # Drupal uploads
├── drupal-db/ # PostgreSQL data
├── n8n-data/ # N8N workflows
└── redis-data/ # Cache data
cd /opt/seller1-prod-stack
# View status
docker compose ps
# View logs
docker compose logs -f
# View specific service logs
docker compose logs seller1-prod-web --tail 100
docker compose logs seller1-prod-db --tail 50
# Restart specific service (WITH CONFIRMATION!)
docker compose restart seller1-prod-web
docker compose restart seller1-prod-n8n
# ⚠️ DO NOT run without confirmation:
# docker compose down
# docker compose restart seller1-prod-db
# docker compose stop seller1-prod-web
# Connect to database
docker exec -it seller1-prod-db psql -U postgres
# Check database health
docker exec seller1-prod-db pg_isready
# Backup database
docker exec seller1-prod-db pg_dumpall -U postgres > seller1-prod.sql
# Restore database
docker exec -i seller1-prod-db psql -U postgres < seller1-prod.sql
# Check tables
docker exec seller1-prod-db psql -U postgres -d seller1_prod -c "\dt"
# Real-time resource usage
docker stats seller1-prod-web seller1-prod-db
# Container status
docker ps | grep seller1-prod
# Website accessibility
curl -I https://seller1.ru
# Backend accessibility
curl -I https://pro.seller1.ru
# Backup database
docker exec seller1-prod-db pg_dumpall -U postgres > /var/backups/seller1-prod-$(date +%Y%m%d).sql
# Backup volume data
tar czf /var/backups/seller1-prod-data-$(date +%Y%m%d).tar.gz /mnt/data/seller1-prod/
# Automated backup (runs daily at 04:00)
/opt/scripts/backup-critical.sh
⚠️ CRITICAL - DO NOT without explicit confirmation:
- Stop seller1-prod-web
- Restart seller1-prod-db
- Run docker compose down
- Delete data in /mnt/data/seller1-prod/
✅ SAFE to do:
- View logs
- Check status
- Restart seller1-prod-web
- Run health checks
- View resource usage
If seller1.ru is down:
# 1. Check services
docker ps | grep seller1-prod
# 2. Check logs
cd /opt/seller1-prod-stack
docker compose logs --tail 100
# 3. Check database
docker exec seller1-prod-db pg_isready
# 4. Check web server
docker compose logs seller1-prod-web --tail 50
# 5. Restart web (if needed)
docker compose restart seller1-prod-web
# 6. Verify
curl -I https://seller1.ru
Location: /opt/seller1-dev-stack/
Purpose: Development environment for seller1
Network: seller1-dev-stack_seller1-dev-network
Containers: 4
| Container Name | Service | Port(s) | Role |
|---|---|---|---|
| seller1-dev-web | Drupal/Varbase | 80 | Web server |
| seller1-dev-db | PostgreSQL | 5432 | Database |
| seller1-dev-redis | Redis | 6379 | Cache |
| seller1-dev-n8n | N8N | 5678 | Workflows |
/mnt/data/seller1-dev/ (249MB)
cd /opt/seller1-dev-stack
# View status
docker compose ps
# Start/stop
docker compose up -d
docker compose down
# View logs
docker compose logs -f
# Restart services
docker compose restart
docker compose restart seller1-dev-web
Location: /opt/varbase-stack/
Purpose: Varbase distribution demonstration
Network: varbase-stack_varbase-network
Containers: 3
| Container Name | Service | Port(s) | Role |
|---|---|---|---|
| varbase-web | Varbase | 80 | Web server |
| varbase-db | PostgreSQL | 5432 | Database |
| varbase-redis | Redis | 6379 | Cache |
/mnt/data/varbase/ (746MB - LARGEST!)
cd /opt/varbase-stack
# View status
docker compose ps
# Start/stop
docker compose up -d
docker compose down
# View logs
docker compose logs -f
# Restart
docker compose restart
Location: /opt/commerce-stack/
Purpose: Commerce Kickstart demonstration
Network: commerce-stack_commerce-network
Containers: 3
| Container Name | Service | Port(s) | Role |
|---|---|---|---|
| commerce-web | Drupal Commerce | 80 | Web server |
| commerce-db | MariaDB | 3306 | Database |
| commerce-redis | Redis | 6379 | Cache |
/mnt/data/commerce/ (419MB)
cd /opt/commerce-stack
# View status
docker compose ps
# Start/stop
docker compose up -d
docker compose down
# View logs
docker compose logs -f
# Restart
docker compose restart
Location: /opt/myshop-stack/
Purpose: Drupal Commerce demonstration
Network: myshop-stack_myshop-network
Containers: 3
| Container Name | Service | Port(s) | Role |
|---|---|---|---|
| myshop-web | Drupal Commerce | 80 | Web server |
| myshop-db | MariaDB | 3306 | Database |
| myshop-redis | Redis | 6379 | Cache |
/mnt/data/myshop/ (419MB)
cd /opt/myshop-stack
# View status
docker compose ps
# Start/stop
docker compose up -d
docker compose down
# View logs
docker compose logs -f
# Restart
docker compose restart
Location: /opt/python-stack/
Purpose: Python Flask applications (dev and test)
Network: python-stack_python-network
Containers: 2
| Container Name | Service | Port(s) | Role |
|---|---|---|---|
| python-dev | Flask Dev App | 5000 | Development |
| python-tst | Flask Test App | 5000 | Testing |
/mnt/data/python/ (20KB)
cd /opt/python-stack
# View status
docker compose ps
# Start/stop
docker compose up -d
docker compose down
# View logs
docker compose logs -f
docker compose logs python-dev --tail 100
# Restart
docker compose restart
docker compose restart python-dev
# Quick overview
for stack in /opt/*-stack; do
echo "=== $(basename $stack) ==="
cd $stack && docker compose ps
echo
done
# With resource usage
for stack in /opt/*-stack; do
cd $stack
echo "=== $(basename $stack) ==="
docker compose ps --format "table {{.Names}}\t{{.Status}}\t{{.Size}}"
done
# Restart dev environments only
for stack in seller1-dev varbase commerce myshop python; do
cd /opt/${stack}-stack
echo "Restarting ${stack}-stack..."
docker compose restart
done
# Create comprehensive backup
/opt/scripts/backup-critical.sh
# Or manual backup
for stack in pro-0kt seller1-prod seller1-dev varbase commerce myshop python; do
tar czf /var/backups/${stack}-$(date +%Y%m%d).tar.gz \
/mnt/data/${stack}* 2>/dev/null || true
done
# Resource usage for all containers
docker stats --no-stream | grep -E "CONTAINER|0kt|prod|dev|varbase|commerce|myshop|python"
# By stack
docker stats --no-stream | sort -k 3 -rh
┌─ pro-0kt-stack (Infrastructure)
│ ├─ PostgreSQL Shared
│ ├─ MariaDB Shared
│ └─ NPM (reverse proxy)
│
├─ seller1-prod-stack (Production) 🔴
│ └─ Uses: pro-0kt NPM for routing
│
├─ seller1-dev-stack (Development)
│ └─ Uses: pro-0kt NPM for routing
│
├─ varbase-stack (Demo)
│ └─ Uses: pro-0kt NPM for routing
│
├─ commerce-stack (Demo)
│ └─ Uses: pro-0kt NPM for routing
│
├─ myshop-stack (Demo)
│ └─ Uses: pro-0kt NPM for routing
│
└─ python-stack (Apps)
└─ Uses: pro-0kt NPM for routing
pro-0kt-stack must be running first
- NPM needs to route traffic
- Databases must be available
All stacks depend on pro-0kt-nginx
- If NPM down, all domains return 502
- Restart: cd /opt/pro-0kt-stack && docker compose restart pro-0kt-nginx
Development stacks can use shared databases
- PostgreSQL Shared
- MariaDB Shared
Production stack isolated
- seller1-prod-db is separate
- Can be restored independently
| Stack | RAM |
|---|---|
| pro-0kt-stack | ~2500MB |
| seller1-prod-stack | ~520MB |
| seller1-dev-stack | ~400MB |
| varbase-stack | ~300MB |
| commerce-stack | ~300MB |
| myshop-stack | ~300MB |
| python-stack | ~100MB |
| Total | ~4420MB (4.4GB) |
| Stack | Size |
|---|---|
| pro-0kt-stack | ~5GB |
| seller1-prod-stack | ~417MB |
| seller1-dev-stack | ~249MB |
| varbase-stack | ~746MB |
| commerce-stack | ~419MB |
| myshop-stack | ~419MB |
| python-stack | ~20KB |
| Total | ~7.3GB |
Note: Server has 40GB total, 5GB RAM + 8GB swap
# Safe upgrade procedure
for stack in /opt/*-stack; do
echo "Updating $(basename $stack)..."
cd $stack
docker compose pull
docker compose up -d
docker compose ps
echo "Wait 10 seconds for health checks..."
sleep 10
done
cd /opt/<stack-name>
# Pull latest images
docker compose pull
# Restart with new images
docker compose up -d
# Verify
docker compose ps
docker compose logs -f
# Rollback specific stack
cd /opt/<stack-name>
# Stop current
docker compose down
# Restore from backup (if available)
docker compose up -d
# (Old images should still be available)
# Check status
docker compose ps
$WORKSPACE/infra/@infra-dev-prod-rf/design/ARCHITECTURE.md$WORKSPACE/infra/@infra-dev-prod-rf/management/README.md$WORKSPACE/infra/@infra-dev-prod-rf/infrastructure/SERVER.md$WORKSPACE/infra/@infra-dev-prod-rf/infrastructure/DOMAINS.mdDocument Version: 1.0.0
Last Updated: 2025-11-09
Total Containers: 34
Total Memory: ~4.4GB
Total Disk: ~7.3GB