一般来说,这是使用 keycloak 的疑问,我会尽力尽可能清楚地解释我的疑问。 因此,当我启动 keycloak 时,我从以下命令开始使用 docker:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:24.0.2 start-dev
但是这样境界就已经创造出来了,我想建立一个服装境界。所以基本上,当我创建 docker 映像并且我想创建我的自定义领域时,我多次创建它并部分导出它,因为我们无法完全导出它。 所以我的疑问是:我可以在我的服装领域本地启动 keycloak 吗? 我用的是mac。
您可以在 Mac 上通过 cURL 命令创建自定义领域。
另外,建议使用 Docker Desktop 的 docker compose
即使删除了 docker 容器,它也不会丢失您的自定义领域。
只需“docker run”和“docker rm”即可删除容器。 领域和用户的所有设置都将丢失。
如果使用 docker compose 和 volume,则可以保留 Keycloak 的设置。
另存为
docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:15.6
container_name: postgres_db
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
keycloak_web:
image: quay.io/keycloak/keycloak:24.0.2
container_name: keycloak_web
environment:
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: password
KC_HOSTNAME: localhost
KC_HOSTNAME_STRICT: false
KC_HOSTNAME_STRICT_HTTPS: false
KC_LOG_LEVEL: info
KC_METRICS_ENABLED: true
KC_HEALTH_ENABLED: true
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
command: start-dev
depends_on:
- postgres
ports:
- 8080:8080
volumes:
postgres_data:
转到“应用程序”>“实用程序”>“终端”,或使用 Spotlight 搜索(Cmd + 空格键)并输入“终端”将其打开
docker compose up -d
http://localhost:8080
凭证
username: admin
password: admin
MASTER_TOKEN=$(curl --location --request POST http://localhost:8080/realms/master/protocol/openid-connect/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=admin-cli' \
--data-urlencode 'username=admin' \
--data-urlencode 'password=admin' \
--data-urlencode 'grant_type=password' | jq -r '.access_token')
echo $MASTER_TOKEN
curl --silent --show-error -L -X POST "http://localhost:8080/admin/realms" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ""$MASTER_TOKEN" \
--data '{"realm":"demo-realm","enabled":true}'
主令牌的默认生命周期为1分钟
所以拿到master token后需要快速调用 或者
扩大测试范围。