如何在docker中持久化默认的keycloak数据库?

iqjalb3h  于 2022-12-11  发布在  Docker
关注(0)|答案(1)|浏览(366)

我有一个 Docker 的形象:

REPOSITORY                  TAG       IMAGE ID       CREATED        SIZE
quay.io/keycloak/keycloak   18.0.2    ce57c5afb395   5 months ago   590MB

我运行以下命令:

sudo docker run -p 8080:8080  -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:18.0.2 start-dev --http-relative-path /auth

但问题是当我停止服务器时,我创建的用户的领域被删除了,我如何创建容器呢?
如何只有一个容器可以运行,而不是每次我运行docker时,都会创建一个新的新鲜容器。还有其他命令吗?

dohp0rv5

dohp0rv51#

Keycloak默认使用H2数据库,您需要将数据库文件保存在卷中,并在后续的docker run中重用该卷。
1.为H2数据库文件创建docker volume

docker volume create keycloak

1.在新卷上设置正确的权限(quay.io/keycloak/keycloak:18.0.2映像容器中的keycloak用户为UID: 1000GID: 0

docker run \
    --rm \
    --entrypoint chown \
    -v keycloak:/keycloak \
    alpine -R 1000:0 /keycloak

1.使用Docker卷持久化H2数据库

docker run \
    -p 8080:8080 \
    -e KEYCLOAK_ADMIN=admin \
    -e KEYCLOAK_ADMIN_PASSWORD=admin \
    -v keycloak:/opt/keycloak/data/h2 \
    quay.io/keycloak/keycloak:18.0.2 start-dev --http-relative-path /auth

相关问题