feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
169
docker-compose.yml
Normal file
169
docker-compose.yml
Normal file
@@ -0,0 +1,169 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
|
||||
db:
|
||||
image: mariadb:10.6
|
||||
container_name: vs-db
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: easystream
|
||||
MYSQL_USER: easystream
|
||||
MYSQL_PASSWORD: easystream
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- db_data:/var/lib/mysql
|
||||
- ./deploy/create_db.sql:/docker-entrypoint-initdb.d/1-create_tables.sql:ro
|
||||
- ./deploy/init_settings.sql:/docker-entrypoint-initdb.d/2-init_settings.sql:ro
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u root -proot --silent || exit 1"]
|
||||
start_period: 120s
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 30
|
||||
|
||||
php:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.php
|
||||
container_name: vs-php
|
||||
working_dir: /srv/easystream
|
||||
environment:
|
||||
TZ: UTC
|
||||
DB_HOST: db
|
||||
DB_NAME: easystream
|
||||
DB_USER: easystream
|
||||
DB_PASS: easystream
|
||||
PREFLIGHT_ENABLE: "1"
|
||||
MAIN_URL: http://localhost:8083
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_DB: 0
|
||||
volumes:
|
||||
- ./:/srv/easystream
|
||||
- rtmp_hls:/var/www/hls:ro
|
||||
- rtmp_rec:/mnt/rec:ro
|
||||
|
||||
|
||||
|
||||
caddy:
|
||||
image: caddy:2-alpine
|
||||
container_name: vs-caddy
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
php:
|
||||
condition: service_started
|
||||
srs:
|
||||
condition: service_started
|
||||
ports:
|
||||
- "8083:80"
|
||||
- "8443:443"
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
- ./:/srv/easystream:ro
|
||||
- rtmp_hls:/var/www/hls:ro
|
||||
- caddy_data:/data
|
||||
- caddy_config:/config
|
||||
|
||||
srs:
|
||||
image: ossrs/srs:5
|
||||
container_name: vs-srs
|
||||
ports:
|
||||
- "1935:1935" # RTMP ingest
|
||||
volumes:
|
||||
- ./deploy/srs.conf:/usr/local/srs/conf/srs.conf:ro
|
||||
- rtmp_hls:/srs/hls
|
||||
- rtmp_rec:/srs/rec
|
||||
command: ["/usr/local/srs/objs/srs", "-c", "/usr/local/srs/conf/srs.conf"]
|
||||
restart: unless-stopped
|
||||
|
||||
cron:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.cron
|
||||
container_name: vs-cron
|
||||
depends_on:
|
||||
php:
|
||||
condition: service_started
|
||||
environment:
|
||||
TZ: UTC
|
||||
DB_HOST: db
|
||||
DB_NAME: easystream
|
||||
DB_USER: easystream
|
||||
DB_PASS: easystream
|
||||
CRON_BASE_URL: http://localhost:8083
|
||||
CRON_SSK: IOpeCV5jyJ6SIbg2ySIB5os5RX3a1a9LIjyJmGfShcPovdx43GmBHgsJTXbo71CD4df4oFKikCZxJS4f
|
||||
VOD_REC_PATH: /mnt/rec
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_DB: 0
|
||||
volumes:
|
||||
- ./:/srv/easystream
|
||||
- rtmp_rec:/mnt/rec:ro
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: vs-redis
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
queue-worker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.php
|
||||
container_name: vs-queue-worker
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
TZ: UTC
|
||||
DB_HOST: db
|
||||
DB_NAME: easystream
|
||||
DB_USER: easystream
|
||||
DB_PASS: easystream
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
WORKER_QUEUES: "default,video,email,notifications"
|
||||
WORKER_SLEEP: 3
|
||||
WORKER_TIMEOUT: 300
|
||||
volumes:
|
||||
- ./:/srv/easystream
|
||||
- rtmp_hls:/var/www/hls:ro
|
||||
- rtmp_rec:/mnt/rec:ro
|
||||
command: php f_scripts/queue_worker.php
|
||||
restart: unless-stopped
|
||||
|
||||
abr:
|
||||
image: jrottenberg/ffmpeg:5.1-ubuntu
|
||||
container_name: vs-abr
|
||||
entrypoint: ["/bin/bash"]
|
||||
command: ["/abr.sh"]
|
||||
depends_on:
|
||||
srs:
|
||||
condition: service_started
|
||||
environment:
|
||||
ABR_STREAM_KEY: testkey
|
||||
volumes:
|
||||
- rtmp_hls:/var/www/hls
|
||||
- ./deploy/abr.sh:/abr.sh:ro
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
redis_data:
|
||||
rtmp_hls:
|
||||
rtmp_rec:
|
||||
caddy_data:
|
||||
caddy_config:
|
||||
Reference in New Issue
Block a user