82 lines
2.8 KiB
YAML
82 lines
2.8 KiB
YAML
|
|
services:
|
||
|
|
db:
|
||
|
|
container_name: lean101-clients-db
|
||
|
|
image: postgres:16-alpine
|
||
|
|
restart: unless-stopped
|
||
|
|
environment:
|
||
|
|
POSTGRES_USER: ${POSTGRES_USER:-lean101}
|
||
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
|
||
|
|
POSTGRES_DB: ${POSTGRES_DB:-lean101}
|
||
|
|
volumes:
|
||
|
|
- clients_db_data:/var/lib/postgresql/data
|
||
|
|
healthcheck:
|
||
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-lean101} -d ${POSTGRES_DB:-lean101}"]
|
||
|
|
interval: 10s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 10
|
||
|
|
start_period: 15s
|
||
|
|
|
||
|
|
backend:
|
||
|
|
container_name: lean101-clients-backend
|
||
|
|
build:
|
||
|
|
context: .
|
||
|
|
dockerfile: backend/Dockerfile
|
||
|
|
restart: unless-stopped
|
||
|
|
environment:
|
||
|
|
APP_NAME: ${APP_NAME:-Lean 101 Clients API}
|
||
|
|
DATABASE_URL: ${DATABASE_URL:-postgresql+psycopg://${POSTGRES_USER:-lean101}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB:-lean101}}
|
||
|
|
CLIENT_NAME: ${CLIENT_NAME:-Hunter Premium Produce}
|
||
|
|
CLIENT_EMAIL: ${CLIENT_EMAIL:-operator@example.com}
|
||
|
|
CLIENT_PASSWORD: ${CLIENT_PASSWORD:?CLIENT_PASSWORD is required}
|
||
|
|
CLIENT_TENANT_ID: ${CLIENT_TENANT_ID:-hunter-premium-produce}
|
||
|
|
ADMIN_NAME: ${ADMIN_NAME:-Lean 101}
|
||
|
|
ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@lean101.local}
|
||
|
|
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD is required}
|
||
|
|
AUTH_SECRET: ${AUTH_SECRET:?AUTH_SECRET is required}
|
||
|
|
CORS_ALLOW_ORIGINS: ${CORS_ALLOW_ORIGINS:-https://clients.lean-101.com.au}
|
||
|
|
depends_on:
|
||
|
|
db:
|
||
|
|
condition: service_healthy
|
||
|
|
healthcheck:
|
||
|
|
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health')"]
|
||
|
|
interval: 30s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 5
|
||
|
|
start_period: 25s
|
||
|
|
|
||
|
|
frontend:
|
||
|
|
container_name: lean101-clients-frontend
|
||
|
|
build:
|
||
|
|
context: .
|
||
|
|
dockerfile: frontend/Dockerfile
|
||
|
|
restart: unless-stopped
|
||
|
|
environment:
|
||
|
|
ORIGIN: ${ORIGIN:-https://clients.lean-101.com.au}
|
||
|
|
PORT: 3000
|
||
|
|
HOST: 0.0.0.0
|
||
|
|
PUBLIC_API_BASE_URL: ${PUBLIC_API_BASE_URL:-https://clients.lean-101.com.au}
|
||
|
|
INTERNAL_API_BASE_URL: ${INTERNAL_API_BASE_URL:-http://backend:8000}
|
||
|
|
PUBLIC_API_PORT: ${PUBLIC_API_PORT:-8000}
|
||
|
|
PUBLIC_MIX_CALCULATOR_SESSION_HISTORY: ${PUBLIC_MIX_CALCULATOR_SESSION_HISTORY:-false}
|
||
|
|
PUBLIC_MIX_CALCULATOR_SESSION_SAVE: ${PUBLIC_MIX_CALCULATOR_SESSION_SAVE:-false}
|
||
|
|
depends_on:
|
||
|
|
backend:
|
||
|
|
condition: service_healthy
|
||
|
|
|
||
|
|
nginx:
|
||
|
|
container_name: lean101-clients
|
||
|
|
image: nginx:1.27-alpine
|
||
|
|
restart: unless-stopped
|
||
|
|
depends_on:
|
||
|
|
frontend:
|
||
|
|
condition: service_started
|
||
|
|
backend:
|
||
|
|
condition: service_healthy
|
||
|
|
ports:
|
||
|
|
- "${CLIENTS_APP_PORT:-8081}:80"
|
||
|
|
volumes:
|
||
|
|
- ./deploy/nginx/clients.lean-101.conf:/etc/nginx/conf.d/default.conf:ro
|
||
|
|
|
||
|
|
volumes:
|
||
|
|
clients_db_data:
|