mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-02-03 02:43:50 +00:00
feat: upgrade
This commit is contained in:
@@ -23,7 +23,7 @@ services:
|
||||
- /usr/local/bin/mysql-entrypoint.sh
|
||||
volumes:
|
||||
- ./scripts/bash/mysql-entrypoint.sh:/usr/local/bin/mysql-entrypoint.sh:ro
|
||||
- ${STORAGE_PATH_LOCAL}/mysql-data:/var/lib/mysql-persistent
|
||||
- mysql-data:/var/lib/mysql-persistent
|
||||
- ${BACKUP_PATH}:/backups
|
||||
- ${HOST_ZONEINFO_PATH}:/usr/share/zoneinfo:ro
|
||||
- ${MYSQL_CONFIG_DIR:-${STORAGE_PATH}/config/mysql/conf.d}:/etc/mysql/conf.d
|
||||
@@ -65,7 +65,9 @@ services:
|
||||
volumes:
|
||||
- ${STORAGE_PATH}/config:/azerothcore/env/dist/etc
|
||||
- ${STORAGE_PATH}/logs:/azerothcore/logs
|
||||
- ${STORAGE_PATH_LOCAL}/mysql-data:/var/lib/mysql-persistent
|
||||
- ${AC_SQL_SOURCE_PATH:-${STORAGE_PATH_LOCAL}/source/azerothcore-playerbots/data/sql}:/azerothcore/data/sql:ro
|
||||
- ${MODULE_SQL_STAGE_PATH:-${STORAGE_PATH}/module-sql-updates}:/modules-sql
|
||||
- mysql-data:/var/lib/mysql-persistent
|
||||
- ${STORAGE_PATH}/modules:/modules
|
||||
- ${BACKUP_PATH}:/backups
|
||||
- ./scripts/bash/db-import-conditional.sh:/tmp/db-import-conditional.sh:ro
|
||||
@@ -99,6 +101,71 @@ services:
|
||||
/tmp/db-import-conditional.sh
|
||||
restart: "no"
|
||||
|
||||
ac-db-guard:
|
||||
profiles: ["db"]
|
||||
image: ${AC_DB_IMPORT_IMAGE}
|
||||
container_name: ${CONTAINER_DB_GUARD}
|
||||
user: "${CONTAINER_USER}"
|
||||
userns_mode: "keep-id"
|
||||
depends_on:
|
||||
ac-mysql:
|
||||
condition: service_healthy
|
||||
ac-storage-init:
|
||||
condition: service_completed_successfully
|
||||
ac-db-import:
|
||||
condition: service_completed_successfully
|
||||
networks:
|
||||
- azerothcore
|
||||
volumes:
|
||||
- ${STORAGE_PATH}/config:/azerothcore/env/dist/etc
|
||||
- ${STORAGE_PATH}/logs:/azerothcore/logs
|
||||
- ${AC_SQL_SOURCE_PATH:-${STORAGE_PATH_LOCAL}/source/azerothcore-playerbots/data/sql}:/azerothcore/data/sql:ro
|
||||
- ${MODULE_SQL_STAGE_PATH:-${STORAGE_PATH}/module-sql-updates}:/modules-sql
|
||||
- mysql-data:/var/lib/mysql-persistent
|
||||
- ${STORAGE_PATH}/modules:/modules
|
||||
- ${BACKUP_PATH}:/backups
|
||||
- ./scripts/bash/db-import-conditional.sh:/tmp/db-import-conditional.sh:ro
|
||||
- ./scripts/bash/restore-and-stage.sh:/tmp/restore-and-stage.sh:ro
|
||||
- ./scripts/bash/db-guard.sh:/tmp/db-guard.sh:ro
|
||||
environment:
|
||||
AC_DATA_DIR: "/azerothcore/data"
|
||||
AC_LOGS_DIR: "/azerothcore/logs"
|
||||
AC_LOGIN_DATABASE_INFO: "${CONTAINER_MYSQL};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_AUTH_NAME}"
|
||||
AC_WORLD_DATABASE_INFO: "${CONTAINER_MYSQL};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_WORLD_NAME}"
|
||||
AC_CHARACTER_DATABASE_INFO: "${CONTAINER_MYSQL};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_CHARACTERS_NAME}"
|
||||
CONTAINER_MYSQL: ${CONTAINER_MYSQL}
|
||||
MYSQL_PORT: ${MYSQL_PORT}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
DB_AUTH_NAME: ${DB_AUTH_NAME}
|
||||
DB_WORLD_NAME: ${DB_WORLD_NAME}
|
||||
DB_CHARACTERS_NAME: ${DB_CHARACTERS_NAME}
|
||||
DB_PLAYERBOTS_NAME: ${DB_PLAYERBOTS_NAME}
|
||||
DB_GUARD_RECHECK_SECONDS: ${DB_GUARD_RECHECK_SECONDS}
|
||||
DB_GUARD_RETRY_SECONDS: ${DB_GUARD_RETRY_SECONDS}
|
||||
DB_GUARD_WAIT_ATTEMPTS: ${DB_GUARD_WAIT_ATTEMPTS}
|
||||
entrypoint:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
chmod +x /tmp/db-import-conditional.sh /tmp/restore-and-stage.sh 2>/dev/null || true
|
||||
exec /bin/bash /tmp/db-guard.sh
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test:
|
||||
- "CMD"
|
||||
- "sh"
|
||||
- "-c"
|
||||
- >
|
||||
file=/tmp/db-guard.ready;
|
||||
[ -f "$${file}" ] || exit 1;
|
||||
now=$$(date +%s);
|
||||
mod=$$(stat -c %Y "$${file}" 2>/dev/null) || exit 1;
|
||||
[ $$(( now - mod )) -lt ${DB_GUARD_HEALTH_MAX_AGE} ] || exit 1
|
||||
interval: ${DB_GUARD_HEALTHCHECK_INTERVAL}
|
||||
timeout: ${DB_GUARD_HEALTHCHECK_TIMEOUT}
|
||||
retries: ${DB_GUARD_HEALTHCHECK_RETRIES}
|
||||
|
||||
ac-db-init:
|
||||
profiles: ["db"]
|
||||
image: ${MYSQL_IMAGE}
|
||||
@@ -108,7 +175,7 @@ services:
|
||||
ac-db-import:
|
||||
condition: service_completed_successfully
|
||||
volumes:
|
||||
- ${STORAGE_PATH_LOCAL}/mysql-data:/var/lib/mysql-persistent
|
||||
- mysql-data:/var/lib/mysql-persistent
|
||||
- ${BACKUP_PATH}:/backups
|
||||
networks:
|
||||
- azerothcore
|
||||
@@ -237,7 +304,7 @@ services:
|
||||
profiles: ["client-data", "client-data-bots"]
|
||||
image: ${ALPINE_IMAGE}
|
||||
container_name: ac-volume-init
|
||||
user: "0:0"
|
||||
user: "${CONTAINER_USER}"
|
||||
volumes:
|
||||
- ${CLIENT_DATA_PATH:-${STORAGE_PATH}/client-data}:/azerothcore/data
|
||||
- client-data-cache:/cache
|
||||
@@ -245,11 +312,16 @@ services:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
mkdir -p /azerothcore/data
|
||||
echo "🔧 Fixing Docker volume permissions..."
|
||||
chown -R ${CONTAINER_USER} /azerothcore/data /cache
|
||||
chmod -R 755 /azerothcore/data /cache
|
||||
echo "✅ Docker volume permissions fixed"
|
||||
mkdir -p /azerothcore/data /cache
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
echo "🔧 Normalizing client-data volume ownership..."
|
||||
chown -R ${CONTAINER_USER} /azerothcore/data /cache
|
||||
chmod -R 755 /azerothcore/data /cache
|
||||
echo "✅ Docker volume permissions fixed"
|
||||
else
|
||||
echo "ℹ️ Running as $(id -u):$(id -g); skipping ownership changes."
|
||||
fi
|
||||
echo "📦 Client data volumes ready"
|
||||
restart: "no"
|
||||
networks:
|
||||
- azerothcore
|
||||
@@ -258,7 +330,7 @@ services:
|
||||
profiles: ["db", "modules"]
|
||||
image: ${ALPINE_IMAGE}
|
||||
container_name: ac-storage-init
|
||||
user: "0:0"
|
||||
user: "${CONTAINER_USER}"
|
||||
volumes:
|
||||
- ${STORAGE_PATH}:/storage-root
|
||||
- ${STORAGE_PATH_LOCAL}:/local-storage-root
|
||||
@@ -270,11 +342,15 @@ services:
|
||||
mkdir -p /storage-root/config /storage-root/logs /storage-root/modules /storage-root/lua_scripts /storage-root/install-markers
|
||||
mkdir -p /storage-root/config/mysql/conf.d
|
||||
mkdir -p /storage-root/client-data
|
||||
mkdir -p /storage-root/backups /local-storage-root/mysql-data
|
||||
mkdir -p /storage-root/backups
|
||||
# Fix ownership of root directories and all contents
|
||||
chown -R ${CONTAINER_USER} /storage-root /local-storage-root
|
||||
chmod -R 755 /storage-root /local-storage-root
|
||||
echo "✅ Storage permissions initialized"
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
chown -R ${CONTAINER_USER} /storage-root /local-storage-root
|
||||
chmod -R 755 /storage-root /local-storage-root
|
||||
echo "✅ Storage permissions initialized"
|
||||
else
|
||||
echo "ℹ️ Running as $(id -u):$(id -g); assuming host permissions are already correct."
|
||||
fi
|
||||
restart: "no"
|
||||
networks:
|
||||
- azerothcore
|
||||
@@ -333,18 +409,19 @@ services:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
echo "📦 Installing 7z for faster extraction..."
|
||||
apt-get update -qq && apt-get install -y p7zip-full
|
||||
mkdir -p /cache
|
||||
if [ -f /tmp/scripts/bash/download-client-data.sh ]; then
|
||||
chmod +x /tmp/scripts/bash/download-client-data.sh 2>/dev/null || true
|
||||
bash /tmp/scripts/bash/download-client-data.sh
|
||||
echo "🔧 Fixing ownership of extracted files..."
|
||||
chown -R ${CONTAINER_USER} /azerothcore/data
|
||||
echo "✅ Client data extraction and ownership setup complete"
|
||||
else
|
||||
echo "No local client-data script"
|
||||
fi
|
||||
echo "📦 Installing 7z + gosu for client data extraction..."
|
||||
apt-get update -qq && apt-get install -y p7zip-full gosu
|
||||
gosu ${CONTAINER_USER} bash -c '
|
||||
set -e
|
||||
mkdir -p /cache
|
||||
if [ -f /tmp/scripts/bash/download-client-data.sh ]; then
|
||||
chmod +x /tmp/scripts/bash/download-client-data.sh 2>/dev/null || true
|
||||
bash /tmp/scripts/bash/download-client-data.sh
|
||||
echo "✅ Client data extraction completed under UID $(id -u)"
|
||||
else
|
||||
echo "No local client-data script"
|
||||
fi
|
||||
'
|
||||
restart: "no"
|
||||
networks:
|
||||
- azerothcore
|
||||
@@ -450,8 +527,8 @@ services:
|
||||
depends_on:
|
||||
ac-mysql:
|
||||
condition: service_healthy
|
||||
ac-db-import:
|
||||
condition: service_completed_successfully
|
||||
ac-db-guard:
|
||||
condition: service_healthy
|
||||
ac-db-init:
|
||||
condition: service_completed_successfully
|
||||
environment:
|
||||
@@ -486,8 +563,8 @@ services:
|
||||
depends_on:
|
||||
ac-mysql:
|
||||
condition: service_healthy
|
||||
ac-db-import:
|
||||
condition: service_completed_successfully
|
||||
ac-db-guard:
|
||||
condition: service_healthy
|
||||
ac-db-init:
|
||||
condition: service_completed_successfully
|
||||
environment:
|
||||
@@ -525,6 +602,8 @@ services:
|
||||
condition: service_healthy
|
||||
ac-client-data-playerbots:
|
||||
condition: service_completed_successfully
|
||||
ac-db-guard:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
AC_LOGIN_DATABASE_INFO: "${CONTAINER_MYSQL};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_AUTH_NAME}"
|
||||
AC_WORLD_DATABASE_INFO: "${CONTAINER_MYSQL};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_WORLD_NAME}"
|
||||
@@ -578,6 +657,8 @@ services:
|
||||
condition: service_healthy
|
||||
ac-client-data-standard:
|
||||
condition: service_completed_successfully
|
||||
ac-db-guard:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
AC_LOGIN_DATABASE_INFO: "${CONTAINER_MYSQL};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_AUTH_NAME}"
|
||||
AC_WORLD_DATABASE_INFO: "${CONTAINER_MYSQL};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_WORLD_NAME}"
|
||||
@@ -648,11 +729,10 @@ services:
|
||||
command:
|
||||
- -c
|
||||
- |
|
||||
apk add --no-cache curl bash git python3
|
||||
(chmod +x /tmp/scripts/bash/manage-modules.sh /tmp/scripts/bash/manage-modules-sql.sh 2>/dev/null || true) && /tmp/scripts/bash/manage-modules.sh
|
||||
# Fix permissions after module operations
|
||||
chown -R ${CONTAINER_USER} /modules /azerothcore/env/dist/etc 2>/dev/null || true
|
||||
chmod -R 755 /modules /azerothcore/env/dist/etc 2>/dev/null || true
|
||||
apk add --no-cache curl bash git python3 su-exec
|
||||
chmod +x /tmp/scripts/bash/manage-modules.sh /tmp/scripts/bash/manage-modules-sql.sh 2>/dev/null || true
|
||||
echo "🔐 Running module manager as ${CONTAINER_USER}"
|
||||
su-exec ${CONTAINER_USER} /bin/sh -c 'set -e; cd /modules && /tmp/scripts/bash/manage-modules.sh'
|
||||
restart: "no"
|
||||
networks:
|
||||
- azerothcore
|
||||
@@ -697,14 +777,10 @@ services:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
apk add --no-cache bash curl docker-cli
|
||||
chown -R ${CONTAINER_USER} /azerothcore/config /install-markers 2>/dev/null || true
|
||||
chmod -R 755 /azerothcore/config /install-markers 2>/dev/null || true
|
||||
echo "📥 Running local auto-post-install script..."
|
||||
(chmod +x /tmp/scripts/bash/auto-post-install.sh 2>/dev/null || true) && bash /tmp/scripts/bash/auto-post-install.sh
|
||||
# Fix permissions for all files created during post-install
|
||||
chown -R ${CONTAINER_USER} /azerothcore/config /install-markers 2>/dev/null || true
|
||||
chmod -R 755 /azerothcore/config /install-markers 2>/dev/null || true
|
||||
apk add --no-cache bash curl docker-cli su-exec
|
||||
chmod +x /tmp/scripts/bash/auto-post-install.sh 2>/dev/null || true
|
||||
echo "📥 Running post-install as ${CONTAINER_USER}"
|
||||
su-exec ${CONTAINER_USER} bash /tmp/scripts/bash/auto-post-install.sh
|
||||
restart: "no"
|
||||
networks:
|
||||
- azerothcore
|
||||
@@ -774,6 +850,8 @@ services:
|
||||
volumes:
|
||||
client-data-cache:
|
||||
driver: local
|
||||
mysql-data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
azerothcore:
|
||||
|
||||
Reference in New Issue
Block a user