version: "3.9" # Images are published on Docker Hub under scorpionus007. `docker compose up` # pulls those images; `docker compose build` rebuilds and re-tags them. # Override the namespace/tag with IMAGE_NAMESPACE / IMAGE_TAG if needed. services: postgres: image: postgres:16-alpine container_name: peoplepay360_postgres restart: unless-stopped environment: POSTGRES_USER: peoplepay POSTGRES_PASSWORD: peoplepay_local_dev POSTGRES_DB: peoplepay360 ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U peoplepay -d peoplepay360"] interval: 5s timeout: 5s retries: 10 backend: image: ${IMAGE_NAMESPACE:-scorpionus007}/peoplepay360-backend:${IMAGE_TAG:-latest} build: context: ./backend dockerfile: Dockerfile container_name: peoplepay360_backend restart: unless-stopped depends_on: postgres: condition: service_healthy environment: # development so the server syncs the schema and seeds demo data on boot NODE_ENV: development PORT: 4000 DB_HOST: postgres DB_PORT: 5432 DB_NAME: peoplepay360 DB_USER: peoplepay DB_PASSWORD: peoplepay_local_dev JWT_ACCESS_SECRET: change_me_access_secret JWT_REFRESH_SECRET: change_me_refresh_secret JWT_ACCESS_TTL: 15m JWT_REFRESH_TTL: 7d CORS_ORIGIN: http://localhost:8080 ports: - "4000:4000" frontend: image: ${IMAGE_NAMESPACE:-scorpionus007}/peoplepay360-frontend:${IMAGE_TAG:-latest} build: context: ./frontend dockerfile: Dockerfile container_name: peoplepay360_frontend restart: unless-stopped depends_on: - backend ports: - "8080:80" volumes: pgdata: