services: m3u-editor: image: sparkison/m3u-editor:${IMAGE_TAG:-latest} container_name: m3u-editor environment: # Timezone - TZ=Etc/UTC # Application URL (change to your domain or IP) - APP_URL=${APP_URL:-http://localhost} - APP_PORT=${APP_PORT:-36400} # Postgres Configuration - ENABLE_POSTGRES=true # Use embedded Postgres, disable to use your own Postgres service - PG_DATABASE=${PG_DATABASE:-m3ue} - PG_USER=${PG_USER:-m3ue} - PG_PASSWORD=${PG_PASSWORD:-changeme} - PG_PORT=${PG_PORT:-5432} # Database Connection (m3u-editor) - DB_CONNECTION=pgsql - DB_HOST=localhost - DB_PORT=${PG_PORT:-5432} - DB_DATABASE=${PG_DATABASE:-m3ue} - DB_USERNAME=${PG_USER:-m3ue} - DB_PASSWORD=${PG_PASSWORD:-changeme} # Redis configuration - REDIS_ENABLED=true # Enable embedded Redis - REDIS_SERVER_PORT=${REDIS_PORT:-36790} - REDIS_HOST=${REDIS_HOST:-localhost} - REDIS_PASSWORD=${M3U_PROXY_TOKEN:-changeme} # Must match what start-container sets # M3U Proxy Configuration (External) - M3U_PROXY_ENABLED=true # Use embedded m3u-proxy instance - M3U_PROXY_PORT=${M3U_PROXY_PORT:-38085} - M3U_PROXY_HOST=${M3U_PROXY_HOST:-localhost} # Internal network hostname of m3u-proxy container - M3U_PROXY_TOKEN=${M3U_PROXY_TOKEN:-changeme} volumes: # Persistent configuration data - data:/var/www/config # PostgreSQL data persistence - pgdata:/var/lib/postgresql/data # User-uploaded assets (logos, images, etc.) # Without this, uploaded assets are lost on container recreation - storage:/var/www/html/storage/app/public restart: unless-stopped ports: - "${APP_PORT:-36400}:${APP_PORT:-36400}" # Main application port # - "${PG_PORT:-5432}:${PG_PORT:-5432}" # Uncomment to expose PostgreSQL healthcheck: test: [ "CMD", "curl", "-f", "http://127.0.0.1:${APP_PORT:-36400}/up" ] interval: 30s timeout: 10s retries: 5 start_period: 60s volumes: pgdata: driver: local storage: driver: local data: driver: local