| 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 | |