我正在与一个docker compose服务组合作:
这是一个相当基本的设置。我只是在用Keycloak测试一些东西。
我观察到的是,有时,当我重新启动所有服务时,Keycloak将失败并抱怨liqubase dbchangelog表不存在。但是,当我检查桌子时,它们在那里。
似乎正在发生的事情是某些原因导致Keycloak重新生成数据库表(通过Liquibase)。我可以通过保持MySQL一直运行并仅启动和停止Keycloak来解决此问题,但是如果其他人正在使用它并意外停止所有服务,则他们可能会丢失Keycloak表中的所有内容。
两个问题:
我的docker-compose文件:
version: '3'
services:
mysql:
image: mysql:5.7
ports:
- "3319:3306"
environment:
MYSQL_USER: keycloak
MYSQL_PASSWORD: keycloak
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: keycloak
volumes:
- ~/test/mysql:/var/lib/mysql
keycloak:
image: jboss/keycloak:4.6.0.Final
depends_on:
- mysql
environment:
DB_VENDOR: MYSQL
DB_ADDR: mysql
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: keycloak
KEYCLOAK_LOGLEVEL: INFO
ROOT_LOGLEVEL: INFO
PROXY_ADDRESS_FORWARDING: "true"
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: password
JDBC_PARAMS: "useSSL=false"
ports:
- "6982:8080"