version: "3.9" services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: ${POSTGRES_USER:-ideamarket} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ideamarket} POSTGRES_DB: ${POSTGRES_DB:-ideamarket} ports: - "5433:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ideamarket"] interval: 5s timeout: 3s retries: 5 redis: image: redis:7-alpine ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 backend: build: context: ./backend dockerfile: Dockerfile environment: DATABASE_URL: postgresql://${POSTGRES_USER:-ideamarket}:${POSTGRES_PASSWORD:-ideamarket}@postgres:5432/${POSTGRES_DB:-ideamarket} REDIS_URL: redis://redis:6379 PORT: 4000 API_KEY_SALT_ROUNDS: ${API_KEY_SALT_ROUNDS:-10} depends_on: postgres: condition: service_healthy redis: condition: service_healthy frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "4000:80" depends_on: - backend volumes: pgdata: