Files
eatvio-infra/docker-compose.yml

255 lines
6.4 KiB
YAML

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: livekit_egress.yaml
volumes:
- ./livekit_egress.yaml:/config/egress.yaml:ro
networks:
web:
external: true
ns-eatvio:
external: false
volumes:
livekit_redis_data: