version: "3.9" services: aries-endorser-proxy: image: caddy hostname: aries-endorser-proxy environment: - CADDY_AGENT_PORT=${CADDY_AGENT_PORT} - CADDY_AGENT_ADMIN_PORT=${CADDY_AGENT_ADMIN_PORT} - CADDY_ADMIN_PORT=${CADDY_ADMIN_PORT} - ACAPY_AGENT_HOST=${ACAPY_AGENT_HOST} - ACAPY_HTTP_PORT=${ACAPY_HTTP_PORT} - ACAPY_WS_PORT=${ACAPY_WS_PORT} - ACAPY_ADMIN_PORT=${ACAPY_ADMIN_PORT} ports: - ${CADDY_AGENT_PORT}:${CADDY_AGENT_PORT} - ${CADDY_AGENT_ADMIN_PORT}:${CADDY_AGENT_ADMIN_PORT} # Uncomment to access caddy outside of containers # - ${CADDY_ADMIN_PORT}:${CADDY_ADMIN_PORT} volumes: - ./caddy/Caddyfile:/etc/caddy/Caddyfile:z healthcheck: # Port 2019 is an internal Caddy admin port. test: nc -zv localhost:${CADDY_ADMIN_PORT} || exit -1 interval: 3s timeout: 3s start_period: 10s retries: 5 ngrok-endorser-agent: image: wernight/ngrok environment: - CADDY_AGENT_PORT=${CADDY_AGENT_PORT} - CADDY_HOST=${CADDY_HOST} ports: - ${NGROK_ENDORSER_AGENT_PORT_EXPOSED}:${NGROK_ENDORSER_AGENT_PORT} command: ngrok http ${CADDY_HOST}:${CADDY_AGENT_PORT} --log stdout aries-endorser-agent: build: context: ./acapy dockerfile: Dockerfile.acapy depends_on: aries-endorser-wallet: condition: service_healthy environment: - ENDORSER_ENV=${ENDORSER_ENV} - NGROK_NAME=ngrok-endorser-agent - ACAPY_HTTP_PORT=${ACAPY_HTTP_PORT} - ACAPY_WS_PORT=${ACAPY_WS_PORT} - ENDORSER_WEBHOOK_URL=${ENDORSER_WEBHOOK_URL} - LEDGER_URL=${LEDGER_URL} - GENESIS_URL=${GENESIS_URL} - TAILS_SERVER_URL=${TAILS_SERVER_URL} - ACAPY_ENDPOINT=${ACAPY_ENDPOINT} - ACAPY_WALLET_DATABASE=${ACAPY_WALLET_DATABASE} - ACAPY_WALLET_ENCRYPTION_KEY=${ACAPY_WALLET_ENCRYPTION_KEY} - ACAPY_WALLET_STORAGE_TYPE=${ACAPY_WALLET_STORAGE_TYPE} - POSTGRESQL_HOST=${WALLET_POSTGRESQL_HOST} - POSTGRESQL_USER=${WALLET_POSTGRESQL_USER} - POSTGRESQL_PASSWORD=${WALLET_POSTGRESQL_PASSWORD} - ACAPY_ADMIN_PORT=${ACAPY_ADMIN_PORT} - AGENT_NAME=${AGENT_NAME} - ACAPY_ADMIN_CONFIG=${ACAPY_ADMIN_CONFIG} - ENDORSER_SEED=${ENDORSER_SEED} - LOG_LEVEL=${LOG_LEVEL} ports: - ${ACAPY_ADMIN_PORT_EXPOSED}:${ACAPY_ADMIN_PORT} - ${ACAPY_HTTP_PORT_EXPOSED}:${ACAPY_HTTP_PORT} - ${ACAPY_WS_PORT_EXPOSED}:${ACAPY_WS_PORT} entrypoint: /bin/bash command: [ "-c", "curl -d '{\"seed\":\"${ENDORSER_SEED}\", \"role\":\"ENDORSER\", \"alias\":\"${AGENT_NAME}\"}' -X POST ${LEDGER_URL}/register; \ sleep 5; \ ./ngrok-wait.sh" ] extra_hosts: - host.docker.internal:host-gateway aries-endorser-wallet: image: postgres:12-alpine environment: POSTGRES_USER: ${WALLET_POSTGRESQL_USER} POSTGRES_PASSWORD: ${WALLET_POSTGRESQL_PASSWORD} ports: - ${WALLET_POSTGRESQL_PORT_EXPOSED}:${WALLET_POSTGRESQL_PORT} volumes: - endorser-wallet:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 aries-endorser-api: build: context: ../endorser dockerfile: Dockerfile.endorser depends_on: aries-endorser-agent: condition: service_started aries-endorser-api-db: condition: service_healthy environment: - CONTROLLER_POSTGRESQL_HOST=${CONTROLLER_POSTGRESQL_HOST} - CONTROLLER_POSTGRESQL_PORT=${CONTROLLER_POSTGRESQL_PORT} - CONTROLLER_POSTGRESQL_DB=${CONTROLLER_POSTGRESQL_DB} - CONTROLLER_POSTGRESQL_USER=${CONTROLLER_POSTGRESQL_USER} - CONTROLLER_POSTGRESQL_PASSWORD=${CONTROLLER_POSTGRESQL_PASSWORD} - CONTROLLER_POSTGRESQL_ADMIN_USER=${CONTROLLER_POSTGRESQL_ADMIN_USER} - CONTROLLER_POSTGRESQL_ADMIN_PASSWORD=${CONTROLLER_POSTGRESQL_ADMIN_PASSWORD} - ENDORSER_API_ADMIN_USER=${ENDORSER_API_ADMIN_USER} - ENDORSER_API_ADMIN_KEY=${ENDORSER_API_ADMIN_KEY} - ACAPY_ADMIN_URL=${ENDORSER_ACAPY_ADMIN_URL} - ACAPY_API_ADMIN_KEY=${ACAPY_API_ADMIN_KEY} - ENDORSER_ENV=${ENDORSER_ENV} - ENDORSER_AUTO_ACCEPT_CONNECTIONS=${ENDORSER_AUTO_ACCEPT_CONNECTIONS} - ENDORSER_AUTO_ACCEPT_AUTHORS=${ENDORSER_AUTO_ACCEPT_AUTHORS} - ENDORSER_AUTO_ENDORSE_REQUESTS=${ENDORSER_AUTO_ENDORSE_REQUESTS} - ENDORSER_AUTO_ENDORSE_TXN_TYPES=${ENDORSER_AUTO_ENDORSE_TXN_TYPES} - WEB_CONCURRENCY=${WEB_CONCURRENCY} - ACAPY_WEBHOOK_URL_API_KEY=${ACAPY_WEBHOOK_URL_API_KEY} - LOG_LEVEL=${API_LOG_LEVEL} - ENDORSER_PUBLIC_NAME=${ENDORSER_PUBLIC_NAME} - ENDORSER_PUBLIC_DESC=${ENDORSER_PUBLIC_DESC} ports: - ${ENDORSER_SERVICE_PORT_EXPOSED}:${ENDORSER_SERVICE_PORT} extra_hosts: - host.docker.internal:host-gateway aries-endorser-api-db: image: postgres:12-alpine environment: - POSTGRES_USER=${POSTGRESQL_USER} - POSTGRES_PASSWORD=${POSTGRESQL_PASSWORD} - CONTROLLER_POSTGRESQL_DB=${CONTROLLER_POSTGRESQL_DB} - CONTROLLER_POSTGRESQL_USER=${CONTROLLER_POSTGRESQL_USER} - CONTROLLER_POSTGRESQL_PASSWORD=${CONTROLLER_POSTGRESQL_PASSWORD} - CONTROLLER_POSTGRESQL_ADMIN_USER=${CONTROLLER_POSTGRESQL_ADMIN_USER} - CONTROLLER_POSTGRESQL_ADMIN_PASSWORD=${CONTROLLER_POSTGRESQL_ADMIN_PASSWORD} ports: - ${CONTROLLER_POSTGRESQL_PORT_EXPOSED}:${CONTROLLER_POSTGRESQL_PORT} volumes: - endorser-controller:/var/lib/postgresql/data - ./database/1-init.sh:/docker-entrypoint-initdb.d/1-init.sh healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 aries-author-agent: build: context: ./acapy dockerfile: Dockerfile.acapy depends_on: aries-author-wallet: condition: service_healthy ports: - ${ACAPY_AUTHOR_ADMIN_PORT}:${ACAPY_AUTHOR_ADMIN_PORT} - ${ACAPY_AUTHOR_HTTP_PORT}:${ACAPY_AUTHOR_HTTP_PORT} environment: - AUTHOR_ENV=${AUTHOR_ENV} - ACAPY_HTTP_PORT=${ACAPY_AUTHOR_HTTP_PORT} - LEDGER_URL=${LEDGER_URL} - GENESIS_URL=${GENESIS_URL} - TAILS_SERVER_URL=${TAILS_SERVER_URL} - ACAPY_AUTHOR_HTTP_PORT=${ACAPY_AUTHOR_HTTP_PORT} - ACAPY_AUTHOR_ENDPOINT=${ACAPY_AUTHOR_ENDPOINT} - ACAPY_AUTHOR_WALLET_DATABASE=${ACAPY_AUTHOR_WALLET_DATABASE} - ACAPY_AUTHOR_WALLET_ENCRYPTION_KEY=${ACAPY_AUTHOR_WALLET_ENCRYPTION_KEY} - ACAPY_AUTHOR_WALLET_STORAGE_TYPE=${ACAPY_AUTHOR_WALLET_STORAGE_TYPE} - AUTHOR_WALLET_POSTGRESQL_HOST=${AUTHOR_WALLET_POSTGRESQL_HOST} - AUTHOR_WALLET_POSTGRESQL_USER=${AUTHOR_WALLET_POSTGRESQL_USER} - AUTHOR_WALLET_POSTGRESQL_PASSWORD=${AUTHOR_WALLET_POSTGRESQL_PASSWORD} - ACAPY_AUTHOR_ADMIN_PORT=${ACAPY_AUTHOR_ADMIN_PORT} - AUTHOR_AGENT_NAME=${AUTHOR_AGENT_NAME} - ACAPY_AUTHOR_ADMIN_CONFIG=${ACAPY_AUTHOR_ADMIN_CONFIG} - LOG_LEVEL=${LOG_LEVEL} entrypoint: /bin/bash command: [ "-c", "sleep 5; \ aca-py start \ --auto-provision \ --inbound-transport ${ACAPY_AUTHOR_TRANSPORT} '0.0.0.0' ${ACAPY_AUTHOR_HTTP_PORT} \ --outbound-transport ${ACAPY_AUTHOR_TRANSPORT} \ --genesis-url '${GENESIS_URL}' \ --tails-server-base-url '${TAILS_SERVER_URL}' \ --notify-revocation \ --monitor-revocation-notification \ --endpoint '${ACAPY_AUTHOR_ENDPOINT}' \ --auto-ping-connection \ --monitor-ping \ --multitenant \ --multitenant-admin \ --jwt-secret '${ACAPY_AUTHOR_JWT_SECRET}' \ --wallet-type 'askar' \ --wallet-name '${ACAPY_AUTHOR_WALLET_DATABASE}' \ --wallet-key '${ACAPY_AUTHOR_WALLET_ENCRYPTION_KEY}' \ --wallet-storage-type '${ACAPY_AUTHOR_WALLET_STORAGE_TYPE}' \ --wallet-storage-config '{\"url\":\"${AUTHOR_WALLET_POSTGRESQL_HOST}:5432\",\"max_connections\":5,\"wallet_scheme\":\"MultiWalletSingleTable\"}' \ --wallet-storage-creds '{\"account\":\"${AUTHOR_WALLET_POSTGRESQL_USER}\",\"password\":\"${AUTHOR_WALLET_POSTGRESQL_PASSWORD}\",\"admin_account\":\"${AUTHOR_WALLET_POSTGRESQL_USER}\",\"admin_password\":\"${AUTHOR_WALLET_POSTGRESQL_PASSWORD}\"}' \ --admin '0.0.0.0' ${ACAPY_AUTHOR_ADMIN_PORT} \ --label '${AUTHOR_AGENT_NAME}' \ ${ACAPY_AUTHOR_ADMIN_CONFIG} \ --endorser-protocol-role author \ --endorser-alias '${AUTHOR_ENDORSER_AlIAS}' \ --auto-request-endorsement \ --auto-write-transactions \ --auto-create-revocation-transactions \ --log-level '${LOG_LEVEL}'" ] extra_hosts: - host.docker.internal:host-gateway aries-author-wallet: image: postgres:12-alpine environment: POSTGRES_USER: ${AUTHOR_WALLET_POSTGRESQL_USER} POSTGRES_PASSWORD: ${AUTHOR_WALLET_POSTGRESQL_PASSWORD} ports: - ${AUTHOR_POSTGRESQL_PORT_EXPOSED}:${AUTHOR_POSTGRESQL_PORT} volumes: - author-wallet:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 volumes: endorser-wallet: endorser-controller: author-wallet: