docker部署keycloak

439 阅读2分钟

本文基于不同版本的keycloak参数,编写相应的部署脚本,通过docker-compose实现keycloak的容器化部署。keycloak18版本部署方式开始有较大的变化,本文以keycloak14和keycloak18为例进行部署。

keycloak14测试和生产环境部署

version: "3.7"
services:
  keycloak:
    image: quay.io/keycloak/keycloak:14.0.0
    restart: unless-stopped
    container_name: keycloak
    environment:
      - DB_VENDOR=MYSQL
      - DB_ADDR={ip}
      - DB_PORT={port}
      - DB_DATABASE=keycloak
      - DB_USER={username}
      - DB_PASSWORD={password}
      - KEYCLOAK_USER={kc_username}
      - KEYCLOAK_PASSWORD={kc_password}
    command:
      - "-b 0.0.0.0 -Dkeycloak.profile.feature.upload_scripts=enabled"
    ports:
      - 8080:8080
      - 8443:8443
    volumes:
      - "/root/apps/keycloak/cert/:/etc/x509/https"

keycloak18测试环境部署

version: '3.1'
services:
  keycloak-prod:
    container_name: keycloak-prod
    image: quay.io/keycloak/keycloak:18.0.0
    environment:
      KC_DB: mysql
      KC_DB_URL: jdbc:mysql://{ip}:{port}/{database}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      KC_DB_USERNAME: {username}
      KC_DB_PASSWORD: {password}
      KEYCLOAK_ADMIN: {kc_username}
      KEYCLOAK_ADMIN_PASSWORD: {kc_password}
      DEBUG_PORT: '*:8787'
      DEBUG: 'true'
    volumes:
      - ./providers:/opt/keycloak/providers
    command: ['start-dev', '--debug', '--import-realm']
    ports:
      - 8080:8080

keycloak18生产环境部署

version: '3'
services:
  keycloak:
    container_name: keycloak-prod
    image: quay.io/keycloak/keycloak:18.0.0
    environment:
     # KC_DB: mysql
     # KC_DB_URL: jdbc:mysql://{ip}:{port}/{database}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      KC_DB_URL_HOST: {ip}
      KC_DB_URL_PORT: {port}
      KC_DB_URL_DATABASE: {database}
      KC_DB_USERNAME: {username}
      KC_DB_PASSWORD: {password}
      KEYCLOAK_ADMIN: {kc_admin}
      KEYCLOAK_ADMIN_PASSWORD: {kc_password}
      KC_HOSTNAME: td.idm.com
      KC_HTTPS_CERTIFICATE_FILE: /opt/keycloak/conf/server.crt.pem
      KC_HTTPS_CERTIFICATE_KEY_FILE: /opt/keycloak/conf/server.key.pem
 #     DEBUG_PORT: '*:8787'
#      DEBUG: 'true'
    volumes:
      - ./providers:/opt/keycloak/providers
      - /home/tdpt/cert/server.crt.pem:/opt/keycloak/conf/server.crt.pem
      - /home/tdpt/cert/server.key.pem:/opt/keycloak/conf/server.key.pem
    command: start
    ports:
      - 8443:8443

或者

version: '3'
services:
  keycloak:
    container_name: keycloak
    image: quay.io/keycloak/keycloak:18.0.0
    environment:
      DB_VENDOR: mysql
      DB_ADDR: {ip}:{port}
      DB_DATABASE: {database}
      DB_USER: {username}
      DB_PASSWORD: {password}
      KEYCLOAK_ADMIN: {kc_username}
      KEYCLOAK_ADMIN_PASSWORD: {kc_password}
      VIRTUAL_PORT: "8443"
      PROXY_ADDRESS_FORWARDING: "true"   
    
    volumes:
   #   - ./theme/:/opt/keycloak/themes/metronic-theme/
      - ./keys/:/opt/keycloak/conf/keys/
    ports:
      - "8443:8443"
    restart: unless-stopped
    command:
      - start --proxy=passthrough --hostname="myhostname" --hostname-strict-backchannel=true --https-certificate-file=/opt/keycloak/conf/keys/server.crt.pem --https-certificate-key-file=/opt/keycloak/conf/keys/server.k
      ey.pem

注意:ssl证书需要授权

  chmod -R 644 /home/tdpt/cert/server.key.pem
  chmod -R 644 /home/tdpt/cert/server.crt.pem