version: '3.8' services: app: build: context: . dockerfile: Dockerfile ports: - "${PORT}:${PORT}" environment: - ENV=${ENV} - HOST=${HOST} - PORT=${PORT} - JWT_SECRET=${JWT_SECRET} - CLIENT_URL=${CLIENT_URL} - REDIS_URL=${REDIS_URL} - DB_HOST=mariadb - DB_USER=${DB_USER} - DB_PASS=${DB_PASS} - DB_PORT=${DB_PORT} - DB_NAME=${DB_NAME} - ALLOW_DIAGONAL_MOVEMENT=${ALLOW_DIAGONAL_MOVEMENT} - DEFAULT_CHARACTER_ZONE=${DEFAULT_CHARACTER_ZONE} - DEFAULT_CHARACTER_POS_X=${DEFAULT_CHARACTER_POS_X} - DEFAULT_CHARACTER_POS_Y=${DEFAULT_CHARACTER_POS_Y} - SMTP_HOST=${SMTP_HOST} - SMTP_PORT=${SMTP_PORT} - SMTP_USER=${SMTP_USER} - SMTP_PASSWORD=${SMTP_PASSWORD} volumes: - app-public:/user/src/app/public - app-logs:/user/src/app/logs depends_on: - mariadb - redis restart: unless-stopped networks: - app-network mariadb: image: mariadb:10.6 environment: - MYSQL_ROOT_PASSWORD=${DB_PASS} - MYSQL_DATABASE=${DB_NAME} - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASS} volumes: - mariadb-data:/var/lib/mysql ports: - "${DB_PORT}:3306" restart: unless-stopped networks: - app-network command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci'] redis: image: redis:7-alpine command: redis-server --appendonly yes volumes: - redis-data:/data ports: - "6379:6379" restart: unless-stopped networks: - app-network networks: app-network: driver: bridge volumes: app-public: app-logs: mariadb-data: redis-data: