All checks were successful
Publish FaceAI Container / publish (push) Successful in 13m8s
- Created App.vue for the main application interface with localization support. - Added main.js to bootstrap the Vue application. - Introduced styles.css for application styling. - Configured Vite for development and proxying API requests. - Updated docker-compose files to include the new monitor service. - Added Dockerfile for building the monitor frontend. - Configured Nginx for serving the frontend and proxying API requests. - Updated package.json and package-lock.json to include monitor-frontend workspace. - Added initial SQLite database for audit monitoring.
174 lines
No EOL
6.8 KiB
YAML
174 lines
No EOL
6.8 KiB
YAML
services:
|
|
faceai:
|
|
image: ${FACEAI_CLIENT_DEV_IMAGE:-node:22-trixie-slim}
|
|
working_dir: /app
|
|
command:
|
|
- node
|
|
- docker/run-with-log-file.mjs
|
|
- ${FACEAI_BACKEND_LOG_FILE:-/data/logs/backend.log}
|
|
- npm
|
|
- run
|
|
- start
|
|
- --workspace
|
|
- "@regalami/faceai-backend"
|
|
environment:
|
|
NODE_ENV: ${NODE_ENV:-development}
|
|
PORT: ${FACEAI_PORT:-3001}
|
|
FACEAI_FRONTEND_URL: ${FACEAI_FRONTEND_URL:-http://localhost:3001}
|
|
FACEAI_PUBLIC_BASE_URL: ${FACEAI_PUBLIC_BASE_URL:-http://localhost:3001}
|
|
FACEAI_LEGACY_RETURN_URL: ${FACEAI_LEGACY_RETURN_URL:-http://localhost:8080/faceai_return.php}
|
|
FACEAI_LEGACY_RETURN_MODE: ${FACEAI_LEGACY_RETURN_MODE:-direct}
|
|
FACEAI_LEGACY_HOME_URL: ${FACEAI_LEGACY_HOME_URL:-http://localhost:8080/index.jsp}
|
|
FACEAI_SHARED_SECRET: ${FACEAI_SHARED_SECRET:-change-me}
|
|
FACEAI_SESSION_COOKIE: ${FACEAI_SESSION_COOKIE:-rus_faceai_session}
|
|
FACEAI_REDIS_URL: ${FACEAI_REDIS_URL:-redis://redis:6379}
|
|
FACEAI_QUEUE_NAME: ${FACEAI_QUEUE_NAME:-faceai-searches}
|
|
FACEAI_RUNTIME_ROOT: ${FACEAI_RUNTIME_ROOT:-/data/runtime}
|
|
FACEAI_UPLOAD_ROOT: ${FACEAI_UPLOAD_ROOT:-/data/runtime/uploads}
|
|
FACEAI_LOG_ROOT: ${FACEAI_LOG_ROOT:-/data/logs}
|
|
FACEAI_AUDIT_DB_PATH: ${FACEAI_AUDIT_DB_PATH:-/data/runtime/faceai-audit.sqlite}
|
|
FACEAI_PKL_ROOT: ${FACEAI_PKL_ROOT:-/data/pkl}
|
|
FACEAI_ENABLE_LOCAL_LEGACY_STATIC: ${FACEAI_ENABLE_LOCAL_LEGACY_STATIC:-1}
|
|
FACEAI_LOCAL_LEGACY_STATIC_ROOT: ${FACEAI_LOCAL_LEGACY_STATIC_ROOT:-/legacy-www}
|
|
FACEAI_PROCESSOR_HEARTBEAT_GRACE_MS: ${FACEAI_PROCESSOR_HEARTBEAT_GRACE_MS:-20000}
|
|
volumes:
|
|
- .:/app
|
|
- ./logs:${FACEAI_LOG_ROOT:-/data/logs}
|
|
- ../www:${FACEAI_LOCAL_LEGACY_STATIC_ROOT:-/legacy-www}:ro
|
|
- ../test_pkl:${FACEAI_PKL_ROOT:-/data/pkl}:ro
|
|
- faceai-runtime:${FACEAI_RUNTIME_ROOT:-/data/runtime}
|
|
|
|
faceai-monitor:
|
|
build:
|
|
context: ..
|
|
dockerfile: faceai/docker/monitor-frontend.Dockerfile
|
|
image: ${FACEAI_MONITOR_DEV_IMAGE:-regalami-faceai-monitor-local}
|
|
depends_on:
|
|
faceai:
|
|
condition: service_healthy
|
|
|
|
processor:
|
|
build:
|
|
context: ..
|
|
dockerfile: faceai/docker/processor.Dockerfile
|
|
image: ${FACEAI_PROCESSOR_DEV_IMAGE:-regalami-faceai-processor-local}
|
|
working_dir: /app
|
|
command:
|
|
- node
|
|
- docker/run-with-log-file.mjs
|
|
- ${FACEAI_PROCESSOR_LOG_FILE:-/data/logs/processor.log}
|
|
- npm
|
|
- run
|
|
- start
|
|
- --workspace
|
|
- "@regalami/faceai-processor"
|
|
environment:
|
|
NODE_ENV: ${NODE_ENV:-development}
|
|
FACEAI_REDIS_URL: ${FACEAI_REDIS_URL:-redis://redis:6379}
|
|
FACEAI_QUEUE_NAME: ${FACEAI_QUEUE_NAME:-faceai-searches}
|
|
FACEAI_RUNTIME_ROOT: ${FACEAI_RUNTIME_ROOT:-/data/runtime}
|
|
FACEAI_LOG_ROOT: ${FACEAI_LOG_ROOT:-/data/logs}
|
|
FACEAI_AUDIT_DB_PATH: ${FACEAI_AUDIT_DB_PATH:-/data/runtime/faceai-audit.sqlite}
|
|
FACEAI_PKL_ROOT: ${FACEAI_PKL_ROOT:-/data/pkl}
|
|
FACEAI_MATCHER_BINARY: ${FACEAI_MATCHER_BINARY:-/app/bin/face_matcher}
|
|
FACEAI_MATCHER_TOLERANCE: ${FACEAI_MATCHER_TOLERANCE:-0.5}
|
|
FACEAI_WORKER_CONCURRENCY: ${FACEAI_WORKER_CONCURRENCY:-2}
|
|
FACEAI_WORKER_TIMEOUT_MS: ${FACEAI_WORKER_TIMEOUT_MS:-300000}
|
|
FACEAI_PROCESSOR_HEARTBEAT_INTERVAL_MS: ${FACEAI_PROCESSOR_HEARTBEAT_INTERVAL_MS:-5000}
|
|
FACEAI_PROCESSOR_HEARTBEAT_TTL_SECONDS: ${FACEAI_PROCESSOR_HEARTBEAT_TTL_SECONDS:-20}
|
|
volumes:
|
|
- ./logs:${FACEAI_LOG_ROOT:-/data/logs}
|
|
- ../test_pkl:${FACEAI_PKL_ROOT:-/data/pkl}:ro
|
|
- faceai-runtime:${FACEAI_RUNTIME_ROOT:-/data/runtime}
|
|
|
|
tomcat-www:
|
|
build:
|
|
context: ../local-jsp-docker
|
|
dockerfile: tomcat/Dockerfile
|
|
container_name: ${LOCAL_JSP_TOMCAT_CONTAINER_NAME:-regalami-local-jsp-tomcat}
|
|
restart: unless-stopped
|
|
environment:
|
|
LOCAL_DB_HOST: mysql
|
|
LOCAL_DB_PORT: 3306
|
|
LOCAL_DB_NAME: pg
|
|
LOCAL_DB_USER: root
|
|
LOCAL_DB_PASSWORD: root
|
|
FACEAI_HANDOFF_URL: ${FACEAI_HANDOFF_URL:-http://localhost:3001/dev/legacy/launch}
|
|
FACEAI_DEV_USER_ID: ${FACEAI_DEV_USER_ID:-1}
|
|
FACEAI_DEV_DISPLAY_NAME: ${FACEAI_DEV_DISPLAY_NAME:-Local Model User}
|
|
FACEAI_DEV_EMAIL: ${FACEAI_DEV_EMAIL:-local.model.user@example.invalid}
|
|
FACEAI_DEV_MEMBERSHIP_STATUS: ${FACEAI_DEV_MEMBERSHIP_STATUS:-active}
|
|
LOCAL_APP_INSTANCE: ${LOCAL_APP_INSTANCE:-main}
|
|
LOCAL_DOCBASE: /data/docbase/
|
|
FACEAI_FEATURE_ENABLED: ${FACEAI_FEATURE_ENABLED:-1}
|
|
volumes:
|
|
- ../www:/workspace/www:ro
|
|
- ../rus:/workspace/rus:ro
|
|
- ../test_pkl:/workspace/test_pkl:ro
|
|
- ../local-jsp-docker/runtime/docbase:/data/docbase
|
|
- ../local-jsp-docker/runtime/tomcat-work:/usr/local/tomcat/work
|
|
- ../local-jsp-docker/runtime/tomcat-logs:/usr/local/tomcat/logs
|
|
ports:
|
|
- "${LOCAL_JSP_TOMCAT_PORT:-8080}:8080"
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
maildump:
|
|
condition: service_started
|
|
|
|
mysql:
|
|
image: ${LOCAL_JSP_MYSQL_IMAGE:-mysql:8.4}
|
|
container_name: ${LOCAL_JSP_MYSQL_CONTAINER_NAME:-regalami-local-jsp-mysql}
|
|
restart: unless-stopped
|
|
command:
|
|
- --max_allowed_packet=1G
|
|
- --net_read_timeout=600
|
|
- --net_write_timeout=600
|
|
- --lower_case_table_names=1
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: root
|
|
MYSQL_DATABASE: pg
|
|
MYSQL_ROOT_HOST: '%'
|
|
LOCAL_DB_SEED_DUMP: ${LOCAL_DB_SEED_DUMP:-pg-local-purpose-seed-20260422.sql}
|
|
LOCAL_DB_OVERLAY_DUMP: ${LOCAL_DB_OVERLAY_DUMP:-}
|
|
LOCAL_DOCBASE: /data/docbase/
|
|
LOCAL_MAIL_SMTP_HOST: maildump
|
|
LOCAL_MAIL_SMTP_PORT: 1025
|
|
LOCAL_SOURCE_DIR: /workspace/www/
|
|
LOCAL_TEST_USER_ID: ${LOCAL_TEST_USER_ID:-2}
|
|
LOCAL_TEST_USER_LOGIN: ${LOCAL_TEST_USER_LOGIN:-test}
|
|
LOCAL_TEST_USER_PASSWORD: ${LOCAL_TEST_USER_PASSWORD:-test1}
|
|
LOCAL_TEST_USER_EMAIL: ${LOCAL_TEST_USER_EMAIL:-localtest@regalamiunsorriso.test}
|
|
volumes:
|
|
- mysql-data:/var/lib/mysql
|
|
- ../db:/seed:ro
|
|
- ../www:/workspace/www:ro
|
|
- ../local-jsp-docker/mysql/init:/docker-entrypoint-initdb.d:ro
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- sh
|
|
- -lc
|
|
- mysql -uroot -p"$$MYSQL_ROOT_PASSWORD" -Nse "SELECT CASE WHEN EXISTS (SELECT 1 FROM pg.parm WHERE codice = 'REWRITE_URL_ENABLE' AND numero = 1) AND EXISTS (SELECT 1 FROM pg.gara LIMIT 1) THEN 1 ELSE 0 END" | grep -qx 1
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 30
|
|
start_period: 60s
|
|
|
|
maildump:
|
|
build:
|
|
context: ../local-jsp-docker
|
|
dockerfile: maildump/Dockerfile
|
|
container_name: ${LOCAL_JSP_MAILDUMP_CONTAINER_NAME:-regalami-local-jsp-maildump}
|
|
restart: unless-stopped
|
|
environment:
|
|
MAILDUMP_OUTPUT_DIR: /out
|
|
MAILDUMP_SMTP_PORT: 1025
|
|
volumes:
|
|
- ../local-jsp-docker/runtime/maildump/out:/out
|
|
ports:
|
|
- "${LOCAL_JSP_MAILDUMP_PORT:-8025}:8025"
|
|
|
|
volumes:
|
|
faceai-runtime:
|
|
mysql-data: |