x-environment: &common-environment POSTGRES_HOST: ${POSTGRES_HOST} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_PORT: ${POSTGRES_PORT} POSTGRES_EXTERNAL_PORT: ${POSTGRES_EXTERNAL_PORT} POSTGRES_DB: ${POSTGRES_DB} TEST_SERVER: ${TEST_SERVER} DB_ADDR: ${DB_ADDR} DB_PORT: ${DB_PORT} PUBLIC_IP: ${PUBLIC_IP} GAME_MAX_LEVEL: ${GAME_MAX_LEVEL} WEB_APP_URL: ${WEB_APP_URL} WEB_APP_KEY: ${WEB_APP_KEY} services: # PostgreSQL Database postgresql: image: postgresql:16 restart: always environment: # Password for root access POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} ports: - "${POSTGRES_EXTERNAL_PORT}:${POSTGRES_PORT}" expose: - ${POSTGRES_PORT} volumes: - ./storage/database/:/var/lib/postgresql/data/ healthcheck: test: pg_isready -d $POSTGRES_DB interval: 10s timeout: 5s retries: 5 # DBCache Server db: image: ${GAME_IMAGE} restart: always environment: *common-environment expose: - ${DB_PORT} command: db volumes: - ./storage/log/db/:/app/log/ depends_on: postgresql: condition: service_healthy # Auth server auth: image: ${GAME_IMAGE} restart: always environment: <<: *common-environment GAME_HOSTNAME: auth GAME_CHANNEL: 1 GAME_AUTH_SERVER: master GAME_PORT: 11000 GAME_P2P_PORT: 12000 expose: - 11000 - 12000 ports: - "11000:11000" command: game volumes: - ./storage/log/auth/:/app/log/ depends_on: postgresql: condition: service_healthy # Game server (CH1) ch1_first: image: ${GAME_IMAGE} restart: always environment: <<: *common-environment GAME_HOSTNAME: ch1_first GAME_CHANNEL: 1 GAME_MARK_SERVER: 1 GAME_PORT: 13000 GAME_P2P_PORT: 14000 GAME_MAP_ALLOW: 1 4 5 6 3 23 43 112 107 67 68 72 208 302 304 expose: - 13000 - 14000 ports: - "13000:13000" command: game volumes: - ./storage/log/ch1/first/:/app/log/ - ./storage/mark/:/app/mark/ depends_on: postgresql: condition: service_healthy ch1_game1: image: ${GAME_IMAGE} restart: always environment: <<: *common-environment GAME_HOSTNAME: ch1_game1 GAME_CHANNEL: 1 GAME_MARK_SERVER: 0 GAME_PORT: 13001 GAME_P2P_PORT: 14001 GAME_MAP_ALLOW: 21 24 25 26 108 61 63 69 70 73 216 217 303 expose: - 13001 - 14001 ports: - "13001:13001" command: game volumes: - ./storage/log/ch1/game1/:/app/log/ depends_on: postgresql: condition: service_healthy ch1_game2: image: ${GAME_IMAGE} restart: always environment: <<: *common-environment GAME_HOSTNAME: ch1_game2 GAME_CHANNEL: 1 GAME_MARK_SERVER: 0 GAME_PORT: 13002 GAME_P2P_PORT: 14002 GAME_MAP_ALLOW: 41 44 45 46 109 62 64 65 66 71 104 301 351 expose: - 13002 - 14002 ports: - "13002:13002" command: game volumes: - ./storage/log/ch1/game2/:/app/log/ depends_on: postgresql: condition: service_healthy # Game server (game99) game99: image: ${GAME_IMAGE} restart: always environment: <<: *common-environment GAME_HOSTNAME: game99 GAME_CHANNEL: 99 GAME_MARK_SERVER: 0 GAME_PORT: 13099 GAME_P2P_PORT: 14099 GAME_MAP_ALLOW: 113 81 100 101 103 105 110 111 114 118 119 120 121 122 123 124 125 126 127 128 181 182 183 200 expose: - 13099 - 14099 ports: - "13099:13099" command: game volumes: - ./storage/log/game99/:/app/log/ depends_on: postgresql: condition: service_healthy