version: "3.9" services: # ------------------------------------------------------------------ # Общий builder-образ. Не запускается как сервис, используется только # как база для остальных через BUILD_IMAGE. # Собери его первым: docker build -f Dockerfile.build -t l2j-build:latest . # ------------------------------------------------------------------ mysql: build: context: . dockerfile: mysql/Dockerfile args: BUILD_IMAGE: l2j-build:latest container_name: l2j-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: - mysql_data:/var/lib/mysql networks: - l2j-net healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"] interval: 10s timeout: 5s retries: 10 loginserver: build: context: . dockerfile: login/Dockerfile args: BUILD_IMAGE: l2j-build:latest container_name: l2j-login restart: unless-stopped depends_on: mysql: condition: service_healthy environment: DB_HOST: mysql DB_PORT: 3306 DB_NAME: ${MYSQL_DATABASE} DB_USER: ${MYSQL_USER} DB_PASSWORD: ${MYSQL_PASSWORD} ports: - "${LOGIN_CLIENT_PORT}:2106" volumes: - ./config/login:/l2j/config_override:ro networks: - l2j-net gameserver: build: context: . dockerfile: game/Dockerfile args: BUILD_IMAGE: l2j-build:latest container_name: l2j-game restart: unless-stopped depends_on: mysql: condition: service_healthy loginserver: condition: service_started environment: DB_HOST: mysql DB_PORT: 3306 DB_NAME: ${MYSQL_DATABASE} DB_USER: ${MYSQL_USER} DB_PASSWORD: ${MYSQL_PASSWORD} LOGIN_HOST: loginserver LOGIN_PORT: ${LOGIN_GAME_PORT} EXTERNAL_HOST: ${EXTERNAL_HOST} ports: - "${GAME_PORT}:7777" volumes: - ./config/game:/l2j/config_override:ro # Геодата монтируем снаружи — см. README, автоматически скачать её нельзя - ./geodata:/l2j/data/geodata:ro networks: - l2j-net networks: l2j-net: driver: bridge volumes: mysql_data: