88 lines
2.8 KiB
YAML
88 lines
2.8 KiB
YAML
|
|
name: pesco-ncr
|
||
|
|
|
||
|
|
services:
|
||
|
|
mysql:
|
||
|
|
image: mysql:8.4
|
||
|
|
command:
|
||
|
|
- --character-set-server=utf8mb4
|
||
|
|
- --collation-server=utf8mb4_unicode_ci
|
||
|
|
environment:
|
||
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-pesco_ncr}
|
||
|
|
MYSQL_USER: ${MYSQL_USER:-ncr_app}
|
||
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||
|
|
POWERBI_RO_PASSWORD: ${POWERBI_RO_PASSWORD}
|
||
|
|
ports:
|
||
|
|
# Published so the on-prem Power BI gateway can reach the reporting views.
|
||
|
|
# Remove or firewall this mapping if external reporting access is not needed.
|
||
|
|
- "${MYSQL_PUBLISHED_PORT:-3306}:3306"
|
||
|
|
volumes:
|
||
|
|
- mysql_data:/var/lib/mysql
|
||
|
|
- ./db/init:/docker-entrypoint-initdb.d:ro
|
||
|
|
healthcheck:
|
||
|
|
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u root -p$$MYSQL_ROOT_PASSWORD --silent"]
|
||
|
|
interval: 5s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 30
|
||
|
|
start_period: 40s
|
||
|
|
restart: unless-stopped
|
||
|
|
|
||
|
|
api:
|
||
|
|
build: ./backend
|
||
|
|
environment:
|
||
|
|
APP_BASE_URL: ${APP_BASE_URL:-http://localhost:8080}
|
||
|
|
LOG_LEVEL: ${LOG_LEVEL:-INFO}
|
||
|
|
AUTH_MODE: ${AUTH_MODE:-entra}
|
||
|
|
ENTRA_TENANT_ID: ${ENTRA_TENANT_ID:-}
|
||
|
|
ENTRA_CLIENT_ID: ${ENTRA_CLIENT_ID:-}
|
||
|
|
ENTRA_CLIENT_SECRET: ${ENTRA_CLIENT_SECRET:-}
|
||
|
|
ENTRA_ALLOWED_GROUP_ID: ${ENTRA_ALLOWED_GROUP_ID:-}
|
||
|
|
ENTRA_API_AUDIENCE: ${ENTRA_API_AUDIENCE:-}
|
||
|
|
INITIAL_ADMIN_EMAILS: ${INITIAL_ADMIN_EMAILS:-}
|
||
|
|
MYSQL_HOST: mysql
|
||
|
|
MYSQL_PORT: 3306
|
||
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-pesco_ncr}
|
||
|
|
MYSQL_USER: ${MYSQL_USER:-ncr_app}
|
||
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||
|
|
ATTACHMENTS_DIR: ${ATTACHMENTS_DIR:-/data/attachments}
|
||
|
|
MAX_UPLOAD_MB: ${MAX_UPLOAD_MB:-25}
|
||
|
|
NOTIFICATIONS_ENABLED_DEFAULT: ${NOTIFICATIONS_ENABLED_DEFAULT:-true}
|
||
|
|
JOB_LOOKUP_PROVIDER: ${JOB_LOOKUP_PROVIDER:-null}
|
||
|
|
VISUAL_DB_HOST: ${VISUAL_DB_HOST:-}
|
||
|
|
VISUAL_DB_PORT: ${VISUAL_DB_PORT:-1433}
|
||
|
|
VISUAL_DB_NAME: ${VISUAL_DB_NAME:-}
|
||
|
|
VISUAL_DB_USER: ${VISUAL_DB_USER:-}
|
||
|
|
VISUAL_DB_PASSWORD: ${VISUAL_DB_PASSWORD:-}
|
||
|
|
VISUAL_SITE_ID: ${VISUAL_SITE_ID:-}
|
||
|
|
SEED_DEMO_DATA: ${SEED_DEMO_DATA:-false}
|
||
|
|
volumes:
|
||
|
|
- attachments_data:/data/attachments
|
||
|
|
depends_on:
|
||
|
|
mysql:
|
||
|
|
condition: service_healthy
|
||
|
|
healthcheck:
|
||
|
|
test: ["CMD", "curl", "-fsS", "http://localhost:8000/api/health"]
|
||
|
|
interval: 10s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 12
|
||
|
|
start_period: 30s
|
||
|
|
restart: unless-stopped
|
||
|
|
|
||
|
|
frontend:
|
||
|
|
build: ./frontend
|
||
|
|
ports:
|
||
|
|
- "${HTTP_PORT:-8080}:80"
|
||
|
|
environment:
|
||
|
|
AUTH_MODE: ${AUTH_MODE:-entra}
|
||
|
|
ENTRA_TENANT_ID: ${ENTRA_TENANT_ID:-}
|
||
|
|
ENTRA_CLIENT_ID: ${ENTRA_CLIENT_ID:-}
|
||
|
|
ENTRA_API_SCOPE: ${ENTRA_API_SCOPE:-}
|
||
|
|
depends_on:
|
||
|
|
api:
|
||
|
|
condition: service_healthy
|
||
|
|
restart: unless-stopped
|
||
|
|
|
||
|
|
volumes:
|
||
|
|
mysql_data:
|
||
|
|
attachments_data:
|