mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 09:07:20 +00:00
Improve database timeout handling and add local testing setup
- Update database timeout values for better Portainer/NFS compatibility - Add .env-database-local for local testing with reduced resource requirements - Create local data directories and backup script validation - Split compose validation confirms proper service dependency configuration - Increase MySQL health check timeouts: start_period 60s→120s, timeout 10s→15s - Extend database wait times: retries 30→60, sleep 5→10 (total 150s→600s) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
125
docker-compose-azerothcore-tools.yml
Normal file
125
docker-compose-azerothcore-tools.yml
Normal file
@@ -0,0 +1,125 @@
|
||||
# ==============================================
|
||||
# AZEROTHCORE TOOLS DOCKER COMPOSE
|
||||
# ==============================================
|
||||
# Web interfaces and monitoring tools for AzerothCore
|
||||
# This stack connects to the core AzerothCore database
|
||||
|
||||
services:
|
||||
# PHPMyAdmin Database Management Interface
|
||||
ac-phpmyadmin:
|
||||
image: phpmyadmin/phpmyadmin:latest
|
||||
container_name: ac-phpmyadmin
|
||||
environment:
|
||||
PMA_HOST: ${PMA_HOST:-host.docker.internal}
|
||||
PMA_PORT: ${PMA_PORT:-64306}
|
||||
PMA_USER: ${PMA_USER:-root}
|
||||
PMA_PASSWORD: ${DOCKER_DB_ROOT_PASSWORD:-password}
|
||||
MYSQL_ROOT_PASSWORD: ${DOCKER_DB_ROOT_PASSWORD:-password}
|
||||
PMA_ARBITRARY: ${PMA_ARBITRARY:-1}
|
||||
PMA_ABSOLUTE_URI: ${PMA_ABSOLUTE_URI:-}
|
||||
UPLOAD_LIMIT: ${PMA_UPLOAD_LIMIT:-300M}
|
||||
MEMORY_LIMIT: ${PMA_MEMORY_LIMIT:-512M}
|
||||
MAX_EXECUTION_TIME: ${PMA_MAX_EXECUTION_TIME:-600}
|
||||
ports:
|
||||
- "${PMA_EXTERNAL_PORT:-8081}:80"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- azerothcore-tools
|
||||
|
||||
# Keira3 Database Editor (Production Ready)
|
||||
ac-keira3:
|
||||
image: uprightbass360/keira3:latest
|
||||
container_name: ac-keira3
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- KEIRA_PORT=8080
|
||||
- KEIRA_HOST=0.0.0.0
|
||||
- KEIRA_DATABASE_HOST=${KEIRA_DATABASE_HOST:-host.docker.internal}
|
||||
- KEIRA_DATABASE_PORT=${KEIRA_DATABASE_PORT:-64306}
|
||||
- KEIRA_DATABASE_USER=root
|
||||
- KEIRA_DATABASE_PASSWORD=${DOCKER_DB_ROOT_PASSWORD:-password}
|
||||
- KEIRA_DATABASE_NAME=acore_world
|
||||
ports:
|
||||
- "${KEIRA3_EXTERNAL_PORT:-4201}:8080"
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
cpus: '0.5'
|
||||
reservations:
|
||||
memory: 256M
|
||||
cpus: '0.25'
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "curl -f http://localhost:8080/health || nc -z localhost 8080 || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
networks:
|
||||
- azerothcore-tools
|
||||
|
||||
# InfluxDB for Monitoring
|
||||
ac-influxdb:
|
||||
image: influxdb:2.7-alpine
|
||||
container_name: ac-influxdb
|
||||
environment:
|
||||
DOCKER_INFLUXDB_INIT_MODE: ${INFLUXDB_INIT_MODE:-setup}
|
||||
DOCKER_INFLUXDB_INIT_USERNAME: ${INFLUXDB_ADMIN_USER:-acore}
|
||||
DOCKER_INFLUXDB_INIT_PASSWORD: ${INFLUXDB_ADMIN_PASSWORD:-acore123}
|
||||
DOCKER_INFLUXDB_INIT_ORG: ${INFLUXDB_ORG:-azerothcore}
|
||||
DOCKER_INFLUXDB_INIT_BUCKET: ${INFLUXDB_BUCKET:-metrics}
|
||||
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${INFLUXDB_TOKEN:-acore-monitoring-token-12345}
|
||||
INFLUXDB_HTTP_AUTH_ENABLED: ${INFLUXDB_HTTP_AUTH_ENABLED:-true}
|
||||
INFLUXDB_HTTP_HTTPS_ENABLED: ${INFLUXDB_HTTP_HTTPS_ENABLED:-false}
|
||||
ports:
|
||||
- "${INFLUXDB_EXTERNAL_PORT:-8087}:8086"
|
||||
volumes:
|
||||
- ${STORAGE_PATH_TOOLS:-./volumes-tools}/azerothcore/influxdb:/var/lib/influxdb2
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- azerothcore-tools
|
||||
|
||||
# Grafana Monitoring Dashboard
|
||||
ac-grafana:
|
||||
image: grafana/grafana:latest
|
||||
container_name: ac-grafana
|
||||
depends_on:
|
||||
- ac-influxdb
|
||||
environment:
|
||||
GF_SECURITY_ADMIN_USER: ${GF_SECURITY_ADMIN_USER:-admin}
|
||||
GF_SECURITY_ADMIN_PASSWORD: ${GF_SECURITY_ADMIN_PASSWORD:-acore123}
|
||||
GF_INSTALL_PLUGINS: ${GF_INSTALL_PLUGINS:-grafana-piechart-panel}
|
||||
GF_SERVER_ROOT_URL: ${GF_SERVER_ROOT_URL:-http://localhost:3001}
|
||||
GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION: ${GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION:-false}
|
||||
GF_SECURITY_SECRET_KEY: ${GF_SECURITY_SECRET_KEY:-}
|
||||
GF_USERS_ALLOW_SIGN_UP: ${GF_USERS_ALLOW_SIGN_UP:-false}
|
||||
GF_USERS_ALLOW_ORG_CREATE: ${GF_USERS_ALLOW_ORG_CREATE:-false}
|
||||
GF_AUTH_ANONYMOUS_ENABLED: ${GF_AUTH_ANONYMOUS_ENABLED:-false}
|
||||
GF_SERVER_ENABLE_GZIP: ${GF_SERVER_ENABLE_GZIP:-true}
|
||||
GF_SECURITY_COOKIE_SECURE: ${GF_SECURITY_COOKIE_SECURE:-false}
|
||||
GF_SECURITY_COOKIE_SAMESITE: ${GF_SECURITY_COOKIE_SAMESITE:-lax}
|
||||
ports:
|
||||
- "${GF_EXTERNAL_PORT:-3001}:3000"
|
||||
volumes:
|
||||
- ${STORAGE_PATH_TOOLS:-./volumes-tools}/azerothcore/grafana:/var/lib/grafana
|
||||
- ${STORAGE_PATH_TOOLS:-./volumes-tools}/azerothcore/grafana-config:/etc/grafana
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- azerothcore-tools
|
||||
|
||||
networks:
|
||||
azerothcore-tools:
|
||||
driver: bridge
|
||||
name: ${TOOLS_NETWORK_NAME:-azerothcore-tools}
|
||||
ipam:
|
||||
config:
|
||||
- subnet: ${TOOLS_NETWORK_SUBNET:-172.21.0.0/16}
|
||||
gateway: ${TOOLS_NETWORK_GATEWAY:-172.21.0.1}
|
||||
Reference in New Issue
Block a user