FloorVisualizer/docker-compose.yml
dindang 94895cbc22 Initial commit: FloorVisualizer backend
- Go API server with PostgreSQL + Redis
- AI floor replacement (OpenRouter Gemini)
- Product database (10 brands, 3539 products)
- Recommendation engine, calculator, articles
- Redis async queue + worker pool
- Hot product caching, brand view tracking
- JWT auth, favorites, projects
- Docker deployment ready

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 09:47:11 +08:00

84 lines
2.0 KiB
YAML

services:
app:
image: floorvisualizer:latest
container_name: floorvisualizer_app
restart: unless-stopped
ports:
- "8099:8099"
volumes:
- floor_outputs:/app/outputs
- floor_outputs:/app/outputs
- floor_logs:
floor_uploads:/app/uploads
- floor_logs:/app/logs
environment:
- PORT=8099
- DATABASE_URL=postgres://postgres:floorviz123@db:5432/floorvisualizer?sslmode=disable
- REDIS_ADDR=redis:6379
- JWT_SECRET=change-this-to-a-strong-secret-in-production
- OPENROUTER_API_KEY=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
- WORKER_COUNT=5
- LOG_DIR=/app/logs
- LOG_LEVEL=INFO
- PROXY_URL=
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
networks:
- floorviz_network
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8099/products?limit=1"]
interval: 30s
timeout: 10s
retries: 3
db:
image: postgres:15
container_name: floorvisualizer_db
restart: unless-stopped
ports:
- "8100:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=floorviz123
- POSTGRES_DB=floorvisualizer
volumes:
- floor_db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
networks:
- floorviz_network
redis:
image: redis:7-alpine
container_name: floorvisualizer_redis
restart: unless-stopped
ports:
- "8101:6379"
volumes:
- floor_redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- floorviz_network
volumes:
floor_db_data:
floor_redis_data:
floor_outputs:
floor_logs:
floor_uploads:
networks:
floorviz_network:
name: floorviz_network
driver: bridge