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

6l7fqoea  于 2022-12-18  发布在  Docker
关注(0)|答案(2)|浏览(197)

我使用dockerdocker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:15.0.2的命令独立运行keycloak
如何挂载一个卷来保存数据,容器停止后?

0kjbasz6

0kjbasz61#

工作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"
sqserrrh

sqserrrh2#

对于生产:

在生产环境中,Keycloak应该连接到real database (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_USERKEYCLOAK_PASSWORD,因此要再次启动容器只需用途:

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

相关问题