services: portfolio-app: image: ${PORTFOLIO_IMAGE:-amiirkhl-portfolio:latest} container_name: portfolio-app restart: unless-stopped environment: SITE_URL: ${SITE_URL:-https://portfolio.example.com} DATA_DIR: /data healthcheck: test: [ "CMD", "node", "-e", "fetch('http://127.0.0.1:3000/api/health').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))", ] interval: 2s timeout: 2s start_period: 3s retries: 30 volumes: - next-image-cache:/app/.next/cache - portfolio-data:/data networks: - caddy_proxy networks: caddy_proxy: external: true name: caddy_proxy volumes: next-image-cache: portfolio-data: