version: '3.8' services: youtube-downloader: build: context: . dockerfile: Dockerfile container_name: yt-downloader restart: unless-stopped ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 volumes: # Optional: Mount downloads directory for persistence # Uncomment if you want to keep downloaded files # - ./downloads:/app/downloads healthcheck: test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - yt-downloader-network # Resource limits (adjust based on your needs) deploy: resources: limits: cpus: '2' memory: 2G reservations: cpus: '0.5' memory: 512M # Security options security_opt: - no-new-privileges:true read_only: false tmpfs: - /tmp networks: yt-downloader-network: driver: bridge