你需要在你的 docker-compose-yml 中绑定你的文件夹,而不仅仅是 realm json 文件,就像这样:
keycloak:
image: jboss/keycloak:8.0.1
container_name: "keycloak"
volumes:
- ./realms/:/tmp/
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
- KEYCLOAK_IMPORT=/tmp/realm-export.json -Dkeycloak.profile.feature.upload_scripts=enabled
其中 realms 是 yaml 文件旁边的文件夹。此时,您可以像往常一样使用基本的 realm-export.json 运行 docker-compose up -d,进入管理面板,添加具有凭据和角色的用户,然后使用此命令,您将能够导出整个配置:
docker exec -it keycloak /opt/jboss/keycloak/bin/standalone.sh -Djboss.socket.binding.port-offset=100 -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.realmName=ed-realm -Dkeycloak.migration.usersExportStrategy=REALM_FILE -Dkeycloak.migration.file=/tmp/export.json
您将在 Realms 文件夹中看到将创建一个新文件,它将包含整个配置,因此您可以运行 docker-compose,用这个新文件替换旧文件,然后根据需要多次运行 docker-compose,并在再次更改领域时重做该过程。