services: game: build: context: . dockerfile: trackmania.Dockerfile restart: unless-stopped extends: file: docker-compose.core.yml service: tm stdin_open: true environment: TM_XMLRPC_ALLOWED_REMOTE: xaseco volumes: - ./data/tm/cache:/app/GameData/Cache healthcheck: test: [CMD, bash, -c, echo '' >/dev/tcp/127.0.0.1/5000] start_period: 1m start_interval: 10s interval: 5s timeout: 3s retries: 5 downloader: extends: file: docker-compose.core.yml service: xaseco-installer volumes: - ./initdb.d:/cache/localdb healthcheck: test: [CMD, bash, -c, ls /cache/localdb/*] start_period: 1m start_interval: 10s interval: 5s timeout: 3s retries: 5 xaseco: restart: unless-stopped extends: file: docker-compose.core.yml service: xaseco depends_on: game: condition: service_healthy db: condition: service_healthy environment: TM_SERVER_HOST: game MYSQL_HOST: db volumes: - ./data/xaseco:/data db: image: mysql:5 restart: unless-stopped extends: file: docker-compose.core.yml service: db depends_on: downloader: condition: service_completed_successfully command: --sql_mode="" environment: MYSQL_RANDOM_ROOT_PASSWORD: "yes" volumes: - ./data/db:/var/lib/mysql - ./initdb.d:/docker-entrypoint-initdb.d healthcheck: test: [CMD, bash, -c, mysqladmin ping -hlocalhost -u "$$MYSQL_USER" -p"$$MYSQL_PASSWORD"] timeout: 20s retries: 10 volumes: tm-server: {} xaseco: {}