Production Docker Setup
This document describes the production-ready Docker configuration for the AREA project. The setup provides a secure, scalable, and maintainable deployment environment for all services.
Service Architecture
Core Services
- MariaDB Database
Image:
mariadb:11.4.4
Port: 3306
Persistent volume for data storage
Initialized with custom SQL script
Health monitoring enabled
Environment-based configuration
- Message Queue (RabbitMQ)
Image:
rabbitmq:4.0.4-management-alpine
- Ports:
5672 (AMQP protocol)
15672 (Management UI)
Custom configuration via
rabbitmq.conf
Health monitoring enabled
Management interface for monitoring
Backend Services
- Main Server
Custom Golang-based API server
Port: 8080
SSL certificate support
Health endpoint monitoring
Dependencies: MariaDB, RabbitMQ
Environment-based configuration
- Action Consumer
Dedicated action processing service
Built from main server codebase
Automatic restart on failure
- Depends on:
Main server
MariaDB
RabbitMQ
- Reaction Consumer
Dedicated reaction processing service
Built from main server codebase
Automatic restart on failure
Shares dependencies with Action Consumer
Frontend Services
- Web Client
Node.js-based frontend
Nginx server with SSL
Port: 8081 (HTTPS)
- Features:
Automatic SSL certificate generation
Static file optimization
Gzip compression
Security headers
Cache control
- Mobile Client
Flutter-based mobile application
One-time APK build process
Shared volume for APK distribution
Health monitoring for build completion
Infrastructure Components
Volume Management
- Persistent Volumes
mariadb_data
: Database storagemobile_builds
: APK distributionssl
: Certificate storage
Network Configuration
- area_network
Bridge network driver
Internal service discovery
Isolated container communication
Secure service-to-service communication
Security Features
SSL/TLS encryption for web traffic
Environment variable isolation
Network segmentation
Nginx security headers
Regular security updates
Health monitoring
Automatic container recovery
Deployment Management
Prerequisites
Docker Engine 20.10+
Docker Compose V2
SSL certificates
Configured environment variables
Basic Operations
# Build production images
make prod-build
# Start production environment
make prod-up
# View logs
make prod-logs
# Stop services
make prod-down
# Clean up
make prod-clean
# Restart specific service
make prod-restart-service service=<service_name>
Monitoring & Maintenance
Health Monitoring
Service-specific health checks
RabbitMQ management interface
Docker container logs
Compose service status
Maintenance Tasks
Regular image updates
Database backups
Log rotation
Automatic restarts
Environment variable management
Troubleshooting Guide
Service Health Check
docker compose -f docker-compose.prod.yml ps
Log Investigation
make prod-logs
Service Restart
make prod-restart-service service=<service_name>
Full System Reset
make prod-clean && make prod-build