2026-04-20 19:58:42 +02:00
services :
faceai :
image : ${FACEAI_CLIENT_DEV_IMAGE:-node:20-alpine}
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}
2026-04-22 18:41:37 +02:00
FACEAI_LEGACY_RETURN_MODE : ${FACEAI_LEGACY_RETURN_MODE:-direct}
2026-04-20 19:58:42 +02:00
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_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}
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_PKL_ROOT : ${FACEAI_PKL_ROOT:-/data/pkl}
FACEAI_MATCHER_BINARY : ${FACEAI_MATCHER_BINARY:-/app/bin/face_matcher}
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}
2026-04-22 18:41:37 +02:00
tomcat-www :
build :
context : ../local-jsp-docker
dockerfile : tomcat/Dockerfile
container_name : ${LOCAL_JSP_TOMCAT_CONTAINER_NAME:-regalami-local-jsp-tomcat}
2026-04-20 19:58:42 +02:00
restart : unless-stopped
environment :
2026-04-22 18:41:37 +02:00
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}
2026-04-22 22:45:44 +02:00
LOCAL_APP_INSTANCE : ${LOCAL_APP_INSTANCE:-main}
2026-04-22 18:41:37 +02:00
LOCAL_DOCBASE : /data/docbase/
2026-04-20 19:58:42 +02:00
FACEAI_FEATURE_ENABLED : ${FACEAI_FEATURE_ENABLED:-1}
volumes :
2026-04-22 18:41:37 +02:00
- ../www:/workspace/www:ro
2026-04-22 22:45:44 +02:00
- ../rus:/workspace/rus:ro
2026-04-22 18:41:37 +02:00
- ../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
2026-04-20 19:58:42 +02:00
ports :
2026-04-22 18:41:37 +02:00
- "${LOCAL_JSP_TOMCAT_PORT:-8080}:8080"
2026-04-20 19:58:42 +02:00
depends_on :
2026-04-22 18:41:37 +02:00
mysql :
2026-04-20 19:58:42 +02:00
condition : service_healthy
2026-04-22 18:41:37 +02:00
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
2026-04-22 22:45:44 +02:00
- --lower_case_table_names=1
2026-04-22 18:41:37 +02:00
environment :
MYSQL_ROOT_PASSWORD : root
MYSQL_DATABASE : pg
MYSQL_ROOT_HOST : '%'
2026-04-22 22:45:44 +02:00
LOCAL_DB_SEED_DUMP : ${LOCAL_DB_SEED_DUMP:-pg-local-purpose-seed-20260422.sql}
LOCAL_DB_OVERLAY_DUMP : ${LOCAL_DB_OVERLAY_DUMP:-}
2026-04-22 18:41:37 +02:00
LOCAL_DOCBASE : /data/docbase/
LOCAL_MAIL_SMTP_HOST : maildump
LOCAL_MAIL_SMTP_PORT : 1025
LOCAL_SOURCE_DIR : /workspace/www/
2026-04-22 22:45:44 +02:00
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}
2026-04-22 18:41:37 +02:00
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
2026-04-22 22:45:44 +02:00
- 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
2026-04-22 18:41:37 +02:00
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"
2026-04-20 19:58:42 +02:00
volumes :
2026-04-22 18:41:37 +02:00
faceai-runtime :
mysql-data :