Some checks failed
Profile Linker Docker Build / Build and push Docker image (push) Failing after 3s
- Integrated Cloudflare R2 for template storage and converted file management - Added Google Gemini AI for resume parsing and HTML generation - Created backend API endpoints for templates, conversion, and history - Refactored frontend to use real API instead of mock data - Fixed Docker networking issues (IPv6/IPv4) for R2 connectivity - Added resumeService.ts for frontend API integration - Updated Vite configuration for proper asset serving in Docker - Successfully tested with 13 templates from R2 bucket
43 lines
1.2 KiB
YAML
43 lines
1.2 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
resumeformatter:
|
|
build:
|
|
context: .
|
|
dockerfile: backend/Dockerfile
|
|
target: development
|
|
args:
|
|
# Add a build arg with current timestamp to force rebuild
|
|
CACHEBUST: ${CACHEBUST:-$(date +%s)}
|
|
|
|
ports:
|
|
- "8080:8080" # FastAPI port
|
|
- "5173:5173" # Vite dev server port (if needed)
|
|
|
|
volumes:
|
|
# Mount backend code for development
|
|
- ./backend:/app/backend
|
|
# Don't mount frontend - it's built during docker build
|
|
|
|
environment:
|
|
- NODE_ENV=development
|
|
# FastAPI environment variables
|
|
- HOST=0.0.0.0
|
|
- PORT=8080
|
|
# Application settings
|
|
- APP_NAME=${APP_NAME:-resumeformatter}
|
|
# Gemini AI
|
|
- GEMINI_API_KEY=${GEMINI_API_KEY}
|
|
# Cloudflare R2
|
|
- R2_ENDPOINT=${R2_ENDPOINT}
|
|
- R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID}
|
|
- R2_SECRET_ACCESS_KEY=${R2_SECRET_ACCESS_KEY}
|
|
- R2_BUCKET_NAME=${R2_BUCKET_NAME}
|
|
# Force IPv4 for Python (fixes R2 connection issue)
|
|
- REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
|
|
|
|
sysctls:
|
|
- net.ipv6.conf.all.disable_ipv6=1
|
|
|
|
restart: unless-stopped
|