services: # FastAPI Backend backend: build: context: ./backend dockerfile: Dockerfile container_name: gpxify-backend restart: unless-stopped environment: # Application APP_NAME: ${APP_NAME:-GPX Ninja} ENVIRONMENT: ${ENVIRONMENT:-production} DEBUG: ${DEBUG:-False} API_V1_STR: /api/v1 # CORS BACKEND_CORS_ORIGINS: ${BACKEND_CORS_ORIGINS:-https://www.gpx.ninja,http://www.gpx.ninja,https://gpx.ninja,http://gpx.ninja} # Google OAuth GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID} GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET} GOOGLE_REDIRECT_URI: ${GOOGLE_REDIRECT_URI} # Security SECRET_KEY: ${SECRET_KEY} ALGORITHM: HS256 ACCESS_TOKEN_EXPIRE_MINUTES: 30 # Database - Use Coolify-managed DATABASE_URL DATABASE_URL: ${DATABASE_URL} # Upload MAX_UPLOAD_SIZE: ${MAX_UPLOAD_SIZE:-10485760} UPLOAD_DIR: /app/uploads volumes: - gpx_uploads:/app/uploads expose: - "8000" labels: - coolify.managed=true - caddy_0=https://www.gpx.ninja - caddy_0.handle=/api/* - caddy_0.handle.0_reverse_proxy={{upstreams 8000}} networks: - coolify # React Frontend frontend: build: context: ./frontend dockerfile: Dockerfile args: VITE_API_URL: ${VITE_API_URL:-https://www.gpx.ninja} VITE_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-646813821201-le0dqlhd1qr7r3v93rn4ni101ce9ltku.apps.googleusercontent.com} container_name: gpxify-frontend restart: unless-stopped depends_on: - backend expose: - "80" labels: - coolify.managed=true - caddy_1=https://www.gpx.ninja - caddy_1.handle=/* - caddy_1.handle.0_reverse_proxy={{upstreams 80}} networks: - coolify volumes: gpx_uploads: driver: local networks: coolify: external: true