PH4H-app-backend/docker/compose.yaml

120 lines
3.7 KiB
YAML

services:
lacpass-backend:
build:
context: ..
dockerfile: ./docker/Dockerfile
container_name: lacpass-backend
image: ips-backend
networks:
- backend
env_file:
- ../.env
environment:
API_PORT: ${API_PORT:-3000}
AUTH_INTERNAL_URL: ${AUTH_INTERNAL_URL:-http://auth:8080}
AUTH_HOSTNAME: ${KEYCLOAK_HOSTNAME:-http://localhost:9083}
AUTH_REALM: ${KEYCLOAK_REALM:-lacpass}
AUTH_CLIENT_ID: ${AUTH_CLIENT_ID:-admin-cli}
# Need to set this after creating a client for Keycloak Admin API access, using service account
AUTH_CLIENT_SECRET: ${KEYCLOAK_ADMIN_CLIENT_SECRET:-bbU4vnqhqe2AJ32XpdQVRVqfRMA82Hnu}
AUTH_EMAIL_REDIRECT_URI: ${AUTH_EMAIL_REDIRECT_URI:-ph4happ://open/validated-email}
AUTH_EMAIL_CLIENT_ID: ${AUTH_EMAIL_CLIENT_ID:-app}
FHIR_BASE_URL: ${FHIR_BASE_URL:-http://lacpass.create.cl:8080}
VHL_BASE_URL: ${VHL_BASE_URL:-http://lacpass.create.cl:8182}
FHIR_MEDIATOR_BASE_URL: ${FHIR_MEDIATOR_BASE_URL:-http://lacpass.create.cl:3000}
API_SWAGGER: ${API_SWAGGER:-true}
WALLET_ENABLED: ${WALLET_ENABLED:-0}
WALLET_URL: ${WALLET_URL:-https://conectathon-balancer.izer.tech/}
WALLET_IDENTIFIER: ${WALLET_IDENTIFIER:-test}
WALLET_API_KEY: ${WALLET_API_KEY:-}
ICVP_VALIDATOR_URL: ${ICVP_VALIDATOR_URL:-http://lacpass.create.cl:7089}
ports:
- "9081:3000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 10s
timeout: 5s
retries: 5
depends_on:
auth:
condition: service_healthy
auth:
image: quay.io/keycloak/keycloak:26.2.5
container_name: auth
env_file:
- ../.env
command: ["start", "--import-realm"]
volumes:
- ../config/keycloak:/opt/keycloak/data/import
environment:
KC_HEALTH_ENABLED: ${KC_HEALTH_ENABLED:-true}
KC_METRICS_ENABLED: ${KC_METRICS_ENABLED:-true}
KC_DB_URL_HOST: auth-db
KC_DB_DATABASE: ${POSTGRES_DB:-keycloak}
KC_DB_USERNAME: ${POSTGRES_USER:-keycloak}
KC_DB_PASSWORD: ${POSTGRES_PASS:-p@ssw0rd}
KC_HOSTNAME: ${KC_HOSTNAME:-localhost}
KC_HTTP_ENABLED: ${KC_HTTP_ENABLED:-true}
KC_HOSTNAME_STRICT_HTTPS: ${KC_HOSTNAME_STRICT_HTTPS:-false}
KC_DB: ${KC_DB:-postgres}
TZ: ${TZ:-America/Argentina/Buenos_Aires}
KC_LOG_LEVEL: ${KC_LOG_LEVEL:-DEBUG}
KC_PROXY_HEADERS: ${KC_PROXY_HEADERS:-xforwarded}
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN:-admin}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-adminpassword}
healthcheck:
test: ["CMD-SHELL", "exec 3<>/dev/tcp/localhost/9000 && echo -e 'GET /health/ready HTTP/1.0\\r\\nHost: localhost\\r\\n\\r\\n' >&3 && grep -q '200 OK' <&3"]
interval: 15s
timeout: 5s
retries: 10
start_period: 40s
ports:
- "9083:8080"
networks:
- backend
- auth
depends_on:
auth-db:
condition: service_healthy
auth-db:
image: postgres:17.5-alpine
container_name: auth-db
volumes:
- auth-data:/var/lib/postgresql/data
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-keycloak}
POSTGRES_USER: ${POSTGRES_USER:-keycloak}
POSTGRES_PASSWORD: ${POSTGRES_PASS:-p@ssw0rd}
healthcheck:
test:
[
"CMD-SHELL",
"pg_isready -U ${POSTGRES_USER:-keycloak} -d ${POSTGRES_DB:-keycloak} -h localhost",
]
interval: 5s
timeout: 3s
retries: 5
networks:
- auth
mailcatcher:
image: haravich/fake-smtp-server:20250615
container_name: mailcatcher
platform: "linux/amd64"
ports:
- "25:1025"
- "9082:1080"
networks:
- auth
volumes:
auth-data:
networks:
auth:
backend: