Files

95 lines
2.5 KiB
YAML

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: