x-app: &app build: context: . dockerfile: Dockerfile image: rose-server:latest restart: unless-stopped environment: &app-env DB_HOST: db DB_PORT: "3306" DB_USER: ${DB_USER:-rose} DB_PASSWORD: ${DB_PASSWORD:-change_me} DB_NAME: ${DB_NAME:-ktrose} PUBLIC_HOST: ${PUBLIC_HOST:-127.0.0.1} CHAR_HOST: charserver LOGIN_PORT: ${LOGIN_PORT:-29000} LOGIN_SERVER_NAME: ${LOGIN_SERVER_NAME:-ROSE Login} LOGIN_CREATE_ACCOUNT: ${LOGIN_CREATE_ACCOUNT:-1} CHAR_PORT: ${CHAR_PORT:-29100} CHAR_S2S_PORT: ${CHAR_S2S_PORT:-29110} CHAR_SERVER_NAME: ${CHAR_SERVER_NAME:-Server 1} CHAR_DELETE_TIME: ${CHAR_DELETE_TIME:-3600} WORLD_PORT: ${WORLD_PORT:-29200} WORLD_S2S_PORT: ${WORLD_S2S_PORT:-29210} WORLD_CHANNEL_NAME: ${WORLD_CHANNEL_NAME:-Channel 1} WORLD_MAX_CONNECTIONS: ${WORLD_MAX_CONNECTIONS:-500} WORLD_WELCOME_MSG: ${WORLD_WELCOME_MSG:-Welcome to ROSE} WORLD_SAVE_TIME: ${WORLD_SAVE_TIME:-3600} SHARED_LOGIN_PASS: ${SHARED_LOGIN_PASS:-789456} SHARED_CHAR_PASS: ${SHARED_CHAR_PASS:-456123} SHARED_WORLD_PASS: ${SHARED_WORLD_PASS:-321654} depends_on: db: condition: service_healthy services: db: image: mariadb:11 restart: unless-stopped environment: MYSQL_RANDOM_ROOT_PASSWORD: "1" MYSQL_DATABASE: ${DB_NAME:-ktrose} MYSQL_USER: ${DB_USER:-rose} MYSQL_PASSWORD: ${DB_PASSWORD:-change_me} volumes: - db-data:/var/lib/mysql - "./database sql files:/docker-entrypoint-initdb.d:ro" healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 5s retries: 20 loginserver: <<: *app command: ["login"] ports: - "${LOGIN_PORT:-29000}:${LOGIN_PORT:-29000}" volumes: - logs:/var/log/roseserver charserver: <<: *app command: ["char"] ports: - "${CHAR_PORT:-29100}:${CHAR_PORT:-29100}" volumes: - logs:/var/log/roseserver - clanmark:/data/clanmark worldserver: <<: *app command: ["world"] ports: - "${WORLD_PORT:-29200}:${WORLD_PORT:-29200}" volumes: - logs:/var/log/roseserver - "./Binary/3DData:/data/3DData:ro" depends_on: db: condition: service_healthy charserver: condition: service_started volumes: db-data: logs: clanmark: