Keycloak Docker容器部署文档
概述
架构说明
┌─────────────────┐ ┌─────────────────┐
│ Keycloak │ │ MySQL │
│ Container │◄───┤ Container │
│ Port: 8080 │ │ Port: 3306 │
└─────────────────┘ └─────────────────┘
│ │
└───────────────────────┘
keycloak-networkdocker-compose.yml 配置
version: '3.8'
services:
# MySQL容器
mysql:
container_name: mysql
image: mysql:8.4
command: [
"--character-set-server=utf8mb4",
"--collation-server=utf8mb4_unicode_ci",
"--lower-case-table-names=1"
]
ports:
- "3306:3306"
restart: always # 可选, 跟随docker的启动而启动
volumes:
- ./db-init:/docker-entrypoint-initdb.d
- ./data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: keycloak
TZ: Asia/Shanghai
networks:
- keycloak-network
restart: unless-stopped # 自动重启,但排除手动停止的情况(最常用)
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
# Keycloak容器
keycloak:
container_name: keycloak
image: quay.io/keycloak/keycloak:26.2.5-0
depends_on:
mysql:
condition: service_healthy
environment:
# 管理员账号密码
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: admin
# 数据库配置
KC_DB: mysql
KC_DB_USERNAME: root
KC_DB_PASSWORD: 123456 # 修正:应与MySQL密码一致
# 使用容器内部端口3306,而不是主机映射端口
KC_DB_URL: jdbc:mysql://mysql:3306/keycloak?useSSL=false&allowPublicKeyRetrieval=true
# Quarkus配置
KC_TRANSACTION_XA_ENABLED: "false"
# 生产环境配置
KC_HOSTNAME_STRICT: "false"
KC_HOSTNAME_STRICT_HTTPS: "false"
KC_HTTP_ENABLED: "true"
ports:
- "8080:8080" # HTTP端口
networks:
- keycloak-network
volumes:
# 确保这些目录存在
- ./keycloak/conf:/opt/keycloak/conf
- ./keycloak/themes:/opt/keycloak/themes
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
command:
- start-dev
- --hostname-strict=false # hostname-strict = false
- --http-enabled=true
networks:
keycloak-network:
driver: bridge服务组件
1. MySQL数据库服务
容器配置
环境变量配置
变量名
值
说明
启动参数说明
数据持久化
初始化脚本详细说明
健康检查
2. Keycloak身份认证服务
容器配置
管理员配置
变量名
值
说明
变量名
值
说明
数据库连接配置
变量名
值
说明
运行时配置
变量名
值
说明
启动命令参数
数据卷映射
网络配置
keycloak-network
部署前准备
1. 创建必要的目录结构
2. 设置目录权限
3. 准备初始化脚本(可选)
部署步骤
1. 启动服务
2. 查看服务状态
3. 验证部署
配置参数详解
MySQL参数优化建议
字符集配置
表名配置
Keycloak开发模式说明
故障排除
常见问题
1. 数据库连接失败
2. Keycloak启动失败
3. 端口冲突
日志查看
生产环境注意事项
版本信息
Last updated