Files
pesco-ncr/docker-compose.yml

91 lines
3.0 KiB
YAML
Raw Normal View History

name: pesco-ncr
services:
mysql:
# Debian-based build by default: the Oracle Linux images (mysql:8.4)
# require an x86-64-v2 CPU and die with "Fatal glibc error: CPU does not
# support x86-64-v2" on PESCO's Docker host. Override via MYSQL_IMAGE.
image: ${MYSQL_IMAGE:-mysql:8.0-debian}
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: