我正在尝试将配置从一个 keycloak 实例导入许多不同的 keycloak 实例(每个实例都用于相同的应用程序,只是我的 CICD 流程中的不同部分)
我正在通过 Docker 运行 keycloak,发现很难导入所需的 json 文件
为了获得我想要导入的实际数据,我进入了所需的领域,然后在选择了客户端等的情况下单击导出按钮。这将一个文件下载到我的浏览器,我现在想在构建 docker 容器时将其导入
我已经尝试了很多在网上找到的不同方法,但似乎没有任何效果,所以我希望得到一些帮助
我尝试的第一件事是使用以下命令通过 docker-compose 文件导入文件
KEYCLOAK_IMPORT: /realm-export.json
Run Code Online (Sandbox Code Playgroud)
我尝试的下一件事也是在我尝试的 docker-compose 中
command: "-b 0.0.0.0 -Djboss.http.port=8080 -Dkeycloak.migration.action=import -Dkeycloak.import=realm-export.json
Run Code Online (Sandbox Code Playgroud)
最后,我尝试进入我的 Dockerfile 并使用以下命令将导入作为我的 CMD 运行
CMD ["-b 0.0.0.0", "-Dkeycloak.import=/opt/jboss/keycloak/realm-export.json"]
Run Code Online (Sandbox Code Playgroud)
下面是我当前的 docker-compose 和 Dockerfiles,没有添加导入,它们可能有助于回答这个问题。提前致谢
# Dockerfile
FROM jboss/keycloak:4.8.3.Final
COPY keycloak-metrics-spi-1.0.1-SNAPSHOT.jar keycloak/standalone/deployments
Run Code Online (Sandbox Code Playgroud)
和我的 docker-compose 文件的 keycloak 相关部分
postgres:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: keycl0ak
POSTGRES_USER: keycl0ak
POSTGRES_PASSWORD: password
ports:
- 5431:5431
keycloak:
build:
context: services/keycloak
environment:
DB_VENDOR: POSTGRES
DB_ADDR: postgres
DB_DATABASE: keycl0ak
DB_USER: keycl0ak
DB_PASSWORD: password
KEYCLOAK_USER: administrat0r
KEYCLOAK_PASSWORD: asc88a8c0ssssqs
ports:
- 8080:8080
depends_on:
- postgres
volumes:
postgres_data:
driver: local
Run Code Online (Sandbox Code Playgroud)
Dan*_*McC 25
首先,您需要将文件复制到容器中,然后才能将其导入 Keycloak。您可以将您的realm-export.json放在 旁边的文件夹中docker-compose.yml,假设我们称之为imports。这可以使用volumes:. 一旦文件被复制到容器中,您就可以command:像以前一样使用,指向容器中的正确文件。
/your_computer/keycloak_stuff/
|-- docker-compose.yml
|-- imports->realm-export.json
这是docker-compose.yml更改后的外观:
postgres:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: keycl0ak
POSTGRES_USER: keycl0ak
POSTGRES_PASSWORD: password
ports:
- 5431:5431
keycloak:
build:
context: services/keycloak
volumes:
- ./imports:/opt/jboss/keycloak/imports
command:
- "-b 0.0.0.0 -Dkeycloak.import=/opt/jboss/keycloak/imports/realm-export.json"
environment:
DB_VENDOR: POSTGRES
DB_ADDR: postgres
DB_DATABASE: keycl0ak
DB_USER: keycl0ak
DB_PASSWORD: password
KEYCLOAK_USER: administrat0r
KEYCLOAK_PASSWORD: asc88a8c0ssssqs
ports:
- 8080:8080
depends_on:
- postgres
volumes:
postgres_data:
driver: local
Run Code Online (Sandbox Code Playgroud)
在版本中,21.0.2唯一对我有用的是这个命令行参数和卷的精确映射。设置自定义文件夹似乎不像其他答案中那样工作:
keycloak:
container_name: keycloak
image: quay.io/keycloak/keycloak:21.0.2
restart: always
environment:
ports:
- '8081:8081'
command: -v start --import-realm
volumes:
- ./keycloak/imports:/opt/keycloak/data/import
Run Code Online (Sandbox Code Playgroud)
小智 6
总结@JesusBenito 和@raujonas 的答案,可以更改docker-compose,以便您使用keyloak 环境KEYCLOAK_IMPORT:
keycloak:
volumes:
- ./imports:/opt/jboss/keycloak/imports
# command: not needed anymore
# - "-b 0.0.0.0 -Dkeycloak.import=/opt/jboss/keycloak/imports/realm-export.json"
environment:
KEYCLOAK_IMPORT: /opt/jboss/keycloak/imports/realm-export.json -Dkeycloak.profile.feature.upload_scripts=enabled
DB_VENDOR: POSTGRES
DB_ADDR: postgres
DB_DATABASE: keycl0ak
DB_USER: keycl0ak
DB_PASSWORD: password
KEYCLOAK_USER: administrat0r
KEYCLOAK_PASSWORD: asc88a8c0ssssqs
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10204 次 |
| 最近记录: |