{ "module": "keycloak", "version": "1", "requires": [ "postgres-database" ], "contributes": { "postgres-database": { "name": "keycloak" } }, "binds": { "postgres-database": "/var/lib/keycloak/database.json" }, "secrets": { "postgres-database": "/var/lib/keycloak/database.secret" }, "capabilities": [ "container-runtime" ], "emits": [ "module.keycloak.user.created", "module.keycloak.user.deleted", "module.keycloak.password.reset", "module.keycloak.client.created", "module.keycloak.group.created", "module.keycloak.role.created" ], "listens": [ { "port": 8080, "protocol": "tcp", "from": "mesh", "why": "anything the mesh runs that authenticates a person" } ], "own-secrets": { "admin": "/var/lib/keycloak/admin.secret", "broker": "/var/lib/mesh/keycloak/broker" }, "resources": [ { "id": "mesh-state", "type": "directory", "path": "/var/lib/mesh/keycloak", "mode": "0700" }, { "id": "state", "type": "directory", "path": "/var/lib/keycloak", "mode": "0700" }, { "id": "admin-env", "type": "file", "path": "/var/lib/keycloak/admin.env", "mode": "0600", "content": "KEYCLOAK_ADMIN=admin\nKEYCLOAK_ADMIN_PASSWORD=${secret:admin}\n" }, { "id": "database-env", "type": "file", "path": "/var/lib/keycloak/database.env", "mode": "0600", "content": "KC_DB_URL=jdbc:postgresql://${bound:postgres-database:at}:${bound:postgres-database:port}/keycloak\nKC_DB_USERNAME=${bound:postgres-database:as}\nKC_DB_PASSWORD=${secret:postgres-database}\n" }, { "id": "net", "type": "network", "name": "keycloak" }, { "id": "server", "type": "container", "name": "keycloak", "image": "quay.io/keycloak/keycloak@sha256:ecd43971114b0c764f8a3288dddab73f98cb473daccc4feaffe4dc14adeaf866", "network": "keycloak", "args": [ "start-dev" ], "env": { "KC_DB": "postgres", "KC_HTTP_ENABLED": "true", "KC_HEALTH_ENABLED": "true" }, "env-file": [ "/var/lib/keycloak/admin.env", "/var/lib/keycloak/database.env" ], "ports": [ "8080" ] } ] }