mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-02-04 19:33:48 +00:00
variable cleanup
This commit is contained in:
130
readme.md
130
readme.md
@@ -107,7 +107,9 @@ acore-compose/
|
||||
├── docker-compose-azerothcore-tools.env # Tools configuration
|
||||
├── docker-compose-azerothcore-optional.env # Optional services config
|
||||
├── scripts/ # Deployment, cleanup, and backup automation
|
||||
├── local-data/ # Local storage (when not using NFS)
|
||||
├── storage/ # Unified storage root (configurable via STORAGE_ROOT)
|
||||
│ └── azerothcore/ # All persistent data (database, configs, tools)
|
||||
├── backups/ # Database backups
|
||||
└── readme.md # This documentation
|
||||
```
|
||||
|
||||
@@ -160,6 +162,14 @@ cd acore-compose
|
||||
# - docker-compose-azerothcore-database.env: Database settings
|
||||
# - docker-compose-azerothcore-services.env: Game server settings
|
||||
# - docker-compose-azerothcore-tools.env: Management tools settings
|
||||
|
||||
# IMPORTANT: Configure storage location for your environment
|
||||
# For local development (default):
|
||||
# STORAGE_ROOT=./storage
|
||||
# For production with NFS:
|
||||
# STORAGE_ROOT=/nfs/containers
|
||||
# For custom mount:
|
||||
# STORAGE_ROOT=/mnt/azerothcore-data
|
||||
```
|
||||
|
||||
### Step 2: Deploy the Stack
|
||||
@@ -226,10 +236,22 @@ set realmlist YOUR_SERVER_IP
|
||||
|
||||
Configuration is managed through separate `.env` files for each layer:
|
||||
|
||||
#### Storage Configuration (All Layers)
|
||||
- `STORAGE_ROOT`: Root storage path (default: `./storage`)
|
||||
- **Local development**: `./storage`
|
||||
- **Production NFS**: `/nfs/containers`
|
||||
- **Custom mount**: `/mnt/azerothcore-data`
|
||||
- All layers derive their storage paths from `STORAGE_ROOT`:
|
||||
- Database: `${STORAGE_ROOT}/azerothcore`
|
||||
- Services: `${STORAGE_ROOT}/azerothcore`
|
||||
- Tools: `${STORAGE_ROOT}/azerothcore`
|
||||
- Optional: `${STORAGE_ROOT}/azerothcore`
|
||||
|
||||
#### Database Layer (`docker-compose-azerothcore-database.env`)
|
||||
- `MYSQL_ROOT_PASSWORD`: Database root password (default: azerothcore123)
|
||||
- `MYSQL_EXTERNAL_PORT`: External MySQL port (default: 64306)
|
||||
- `STORAGE_PATH`: Data storage path (default: /nfs/containers/azerothcore)
|
||||
- `STORAGE_ROOT`: Root storage path (default: ./storage)
|
||||
- `STORAGE_PATH`: Derived storage path (${STORAGE_ROOT}/azerothcore)
|
||||
- `NETWORK_SUBNET`: Docker network subnet
|
||||
- `BACKUP_RETENTION_DAYS`: Backup retention period
|
||||
|
||||
@@ -237,6 +259,8 @@ Configuration is managed through separate `.env` files for each layer:
|
||||
- `AUTH_EXTERNAL_PORT`: Auth server external port (3784)
|
||||
- `WORLD_EXTERNAL_PORT`: World server external port (8215)
|
||||
- `SOAP_EXTERNAL_PORT`: SOAP API port (7778)
|
||||
- `STORAGE_ROOT`: Root storage path (default: ./storage)
|
||||
- `STORAGE_PATH`: Derived storage path (${STORAGE_ROOT}/azerothcore)
|
||||
- `PLAYERBOT_ENABLED`: Enable/disable playerbots (1/0)
|
||||
- `PLAYERBOT_MAX_BOTS`: Maximum number of bots (default: 40)
|
||||
|
||||
@@ -245,7 +269,8 @@ Configuration is managed through separate `.env` files for each layer:
|
||||
- `KEIRA3_EXTERNAL_PORT`: Database editor port (4201)
|
||||
- `GF_EXTERNAL_PORT`: Grafana monitoring port (3001)
|
||||
- `INFLUXDB_EXTERNAL_PORT`: InfluxDB metrics port (8087)
|
||||
- `STORAGE_PATH_TOOLS`: Tools storage path (default: ./volumes-tools)
|
||||
- `STORAGE_ROOT`: Root storage path (default: ./storage)
|
||||
- `STORAGE_PATH_TOOLS`: Derived storage path (${STORAGE_ROOT}/azerothcore)
|
||||
|
||||
### Realm Configuration
|
||||
|
||||
@@ -265,48 +290,76 @@ SELECT * FROM realmlist;"
|
||||
|
||||
## Volume Management
|
||||
|
||||
### Named Volumes
|
||||
### Storage Architecture
|
||||
|
||||
| Volume Name | Container Mount | Purpose | Can Be Bind Mounted |
|
||||
|-------------|-----------------|---------|---------------------|
|
||||
| `ac_mysql_data` | `/var/lib/mysql` | MySQL database files | ✅ Yes - For backup/migration |
|
||||
| `ac_data` | `/azerothcore/data` | Game data (maps, vmaps, etc.) | ✅ Yes - Required for data files |
|
||||
| `ac_config` | `/azerothcore/env/dist/etc` | Configuration files | ✅ Yes - For custom configs |
|
||||
| `ac_logs` | `/azerothcore/logs` | Application logs | ✅ Yes - For log analysis |
|
||||
| `ac_backup` | `/backups` | Database backups | ✅ Yes - For external backup storage |
|
||||
The deployment uses a unified storage approach controlled by the `STORAGE_ROOT` variable:
|
||||
|
||||
### Bind Mount Examples
|
||||
| Storage Component | Local Path | Production Path | Purpose |
|
||||
|-------------------|------------|-----------------|---------|
|
||||
| **Database Data** | `./storage/azerothcore/mysql-data` | `${STORAGE_ROOT}/azerothcore/mysql-data` | MySQL database files |
|
||||
| **Game Data** | `./storage/azerothcore/data` | `${STORAGE_ROOT}/azerothcore/data` | Maps, vmaps, mmaps, DBC files |
|
||||
| **Configuration** | `./storage/azerothcore/config` | `${STORAGE_ROOT}/azerothcore/config` | Server configuration files |
|
||||
| **Application Logs** | `./storage/azerothcore/logs` | `${STORAGE_ROOT}/azerothcore/logs` | Server and service logs |
|
||||
| **Tools Data** | `./storage/azerothcore/azerothcore/grafana` | `${STORAGE_ROOT}/azerothcore/azerothcore/grafana` | Grafana dashboards |
|
||||
| **Metrics Data** | `./storage/azerothcore/azerothcore/influxdb` | `${STORAGE_ROOT}/azerothcore/azerothcore/influxdb` | InfluxDB time series data |
|
||||
| **Backups** | `./backups` | `./backups` | Database backup files |
|
||||
|
||||
To use bind mounts instead of named volumes, modify the compose file:
|
||||
### Storage Configuration Examples
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
# Replace named volume with bind mount
|
||||
- /srv/azerothcore/mysql:/var/lib/mysql
|
||||
- /srv/azerothcore/data:/azerothcore/data
|
||||
- /srv/azerothcore/config:/azerothcore/env/dist/etc
|
||||
- /srv/azerothcore/logs:/azerothcore/logs
|
||||
- /srv/azerothcore/backups:/backups
|
||||
#### Local Development
|
||||
```bash
|
||||
# All data stored locally in ./storage/
|
||||
STORAGE_ROOT=./storage
|
||||
```
|
||||
|
||||
#### Production with NFS
|
||||
```bash
|
||||
# All data on NFS mount
|
||||
STORAGE_ROOT=/nfs/containers
|
||||
```
|
||||
|
||||
#### Custom Mount Point
|
||||
```bash
|
||||
# All data on dedicated storage mount
|
||||
STORAGE_ROOT=/mnt/azerothcore-data
|
||||
```
|
||||
|
||||
### Unified Storage Benefits
|
||||
|
||||
✅ **Single Mount Point**: Only need to mount one directory in production
|
||||
✅ **Simplified Backup**: All persistent data in one location
|
||||
✅ **Easy Migration**: Copy entire `${STORAGE_ROOT}/azerothcore` directory
|
||||
✅ **Consistent Paths**: All layers use same storage root
|
||||
✅ **Environment Flexibility**: Change storage location via single variable
|
||||
|
||||
### Volume Backup Procedures
|
||||
|
||||
#### Backup MySQL Data:
|
||||
#### Complete Storage Backup:
|
||||
```bash
|
||||
# Create backup of MySQL volume
|
||||
docker run --rm \
|
||||
-v ac_mysql_data:/data \
|
||||
-v $(pwd):/backup \
|
||||
alpine tar czf /backup/mysql-backup-$(date +%Y%m%d).tar.gz -C /data .
|
||||
# Backup entire storage directory (recommended)
|
||||
tar czf azerothcore-storage-backup-$(date +%Y%m%d).tar.gz storage/
|
||||
|
||||
# Or backup to remote location
|
||||
rsync -av storage/ backup-server:/backups/azerothcore/$(date +%Y%m%d)/
|
||||
```
|
||||
|
||||
#### Backup Game Data:
|
||||
#### Component-Specific Backups:
|
||||
```bash
|
||||
# Create backup of game data volume
|
||||
docker run --rm \
|
||||
-v ac_data:/data \
|
||||
-v $(pwd):/backup \
|
||||
alpine tar czf /backup/gamedata-backup-$(date +%Y%m%d).tar.gz -C /data .
|
||||
# Backup just database files
|
||||
tar czf mysql-backup-$(date +%Y%m%d).tar.gz storage/azerothcore/mysql-data/
|
||||
|
||||
# Backup just game data
|
||||
tar czf gamedata-backup-$(date +%Y%m%d).tar.gz storage/azerothcore/data/
|
||||
|
||||
# Backup just configuration
|
||||
tar czf config-backup-$(date +%Y%m%d).tar.gz storage/azerothcore/config/
|
||||
```
|
||||
|
||||
#### Production Storage Backup:
|
||||
```bash
|
||||
# When using custom STORAGE_ROOT
|
||||
source docker-compose-azerothcore-database.env
|
||||
tar czf azerothcore-backup-$(date +%Y%m%d).tar.gz ${STORAGE_ROOT}/azerothcore/
|
||||
```
|
||||
|
||||
## Maintenance
|
||||
@@ -414,15 +467,15 @@ docker logs -f ac-worldserver
|
||||
# Export logs to file
|
||||
docker logs ac-worldserver > worldserver.log 2>&1
|
||||
|
||||
# Clear old logs (if using bind mount)
|
||||
find /srv/azerothcore/logs -name "*.log" -mtime +30 -delete
|
||||
# Clear old logs (adjust path based on STORAGE_ROOT)
|
||||
find ${STORAGE_ROOT}/azerothcore/logs -name "*.log" -mtime +30 -delete
|
||||
```
|
||||
|
||||
#### Log Rotation (using bind mount):
|
||||
```bash
|
||||
# Create logrotate config
|
||||
# Create logrotate config (adjust path based on STORAGE_ROOT)
|
||||
cat > /etc/logrotate.d/azerothcore <<EOF
|
||||
/srv/azerothcore/logs/*.log {
|
||||
${STORAGE_ROOT}/azerothcore/logs/*.log {
|
||||
daily
|
||||
rotate 7
|
||||
compress
|
||||
@@ -441,11 +494,14 @@ The deployment includes a comprehensive automated backup system with individual
|
||||
|
||||
Configure via environment variables in `docker-compose-azerothcore-database.env`:
|
||||
|
||||
- `STORAGE_ROOT`: Root storage path (default: ./storage)
|
||||
- `BACKUP_CRON_SCHEDULE`: Cron expression (default: "0 3 * * *" - 3 AM daily)
|
||||
- `BACKUP_RETENTION_DAYS`: Days to keep backups (default: 7)
|
||||
- `HOST_BACKUP_PATH`: Local backup storage path (default: ./backups)
|
||||
- `HOST_BACKUP_SCRIPTS_PATH`: Backup scripts path (default: ./scripts)
|
||||
|
||||
**Note**: The backup service operates independently of `STORAGE_ROOT` and uses dedicated backup paths for database exports.
|
||||
|
||||
### Backup Features
|
||||
|
||||
✅ **Individual Database Backups**: Separate compressed files for each database
|
||||
|
||||
Reference in New Issue
Block a user