在docker容器内运行时如何保存keycloak数据?

问题描述 投票:0回答:4

我使用 docker

docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:15.0.2

的命令独立运行 keycloak

容器停止后如何挂载卷来保存数据?

docker keycloak mount podman
4个回答
8
投票

工作中

docker-compose.yml

version: "3.7"

volumes:
  keycloak:

services:

  keycloak:
    image: quay.io/keycloak/keycloak:18.0.2
    ports:
      - 8080:8080
    environment:
      - KEYCLOAK_ADMIN=admin
      - KEYCLOAK_ADMIN_PASSWORD=admin
    volumes:
      - keycloak:/opt/keycloak/data/
    restart: always
    command:
      - "start-dev"

6
投票

对于生产:

在生产环境中,Keycloak 应该连接到真实数据库(mariadb、mssql、mysql、oracle、postgres)。数据存储在那里,因此不需要存储容器中运行的任何内容。

对于发展:

Keycloak 附带了自己的嵌入式基于 Java 的关系数据库,称为 H2。 数据存储在容器内的

/opt/jboss/keycloak/standalone/data/
中。

要启动带有已安装卷的容器,您需要:

1.创建一个具有读写权限的文件夹:

mkdir -m 777 ./keycloak_data

2.启动带有已安装卷的容器:

docker run -v ./keycloak_data:/opt/jboss/keycloak/standalone/data/ -p 8080:8080  -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:15.0.2

请注意,如果挂载卷,

KEYCLOAK_USER
KEYCLOAK_PASSWORD
只会在容器的第一次启动时被考虑,因此要再次启动容器只需使用:

docker run -v ./keycloak_data:/opt/jboss/keycloak/standalone/data/ -p 8080:8080 quay.io/keycloak/keycloak:15.0.2

5
投票

2023 年更新:

基于@mdryden和@Dennis Meissel的回复,为了使keycloak持久用于本地开发,只需运行以下命令:

mkdir -m 777 ./keycloak_data
docker run -p 8080:8080 -v ./keycloak_data:/opt/keycloak/data/h2 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:22.0.3 start-dev

0
投票

刚刚检查过,如果您只是通过“docker Desktop”停止并启动 keycloak 容器,则数据例如关于新领域仍然存在。 您还可以向容器添加特定名称,以便在随机生成的容器中找到它。

docker run --name mykeycloak

© www.soinside.com 2019 - 2024. All rights reserved.