杂记 | Linux服务器使用docker安装keycloak(docker-compose)


01 关于keycloak

Keycloak是一个开源的身份和访问管理解决方案,由RedHat公司开发和维护。它提供了一套全面的工具和功能,帮助开发人员实现安全的用户身份验证和授权机制,同时简化了应用程序的身份和访问管理流程。
关于keycloak的详细介绍及相关概念,参考我之前的一篇文章:keycloak的介绍和基本概念

本文写作日期是2023年6月,截至目前,keycloak的最新稳定版本是21.1.1

官网:https://www.keycloak.org

官方文档:https://www.keycloak.org/documentation

GitHub:https://github.com/keycloak/keycloak

本文介绍通过docker安装并启动keycloak,具体使用docker-compse的方式。

02 准备工作

2.1 安装docker

参考我的另一篇文章:Linux下Docker的安装与常用命令

2.2 安装docekr-compose

# 先从github上下载 也可在本地下载好后上传到服务器的/usr/local/bin目录
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose

# 然后添加可执行权限
chmod +x /usr/local/bin/docker-compose

# 安装完成后查看版本(检查可用性)
docker-compose --version

2.3 获取https证书

访问keycloak需要使用https,如果有域名,可以去服务商获取可信证书,作为学习,我们也可以使用命令生成自签名的证书,直接通过ip进行访问。

# 将xxx.xxx.xxx.xxx替换为服务器公网ip或域名
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/CN=xxx.xxx.xxx.xxx"

使用OpenSSL工具生成一个自签名的证书。生成的证书将在当前目录下生成两个文件:server.key(私钥)和 server.crt(证书文件)。
注意,自签名证书不会被公共信任机构所信任,不适用于开发环境。

03 编写docker-compose.yml

官方文档的介绍中,使用下面这条命令可启动一个简单的keycloak。

docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:21.1.1 start-dev

不过我们有一些定制化的需求,例如,不使用keycloak自带的数据库,而使用自己的mysql数据库,可以通过更多命令参数实现,这里采用docekr-compose的方式完成。
docker-compose.yml文件如下,请根据自己实际情况更改:

version: '3.7'
services:
  # mysql容器
  mysql:
    container_name: mysql
    image: mysql
    command: --lower_case_table_names=1 --sql-mode=""	# 可选
    ports:
      - 3306:3306
    volumes:
      - ./db-init:/docker-entrypoint-initdb.d			# 可选
      - ./data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: keycloak
      TZ: Asia/Shanghai									# 可选
  # keycloak容器
  keycloak:
    container_name: keycloak
    image: quay.io/keycloak/keycloak:21.1.1
    depends_on:
      - mysql
    environment:
      # 设置管理员账号密码
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
	  # 数据库配置
      KC_DB: mysql
      KC_DB_USERNAME: root
      KC_DB_PASSWORD: 123456
      KC_DB_URL: jdbc:mysql://ip:3306/keycloak			# 能连接到数据库的ip 例如公网ip
      quarkus.transaction-manager.enable-recovery: true	# 可选
    ports:
      - 8443:8443
    security_opt: 
      - seccomp:unconfined								# 可选
    volumes:
      - /root/keycloak/cert:/etc/x509/https
      # 下面3行卷映射为可选配置
      - /var/keycloak/conf/quarkus.properties:/opt/keycloak/conf/quarkus.properties
      - /var/keycloak/themes:/opt/keycloak/themes
      - /etc/localtime:/etc/localtime
    privileged: true									# 可选
    command: start --hostname=公网ip或域名 --https-certificate-file=/etc/x509/https/cert.pem --https-certificate-key-file=/etc/x509/https/key.pem

在这一docker-compose.yml文件中,配置了keycloak使用mysql数据库,https证书通过卷映射可获取,配置为:/root/keycloak/cert:/etc/x509/https
需将刚才生成的证书文件存放在主机的/root/keycloak/cert目录下。
最后在执行启动命令时指定了证书文件(注意证书文件名)

接下来启动docker-compose

# 首次启动先拉取镜像
docker-compose pull

# 启动命令
docker-compose up -d

# 关闭命令
docker-compose down

# 查看日志
docker-compose logs

04 访问keycloak

启动好后稍等片刻,可通过ip或域名访问。
在上面的配置中,使用的是ip地址,端口使用的是8443。
访问https://xxx.xxx.xxx.xxx:8443即可。
在这里插入图片描述
因为是自签名证书,提示不安全,忽略,点击继续访问。
在这里插入图片描述
访问成功,点击左侧的Administrator Console进行登录,输入刚才配置的账号和密码(admin)。
在这里插入图片描述
可以按图所示将界面改为中文。
在这里插入图片描述
到此,keycloak就安装成功了!🎉

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿林仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值