services: soketi: image: "quay.io/soketi/soketi:latest-16-alpine" environment: SOKETI_DEBUG: ${SOKETI_DEBUG} SOKETI_METRICS_SERVER_PORT: ${SOKETI_METRICS_SERVER_PORT} SOKETI_DEFAULT_APP_ID: ${SOKETI_DEFAULT_APP_ID} SOKETI_DEFAULT_APP_KEY: ${SOKETI_DEFAULT_APP_KEY} SOKETI_DEFAULT_APP_SECRET: ${SOKETI_DEFAULT_APP_SECRET} SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES: ${SOKETI_DEFAULT_APP_ENABLE_CLIENT_MESSAGES} SOKETI_DEFAULT_APP_USER_AUTHENTICATION: ${SOKETI_DEFAULT_APP_USER_AUTHENTICATION} ports: - "${SOKETI_PORT:-6001}:6001" - "${SOKETI_METRICS_SERVER_PORT:-9601}:9601" networks: - ns-eatvio labels: - "traefik.enable=false" restart: always memcached: image: "memcached:alpine" networks: - ns-eatvio restart: always labels: - "traefik.enable=false" mysql: image: "mysql:8.0" working_dir: /application networks: - ns-eatvio volumes: - ".:/application" - "./mysql_data:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} TZ: "Evrope/Moscow" ports: - "1094:3306" labels: - "traefik.enable=false" restart: always php-fpm: build: phpdocker/php-fpm working_dir: /application environment: - TZ=Europe/Moscow depends_on: - mysql - worker - frontend - memcached - typesense networks: - ns-eatvio volumes: - "./app:/application" - "./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.4/fpm/conf.d/99-overrides.ini" - "./tbank_certs:/tbank_certs" # - "./eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json:/eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json" labels: - "traefik.enable=false" restart: always frontend: build: phpdocker/front-end command: "npm run dev" working_dir: /application environment: - TZ=Europe/Moscow - CHOKIDAR_USEPOLLING=true networks: - ns-eatvio volumes: - "./app:/application" labels: - "traefik.enable=false" restart: unless-stopped worker: build: phpdocker/worker working_dir: /application environment: - TZ=Europe/Moscow command: "service supervisor start" depends_on: - mysql networks: - ns-eatvio volumes: - "./app:/application" - "./phpdocker/worker/php-ini-overrides.ini:/etc/php/8.4/fpm/conf.d/99-overrides.ini" - "./phpdocker/worker/laravel-worker.conf:/etc/supervisor/conf.d/laravel-worker.conf" - "./tbank_certs:/tbank_certs" # - "./eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json:/eatvio-3467b-firebase-adminsdk-fbsvc-6e149b2a5a.json" labels: - "traefik.enable=false" restart: always webserver: image: "nginx:alpine" working_dir: /application restart: always depends_on: - php-fpm - soketi volumes: - "./app:/application" - "./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf" ports: - "10443:5000" - "1092:80" networks: - web - ns-eatvio labels: - "traefik.docker.network=web" - "traefik.enable=true" - "traefik.frontend.rule=Host:wstesting.eatv.io,testing.eatv.io" - "traefik.port=80" - "traefik.protocol=http" mailhog: image: "mailhog/mailhog" ports: - "8082:8025" networks: - ns-eatvio typesense: build: ./phpdocker/typesense restart: always healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8108/health"] networks: - ns-eatvio volumes: - ./typesense-data:/data command: "--data-dir /data --api-key=typesense --enable-cors" livekit-redis: image: redis:7-alpine command: [ "redis-server", "--appendonly", "no", "--maxmemory", "500mb", "--maxmemory-policy", "allkeys-lru", ] networks: - ns-eatvio volumes: - livekit_redis_data:/data restart: always labels: - "traefik.enable=false" minio: image: minio/minio:latest command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} TZ: Europe/Moscow volumes: - ./minio_data:/data networks: - ns-eatvio - web ports: - "9010:9000" # S3 API - "9011:9001" # Web-консоль MinIO (опционально) labels: - "traefik.docker.network=web" - "traefik.enable=true" - "traefik.frontend.rule=Host:${MINIO_PUBLIC_HOST}" - "traefik.port=9000" - "traefik.protocol=http" livekit: image: livekit/livekit-server:latest depends_on: - livekit-redis networks: - ns-eatvio - web ports: - "${LIVEKIT_PORT:-7880}:7880" - "${LIVEKIT_RTC_TCP_PORT:-7881}:7881" - "50000-50100:50000-50100/udp" - "${LIVEKIT_TURN_UDP_PORT:-3478}:3478/udp" environment: LIVEKIT_CONFIG: | port: 7880 log_level: info rtc: tcp_port: 7881 port_range_start: 50000 port_range_end: 50100 use_external_ip: true redis: address: livekit-redis:6379 keys: ${LIVEKIT_API_KEY}: ${LIVEKIT_API_SECRET} turn: enabled: true domain: ${LIVEKIT_TURN_DOMAIN} udp_port: 3478 # tls_port: 5349 restart: always labels: - "traefik.docker.network=web" - "traefik.enable=true" - "traefik.frontend.rule=Host:${LIVEKIT_TURN_DOMAIN},${LIVEKIT_URL}" - "traefik.port=${LIVEKIT_PORT:-7880}" - "traefik.protocol=http" livekit-egress: image: livekit/egress:latest restart: always depends_on: - livekit - livekit-redis networks: - ns-eatvio environment: LIVEKIT_API_KEY: ${LIVEKIT_API_KEY} LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET} LIVEKIT_WS_URL: ${LIVEKIT_WS_URL} AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER} AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD} LIVEKIT_URL: ${LIVEKIT_URL} REDIS_HOST: livekit-redis:6379 EGRESS_CONFIG_FILE: /config/egress.yaml volumes: - ./livekit/egress.yaml:/config/egress.yaml:ro networks: web: external: true ns-eatvio: external: false volumes: livekit_redis_data: