@fairmint/canton-node-sdk
Version:
Canton Node SDK
177 lines (167 loc) • 6.94 kB
YAML
name: splice-validator
volumes:
postgres-splice:
domain-upgrade-dump:
networks:
splice_validator:
driver: bridge
services:
postgres-splice:
image: "postgres:${SPLICE_POSTGRES_VERSION}"
environment:
- POSTGRES_USER=${SPLICE_DB_USER}
- POSTGRES_PASSWORD=${SPLICE_DB_PASSWORD}
- POSTGRES_DB=postgres # not used by splice
# Any env vars starting with CREATE_DATABASE_ will be used to create a database
- CREATE_DATABASE_participant=participant-${MIGRATION_ID}
- CREATE_DATABASE_validator=validator
volumes:
- postgres-splice:/var/lib/postgresql/data
- ./postgres-entrypoint.sh:/postgres-entrypoint.sh
entrypoint: /postgres-entrypoint.sh
user: "postgres"
command:
- postgres
- -c
- max_connections=8000
healthcheck:
test: "pg_isready -U ${SPLICE_DB_USER} -d postgres"
interval: 10s
timeout: 3s
retries: 3
start_period: 60s
networks:
- ${DOCKER_NETWORK:-splice_validator}
participant:
image: "${IMAGE_REPO}canton-participant:${IMAGE_TAG}"
environment:
- AUTH_JWKS_URL=${AUTH_JWKS_URL}
- AUTH_TARGET_AUDIENCE=${LEDGER_API_AUTH_AUDIENCE}
- CANTON_PARTICIPANT_ADMIN_USER_NAME=${LEDGER_API_ADMIN_USER}
- CANTON_PARTICIPANT_POSTGRES_SERVER=${SPLICE_DB_SERVER}
- CANTON_PARTICIPANT_POSTGRES_SCHEMA=participant
- CANTON_PARTICIPANT_POSTGRES_USER=${SPLICE_DB_USER}
- CANTON_PARTICIPANT_POSTGRES_PASSWORD=${SPLICE_DB_PASSWORD}
- CANTON_PARTICIPANT_POSTGRES_DB=participant-${MIGRATION_ID}
- CANTON_PARTICIPANT_POSTGRES_PORT=${SPLICE_DB_PORT}
depends_on:
postgres-splice:
condition: service_healthy
restart: always
networks:
- ${DOCKER_NETWORK:-splice_validator}
chown-domain-upgrade-dump:
image: busybox:1.37.0
volumes:
- domain-upgrade-dump:/domain-upgrade-dump
command: ["chown", "-R", "1001:1001", "/domain-upgrade-dump"]
validator:
image: "${IMAGE_REPO}validator-app:${IMAGE_TAG}"
environment:
- SPLICE_APP_VALIDATOR_LEDGER_API_AUTH_URL=${AUTH_WELLKNOWN_URL}
- SPLICE_APP_VALIDATOR_LEDGER_API_AUTH_CLIENT_ID=${VALIDATOR_AUTH_CLIENT_ID}
- SPLICE_APP_VALIDATOR_LEDGER_API_AUTH_CLIENT_SECRET=${VALIDATOR_AUTH_CLIENT_SECRET}
- SPLICE_APP_VALIDATOR_LEDGER_API_AUTH_AUDIENCE=${LEDGER_API_AUTH_AUDIENCE}
- SPLICE_APP_VALIDATOR_LEDGER_API_AUTH_SCOPE=${LEDGER_API_AUTH_SCOPE:-}
- SPLICE_APP_VALIDATOR_LEDGER_API_AUTH_USER_NAME=${LEDGER_API_ADMIN_USER}
- SPLICE_APP_VALIDATOR_WALLET_USER_NAME=${WALLET_ADMIN_USER}
- SPLICE_APP_VALIDATOR_AUTH_AUDIENCE=${VALIDATOR_AUTH_AUDIENCE}
- SPLICE_APP_VALIDATOR_AUTH_JWKS_URL=${AUTH_JWKS_URL}
- SPLICE_APP_VALIDATOR_PARTICIPANT_ADDRESS=participant
- SPLICE_APP_VALIDATOR_SV_SPONSOR_ADDRESS=${SPONSOR_SV_ADDRESS}
- SPLICE_APP_VALIDATOR_ONBOARDING_SECRET=${ONBOARDING_SECRET}
- SPLICE_APP_VALIDATOR_SCAN_ADDRESS=${SCAN_ADDRESS}
- SPLICE_APP_VALIDATOR_PARTICIPANT_IDENTIFIER=${PARTICIPANT_IDENTIFIER}
- SPLICE_APP_VALIDATOR_PARTY_HINT=${PARTY_HINT}
- SPLICE_APP_CONTACT_POINT=${CONTACT_POINT}
- |
ADDITIONAL_CONFIG_PERSISTENCE=
canton.validator-apps.validator_backend.storage {
type = postgres
config {
dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
properties = {
databaseName = validator
currentSchema = validator
serverName = ${SPLICE_DB_SERVER}
portNumber = ${SPLICE_DB_PORT}
user = ${SPLICE_DB_USER}
password = ${SPLICE_DB_PASSWORD}
tcpKeepAlive = true
}
}
}
- |
ADDITIONAL_CONFIG_APP_INSTANCES=
canton.validator-apps.validator_backend.app-instances={}
- |
ADDITIONAL_CONFIG_BFT_SCAN=
canton.validator-apps.validator_backend.scan-client.type = "bft"
canton.validator-apps.validator_backend.scan-client.seed-urls = [ "${SCAN_ADDRESS}" ]
- |
ADDITIONAL_CONFIG_MIGRATION_ID=
canton.validator-apps.validator_backend {
domain-migration-id = ${MIGRATION_ID}
}
- ADDITIONAL_CONFIG_GLOBAL_DOMAIN_UPGRADE_DUMP_PATH=canton.validator-apps.validator_backend.domain-migration-dump-path = "/domain-upgrade-dump/domain_migration_dump.json"
depends_on:
chown-domain-upgrade-dump:
condition: service_completed_successfully
postgres-splice:
condition: service_healthy
restart: always
networks:
- ${DOCKER_NETWORK:-splice_validator}
volumes:
- domain-upgrade-dump:/domain-upgrade-dump
wallet-web-ui:
image: "${IMAGE_REPO}wallet-web-ui:${IMAGE_TAG}"
environment:
- SPLICE_APP_UI_AUTH_AUDIENCE=${VALIDATOR_AUTH_AUDIENCE}
- SPLICE_APP_UI_AUTH_CLIENT_ID=${WALLET_UI_CLIENT_ID}
- SPLICE_APP_UI_AUTH_URL=${AUTH_URL}
- SPLICE_APP_UI_HTTP_URL=true
- SPLICE_APP_UI_NETWORK_NAME=${SPLICE_APP_UI_NETWORK_NAME}
- SPLICE_APP_UI_NETWORK_FAVICON_URL=${SPLICE_APP_UI_NETWORK_FAVICON_URL}
- SPLICE_APP_UI_AMULET_NAME=${SPLICE_APP_UI_AMULET_NAME}
- SPLICE_APP_UI_AMULET_NAME_ACRONYM=${SPLICE_APP_UI_AMULET_NAME_ACRONYM}
- SPLICE_APP_UI_NAME_SERVICE_NAME=${SPLICE_APP_UI_NAME_SERVICE_NAME}
- SPLICE_APP_UI_NAME_SERVICE_NAME_ACRONYM=${SPLICE_APP_UI_NAME_SERVICE_NAME_ACRONYM}
networks:
- ${DOCKER_NETWORK:-splice_validator}
ans-web-ui:
image: "${IMAGE_REPO}ans-web-ui:${IMAGE_TAG}"
environment:
- SPLICE_APP_UI_AUTH_AUDIENCE=${VALIDATOR_AUTH_AUDIENCE}
- SPLICE_APP_UI_AUTH_CLIENT_ID=${ANS_UI_CLIENT_ID}
- SPLICE_APP_UI_AUTH_URL=${AUTH_URL}
- SPLICE_APP_WALLET_REDIRECT=http://wallet.localhost
- SPLICE_APP_UI_HTTP_URL=true
- SPLICE_APP_UI_NETWORK_NAME=${SPLICE_APP_UI_NETWORK_NAME}
- SPLICE_APP_UI_NETWORK_FAVICON_URL=${SPLICE_APP_UI_NETWORK_FAVICON_URL}
- SPLICE_APP_UI_AMULET_NAME=${SPLICE_APP_UI_AMULET_NAME}
- SPLICE_APP_UI_AMULET_NAME_ACRONYM=${SPLICE_APP_UI_AMULET_NAME_ACRONYM}
- SPLICE_APP_UI_NAME_SERVICE_NAME=${SPLICE_APP_UI_NAME_SERVICE_NAME}
- SPLICE_APP_UI_NAME_SERVICE_NAME_ACRONYM=${SPLICE_APP_UI_NAME_SERVICE_NAME_ACRONYM}
networks:
- ${DOCKER_NETWORK:-splice_validator}
nginx:
image: "nginx:${NGINX_VERSION}"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./nginx:/etc/nginx/includes
ports:
- "${HOST_BIND_IP:-127.0.0.1}:80:80"
depends_on:
- ans-web-ui
- wallet-web-ui
- validator
restart: always
networks:
- ${DOCKER_NETWORK:-splice_validator}
healthcheck:
test: ["CMD", "service", "nginx", "status"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s