เริ่มต้นใช้งาน Docker Desktop

เป้าหมาย

  • เข้าใจพื้นฐานของ Docker ที่จำเป็นสำหรับการใช้งาน Keycloak
  • ติดตั้งและเรียกใช้ Keycloak ด้วย Docker
  • ตั้งค่า Keycloak เบื้องต้นเพื่อพร้อมใช้งาน

1. พื้นฐานของ Docker ที่ควรรู้

ก่อนที่เราจะไปลุย Keycloak มารู้จักกับคอนเซ็ปต์หลักๆ ของ Docker กันก่อนครับ:

  • Docker คืออะไร? Docker เป็นแพลตฟอร์มที่ช่วยให้นักพัฒนาสามารถสร้าง, ปรับใช้, และเรียกใช้แอปพลิเคชันใน “คอนเทนเนอร์” (Containers) ซึ่งเป็นแพ็คเกจที่รวมโค้ด ซอฟต์แวร์ที่จำเป็น ไลบรารี และการตั้งค่าต่างๆ ไว้ด้วยกัน ทำให้แอปพลิเคชันทำงานได้เหมือนกันไม่ว่าจะอยู่บนสภาพแวดล้อมใดก็ตาม

  • ทำไมต้องใช้ Docker กับ Keycloak?

    • ความสอดคล้อง: Keycloak จะทำงานเหมือนกันทุกที่ ไม่ว่าคุณจะรันบนเครื่องของคุณ, บนเซิร์ฟเวอร์, หรือบนคลาวด์
    • การแยกส่วน: Keycloak จะทำงานในสภาพแวดล้อมที่แยกจากระบบปฏิบัติการหลักของคุณ ทำให้ไม่เกิดความขัดแย้งกับซอฟต์แวร์อื่นๆ
    • ความง่ายในการติดตั้ง: ไม่ต้องกังวลเรื่องการติดตั้ง dependencies หรือตั้งค่าที่ซับซ้อน Keycloak มาในรูปแบบของ Docker Image ที่พร้อมใช้งาน
    • การปรับขนาด (Scalability): ง่ายต่อการเพิ่มจำนวน Keycloak Instances เมื่อต้องการรองรับผู้ใช้งานจำนวนมาก
  • ศัพท์สำคัญของ Docker:

    • Image: เหมือนกับแม่แบบ (Template) ของคอนเทนเนอร์ มีทุกสิ่งทุกอย่างที่จำเป็นสำหรับการรันแอปพลิเคชัน (เช่น ระบบปฏิบัติการขนาดเล็ก, Keycloak software, Java, etc.)
    • Container: อินสแตนซ์ที่รันอยู่ของ Image เปรียบเสมือนเครื่องคอมพิวเตอร์ขนาดเล็กที่รันแอปพลิเคชันของคุณ
    • Dockerfile: ไฟล์ข้อความที่ใช้ในการสร้าง Image (เราจะไม่สร้างเองสำหรับ Keycloak แต่จะใช้ Image ที่มีอยู่แล้ว)
    • Docker Hub: Repository สาธารณะสำหรับ Docker Images (คล้ายกับ App Store สำหรับ Docker) ที่เราจะดึง Image ของ Keycloak มาใช้
    • Port Mapping: การเชื่อมต่อพอร์ตจากคอนเทนเนอร์เข้ากับพอร์ตบนเครื่องโฮสต์ของคุณ เพื่อให้สามารถเข้าถึงแอปพลิเคชันในคอนเทนเนอร์ได้
    • Volume: วิธีการจัดเก็บข้อมูลแบบถาวรนอกคอนเทนเนอร์ เนื่องจากคอนเทนเนอร์เป็นแบบ stateless (ข้อมูลจะหายไปเมื่อคอนเทนเนอร์ถูกลบ) การใช้ Volume จะช่วยให้ข้อมูล Keycloak ของคุณยังคงอยู่

2. การติดตั้ง Docker Desktop

ถ้าคุณยังไม่ได้ติดตั้ง Docker Desktop สามารถดาวน์โหลดได้จากเว็บไซต์ทางการ:

หลังจากติดตั้งแล้ว ให้เปิด Docker Desktop ขึ้นมา และตรวจสอบให้แน่ใจว่า Docker Engine ทำงานอยู่ (โดยปกติจะแสดงไอคอนรูปปลาวาฬสีน้ำเงินใน System Tray/Menu Bar)


3. การสร้าง Keycloak ด้วย Docker

Keycloak มี Docker Image อย่างเป็นทางการที่พร้อมใช้งานบน Docker Hub ทำให้เราสามารถดึงมาใช้งานได้ทันที

ขั้นตอนที่ 1: เปิด Command Line / Terminal

เปิด Command Prompt (สำหรับ Windows), Terminal (สำหรับ macOS/Linux) หรือ PowerShell (สำหรับ Windows)

ขั้นตอนที่ 2: ดึง Keycloak Image (Pull Image)

ก่อนอื่น เราต้องดึง Image ของ Keycloak จาก Docker Hub มายังเครื่องของเรา:

docker pull quay.io/keycloak/keycloak:latest
  • docker pull: คำสั่งสำหรับดึง Docker Image
  • quay.io/keycloak/keycloak:latest: ชื่อของ Image และ Tag (เวอร์ชัน) latest หมายถึงเวอร์ชันล่าสุด คุณสามารถระบุเวอร์ชันเฉพาะเจาะจงได้ เช่น quay.io/keycloak/keycloak:24.0.5

รอสักครู่จนกว่าการดาวน์โหลดจะเสร็จสิ้น

ขั้นตอนที่ 3: เรียกใช้ Keycloak Container

ตอนนี้เราจะเรียกใช้ Keycloak เป็นคอนเทนเนอร์:

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

มาดูกันว่าแต่ละส่วนของคำสั่งนี้หมายถึงอะไร:

  • docker run: คำสั่งสำหรับสร้างและเรียกใช้คอนเทนเนอร์
  • -p 8080:8080: Port Mapping
    • :8080 ด้านขวาคือพอร์ตภายในคอนเทนเนอร์ที่ Keycloak รันอยู่
    • 8080: ด้านซ้ายคือพอร์ตบนเครื่องโฮสต์ของคุณที่เราต้องการให้ Keycloak เข้าถึงได้
    • นั่นหมายความว่า เมื่อคุณเข้าถึง localhost:8080 บนเครื่องของคุณ มันจะถูกส่งต่อไปยังพอร์ต 8080 ภายในคอนเทนเนอร์
  • -p 8443:8443: เหมือนกันกับพอร์ต 8080 แต่เป็นพอร์ตสำหรับ HTTPS (ถ้าคุณต้องการใช้ HTTPS ในภายหลัง)
  • -e KEYCLOAK_ADMIN=admin: Environment Variable กำหนดชื่อผู้ใช้สำหรับ Admin console ของ Keycloak เป็น admin
  • -e KEYCLOAK_ADMIN_PASSWORD=admin: Environment Variable กำหนดรหัสผ่านสำหรับ Admin console ของ Keycloak เป็น admin (สำหรับการพัฒนาเท่านั้น! ใน Production ควรใช้รหัสผ่านที่รัดกุมกว่านี้)
  • --name keycloak: กำหนดชื่อให้กับคอนเทนเนอร์ของเรา เพื่อให้ง่ายต่อการอ้างอิงในภายหลัง (เช่น docker stop keycloak)
  • quay.io/keycloak/keycloak:latest: Image ที่เราต้องการใช้
  • start-dev: เป็นคำสั่งที่ Keycloak ใช้ในการเริ่มต้นในโหมดพัฒนา (development mode) ซึ่งเหมาะสำหรับการทดสอบและเรียนรู้

หลังจากรันคำสั่งนี้ คุณจะเห็น Log ของ Keycloak แสดงขึ้นมาใน Terminal รอจนกระทั่งคุณเห็นข้อความที่ระบุว่า Keycloak เริ่มทำงานแล้ว เช่น “Keycloak 24.0.5 (Quarkus 3.8.3) started in 6.002s. Listening on: , https://0.0.0.0:8443

ขั้นตอนที่ 4: เข้าถึง Keycloak

เปิดเว็บเบราว์เซอร์ของคุณและไปที่:

http://localhost:8080

คุณควรจะเห็นหน้าต้อนรับของ Keycloak!

ขั้นตอนที่ 5: เข้าสู่ระบบ Admin Console

คลิกที่ “Administration Console” หรือไปที่:

http://localhost:8080/admin/

ใช้ชื่อผู้ใช้และรหัสผ่านที่คุณตั้งไว้ในขั้นตอนที่ 3:

  • Username: admin
  • Password: admin

เมื่อเข้าสู่ระบบได้สำเร็จ คุณก็พร้อมที่จะเริ่มตั้งค่า Keycloak แล้ว!


4. การจัดการ Keycloak Container (พื้นฐาน)

เมื่อคุณรันคอนเทนเนอร์แล้ว มีคำสั่ง Docker พื้นฐานที่คุณควรรู้:

  • ดูคอนเทนเนอร์ที่กำลังทำงานอยู่:

    docker ps
    

    คุณจะเห็นคอนเทนเนอร์ชื่อ keycloak ที่กำลังรันอยู่

  • หยุดคอนเทนเนอร์:

    docker stop keycloak
    

    คอนเทนเนอร์จะหยุดทำงาน แต่ยังคงอยู่

  • เริ่มคอนเทนเนอร์ที่หยุดไปแล้ว:

    docker start keycloak
    

    คอนเทนเนอร์จะเริ่มทำงานใหม่

  • ลบคอนเทนเนอร์ (เมื่อไม่ต้องการแล้ว):

    docker rm keycloak
    

    ข้อควรระวัง: การลบคอนเทนเนอร์จะลบข้อมูลที่อยู่ในคอนเทนเนอร์ไปด้วย (ยกเว้นถ้าคุณใช้ Volume ซึ่งเราจะพูดถึงในส่วนถัดไป) คุณต้องหยุดคอนเทนเนอร์ก่อนจึงจะลบได้

  • ลบ Image (เมื่อไม่ต้องการแล้ว):

    docker rmi quay.io/keycloak/keycloak:latest
    

    คุณต้องลบหรือหยุดคอนเทนเนอร์ที่ใช้ Image นี้ก่อนจึงจะลบ Image ได้


5. การจัดเก็บข้อมูลถาวรด้วย Docker Volume

อย่างที่กล่าวไปข้างต้น คอนเทนเนอร์เป็นแบบ stateless ถ้าคุณลบคอนเทนเนอร์ ข้อมูล Keycloak ของคุณ (เช่น Users, Realms, Clients) จะหายไป เพื่อป้องกันปัญหานี้ เราจะใช้ Docker Volume

ขั้นตอน:

  1. หยุดและลบคอนเทนเนอร์ Keycloak เดิมของคุณ (ถ้ามี):

    docker stop keycloak
    docker rm keycloak
    
  2. สร้าง Docker Volume:

    docker volume create keycloak_data
    

    คำสั่งนี้จะสร้าง Volume ชื่อ keycloak_data บนเครื่องโฮสต์ของคุณ

  3. เรียกใช้ Keycloak Container พร้อม Volume:

    docker run -p 8080:8080 -p 8443:8443 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -v keycloak_data:/opt/keycloak/data --name keycloak quay.io/keycloak/keycloak:latest start-dev
    

    ส่วนที่เพิ่มเข้ามาคือ:

    • -v keycloak_data:/opt/keycloak/data: Volume Mapping
      • keycloak_data ด้านซ้ายคือชื่อ Volume ที่เราสร้างขึ้น
      • /opt/keycloak/data ด้านขวาคือพาธภายในคอนเทนเนอร์ที่ Keycloak ใช้ในการจัดเก็บข้อมูล (นี่คือพาธมาตรฐานของ Keycloak ที่ควรจะใช้)

ตอนนี้ Keycloak จะจัดเก็บข้อมูลลงใน keycloak_data Volume ซึ่งจะทำให้ข้อมูลของคุณยังคงอยู่แม้ว่าคุณจะหยุดหรือลบคอนเทนเนอร์ Keycloak ไปแล้วก็ตาม

การทดสอบ:

  1. เข้าสู่ Keycloak Admin Console (http://localhost:8080/admin/)
  2. สร้าง Realm ใหม่, สร้างผู้ใช้ใหม่, หรือ Client ใหม่
  3. หยุดและลบคอนเทนเนอร์ Keycloak:
    docker stop keycloak
    docker rm keycloak
    
  4. รันคอนเทนเนอร์ Keycloak ใหม่โดยใช้คำสั่งเดิมที่มี Volume Mapping
  5. เข้าสู่ Admin Console อีกครั้ง คุณจะพบว่าข้อมูลที่คุณสร้างไว้ยังคงอยู่

6. การตั้งค่า Keycloak เพิ่มเติม (นอกเหนือจาก Docker)

หลังจาก Keycloak ทำงานด้วย Docker แล้ว คุณสามารถตั้งค่าต่างๆ ภายใน Keycloak Admin Console ได้ตามปกติ เช่น:

  • สร้าง Realm ใหม่: เพื่อแยกการจัดการผู้ใช้งานและแอปพลิเคชัน
  • สร้าง User: ผู้ใช้งานสำหรับระบบของคุณ
  • สร้าง Client: แอปพลิเคชันที่ต้องการใช้ Keycloak ในการยืนยันตัวตน
  • ตั้งค่า Federation: เชื่อมต่อกับระบบยืนยันตัวตนภายนอก (เช่น LDAP, Active Directory)
  • ตั้งค่า Themes: ปรับแต่งหน้า Login ให้เข้ากับแบรนด์ของคุณ
  • ตั้งค่า SMTP: เพื่อส่งอีเมลยืนยันตัวตนหรือรีเซ็ตรหัสผ่าน

แน่นอนครับ! ในฐานะผู้เชี่ยวชาญด้าน Docker Desktop ผมยินดีแนะนำการสร้าง Keycloak โดยใช้ Docker ตั้งแต่พื้นฐานไปจนถึงการใช้งานจริงครับ

เป้าหมายของเรา:

  • เข้าใจพื้นฐานของ Docker ที่จำเป็นสำหรับการใช้งาน Keycloak
  • ติดตั้งและเรียกใช้ Keycloak ด้วย Docker
  • ตั้งค่า Keycloak เบื้องต้นเพื่อพร้อมใช้งาน

1. พื้นฐานของ Docker ที่ควรรู้

ก่อนที่เราจะไปลุย Keycloak มารู้จักกับคอนเซ็ปต์หลักๆ ของ Docker กันก่อนครับ:

  • Docker คืออะไร? Docker เป็นแพลตฟอร์มที่ช่วยให้นักพัฒนาสามารถสร้าง, ปรับใช้, และเรียกใช้แอปพลิเคชันใน “คอนเทนเนอร์” (Containers) ซึ่งเป็นแพ็คเกจที่รวมโค้ด ซอฟต์แวร์ที่จำเป็น ไลบรารี และการตั้งค่าต่างๆ ไว้ด้วยกัน ทำให้แอปพลิเคชันทำงานได้เหมือนกันไม่ว่าจะอยู่บนสภาพแวดล้อมใดก็ตาม

  • ทำไมต้องใช้ Docker กับ Keycloak?

    • ความสอดคล้อง: Keycloak จะทำงานเหมือนกันทุกที่ ไม่ว่าคุณจะรันบนเครื่องของคุณ, บนเซิร์ฟเวอร์, หรือบนคลาวด์
    • การแยกส่วน: Keycloak จะทำงานในสภาพแวดล้อมที่แยกจากระบบปฏิบัติการหลักของคุณ ทำให้ไม่เกิดความขัดแย้งกับซอฟต์แวร์อื่นๆ
    • ความง่ายในการติดตั้ง: ไม่ต้องกังวลเรื่องการติดตั้ง dependencies หรือตั้งค่าที่ซับซ้อน Keycloak มาในรูปแบบของ Docker Image ที่พร้อมใช้งาน
    • การปรับขนาด (Scalability): ง่ายต่อการเพิ่มจำนวน Keycloak Instances เมื่อต้องการรองรับผู้ใช้งานจำนวนมาก
  • ศัพท์สำคัญของ Docker:

    • Image: เหมือนกับแม่แบบ (Template) ของคอนเทนเนอร์ มีทุกสิ่งทุกอย่างที่จำเป็นสำหรับการรันแอปพลิเคชัน (เช่น ระบบปฏิบัติการขนาดเล็ก, Keycloak software, Java, etc.)
    • Container: อินสแตนซ์ที่รันอยู่ของ Image เปรียบเสมือนเครื่องคอมพิวเตอร์ขนาดเล็กที่รันแอปพลิเคชันของคุณ
    • Dockerfile: ไฟล์ข้อความที่ใช้ในการสร้าง Image (เราจะไม่สร้างเองสำหรับ Keycloak แต่จะใช้ Image ที่มีอยู่แล้ว)
    • Docker Hub: Repository สาธารณะสำหรับ Docker Images (คล้ายกับ App Store สำหรับ Docker) ที่เราจะดึง Image ของ Keycloak มาใช้
    • Port Mapping: การเชื่อมต่อพอร์ตจากคอนเทนเนอร์เข้ากับพอร์ตบนเครื่องโฮสต์ของคุณ เพื่อให้สามารถเข้าถึงแอปพลิเคชันในคอนเทนเนอร์ได้
    • Volume: วิธีการจัดเก็บข้อมูลแบบถาวรนอกคอนเทนเนอร์ เนื่องจากคอนเทนเนอร์เป็นแบบ stateless (ข้อมูลจะหายไปเมื่อคอนเทนเนอร์ถูกลบ) การใช้ Volume จะช่วยให้ข้อมูล Keycloak ของคุณยังคงอยู่

2. การติดตั้ง Docker Desktop

ถ้าคุณยังไม่ได้ติดตั้ง Docker Desktop สามารถดาวน์โหลดได้จากเว็บไซต์ทางการ:

หลังจากติดตั้งแล้ว ให้เปิด Docker Desktop ขึ้นมา และตรวจสอบให้แน่ใจว่า Docker Engine ทำงานอยู่ (โดยปกติจะแสดงไอคอนรูปปลาวาฬสีน้ำเงินใน System Tray/Menu Bar)


3. การสร้าง Keycloak ด้วย Docker

Keycloak มี Docker Image อย่างเป็นทางการที่พร้อมใช้งานบน Docker Hub ทำให้เราสามารถดึงมาใช้งานได้ทันที

ขั้นตอนที่ 1: เปิด Command Line / Terminal

เปิด Command Prompt (สำหรับ Windows), Terminal (สำหรับ macOS/Linux) หรือ PowerShell (สำหรับ Windows)

ขั้นตอนที่ 2: ดึง Keycloak Image (Pull Image)

ก่อนอื่น เราต้องดึง Image ของ Keycloak จาก Docker Hub มายังเครื่องของเรา:

Bash

docker pull quay.io/keycloak/keycloak:latest
  • docker pull: คำสั่งสำหรับดึง Docker Image
  • quay.io/keycloak/keycloak:latest: ชื่อของ Image และ Tag (เวอร์ชัน) latest หมายถึงเวอร์ชันล่าสุด คุณสามารถระบุเวอร์ชันเฉพาะเจาะจงได้ เช่น quay.io/keycloak/keycloak:24.0.5

รอสักครู่จนกว่าการดาวน์โหลดจะเสร็จสิ้น

ขั้นตอนที่ 3: เรียกใช้ Keycloak Container

ตอนนี้เราจะเรียกใช้ Keycloak เป็นคอนเทนเนอร์:

Bash

docker run -p 8080:8080 -p 8443:8443 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  --name keycloak \
  quay.io/keycloak/keycloak:latest \
  start-dev

มาดูกันว่าแต่ละส่วนของคำสั่งนี้หมายถึงอะไร:

  • docker run: คำสั่งสำหรับสร้างและเรียกใช้คอนเทนเนอร์
  • -p 8080:8080: Port Mapping
    • :8080 ด้านขวาคือพอร์ตภายในคอนเทนเนอร์ที่ Keycloak รันอยู่
    • 8080: ด้านซ้ายคือพอร์ตบนเครื่องโฮสต์ของคุณที่เราต้องการให้ Keycloak เข้าถึงได้
    • นั่นหมายความว่า เมื่อคุณเข้าถึง localhost:8080 บนเครื่องของคุณ มันจะถูกส่งต่อไปยังพอร์ต 8080 ภายในคอนเทนเนอร์
  • -p 8443:8443: เหมือนกันกับพอร์ต 8080 แต่เป็นพอร์ตสำหรับ HTTPS (ถ้าคุณต้องการใช้ HTTPS ในภายหลัง)
  • -e KEYCLOAK_ADMIN=admin: Environment Variable กำหนดชื่อผู้ใช้สำหรับ Admin console ของ Keycloak เป็น admin
  • -e KEYCLOAK_ADMIN_PASSWORD=admin: Environment Variable กำหนดรหัสผ่านสำหรับ Admin console ของ Keycloak เป็น admin (สำหรับการพัฒนาเท่านั้น! ใน Production ควรใช้รหัสผ่านที่รัดกุมกว่านี้)
  • --name keycloak: กำหนดชื่อให้กับคอนเทนเนอร์ของเรา เพื่อให้ง่ายต่อการอ้างอิงในภายหลัง (เช่น docker stop keycloak)
  • quay.io/keycloak/keycloak:latest: Image ที่เราต้องการใช้
  • start-dev: เป็นคำสั่งที่ Keycloak ใช้ในการเริ่มต้นในโหมดพัฒนา (development mode) ซึ่งเหมาะสำหรับการทดสอบและเรียนรู้

หลังจากรันคำสั่งนี้ คุณจะเห็น Log ของ Keycloak แสดงขึ้นมาใน Terminal รอจนกระทั่งคุณเห็นข้อความที่ระบุว่า Keycloak เริ่มทำงานแล้ว เช่น “Keycloak 24.0.5 (Quarkus 3.8.3) started in 6.002s. Listening on: [ลิงค์ที่น่าสงสัยถูกลบ], https://0.0.0.0:8443

ขั้นตอนที่ 4: เข้าถึง Keycloak

เปิดเว็บเบราว์เซอร์ของคุณและไปที่:

http://localhost:8080

คุณควรจะเห็นหน้าต้อนรับของ Keycloak!

ขั้นตอนที่ 5: เข้าสู่ระบบ Admin Console

คลิกที่ “Administration Console” หรือไปที่:

http://localhost:8080/admin/

ใช้ชื่อผู้ใช้และรหัสผ่านที่คุณตั้งไว้ในขั้นตอนที่ 3:

  • Username: admin
  • Password: admin

เมื่อเข้าสู่ระบบได้สำเร็จ คุณก็พร้อมที่จะเริ่มตั้งค่า Keycloak แล้ว!


4. การจัดการ Keycloak Container (พื้นฐาน)

เมื่อคุณรันคอนเทนเนอร์แล้ว มีคำสั่ง Docker พื้นฐานที่คุณควรรู้:

  • ดูคอนเทนเนอร์ที่กำลังทำงานอยู่:

    Bash

    docker ps
    

    คุณจะเห็นคอนเทนเนอร์ชื่อ keycloak ที่กำลังรันอยู่

  • หยุดคอนเทนเนอร์:

    Bash

    docker stop keycloak
    

    คอนเทนเนอร์จะหยุดทำงาน แต่ยังคงอยู่

  • เริ่มคอนเทนเนอร์ที่หยุดไปแล้ว:

    Bash

    docker start keycloak
    

    คอนเทนเนอร์จะเริ่มทำงานใหม่

  • ลบคอนเทนเนอร์ (เมื่อไม่ต้องการแล้ว):

    Bash

    docker rm keycloak
    

    ข้อควรระวัง: การลบคอนเทนเนอร์จะลบข้อมูลที่อยู่ในคอนเทนเนอร์ไปด้วย (ยกเว้นถ้าคุณใช้ Volume ซึ่งเราจะพูดถึงในส่วนถัดไป) คุณต้องหยุดคอนเทนเนอร์ก่อนจึงจะลบได้

  • ลบ Image (เมื่อไม่ต้องการแล้ว):

    Bash

    docker rmi quay.io/keycloak/keycloak:latest
    

    คุณต้องลบหรือหยุดคอนเทนเนอร์ที่ใช้ Image นี้ก่อนจึงจะลบ Image ได้


5. การจัดเก็บข้อมูลถาวรด้วย Docker Volume

อย่างที่กล่าวไปข้างต้น คอนเทนเนอร์เป็นแบบ stateless ถ้าคุณลบคอนเทนเนอร์ ข้อมูล Keycloak ของคุณ (เช่น Users, Realms, Clients) จะหายไป เพื่อป้องกันปัญหานี้ เราจะใช้ Docker Volume

ขั้นตอน:

  1. หยุดและลบคอนเทนเนอร์ Keycloak เดิมของคุณ (ถ้ามี):

    Bash

    docker stop keycloak
    docker rm keycloak
    
  2. สร้าง Docker Volume:

    Bash

    docker volume create keycloak_data
    

    คำสั่งนี้จะสร้าง Volume ชื่อ keycloak_data บนเครื่องโฮสต์ของคุณ

  3. เรียกใช้ Keycloak Container พร้อม Volume:

    Bash

    docker run -p 8080:8080 -p 8443:8443 \
      -e KEYCLOAK_ADMIN=admin \
      -e KEYCLOAK_ADMIN_PASSWORD=admin \
      -v keycloak_data:/opt/keycloak/data \
      --name keycloak \
      quay.io/keycloak/keycloak:latest \
      start-dev
    

    ส่วนที่เพิ่มเข้ามาคือ:

    • -v keycloak_data:/opt/keycloak/data: Volume Mapping
      • keycloak_data ด้านซ้ายคือชื่อ Volume ที่เราสร้างขึ้น
      • /opt/keycloak/data ด้านขวาคือพาธภายในคอนเทนเนอร์ที่ Keycloak ใช้ในการจัดเก็บข้อมูล (นี่คือพาธมาตรฐานของ Keycloak ที่ควรจะใช้)

ตอนนี้ Keycloak จะจัดเก็บข้อมูลลงใน keycloak_data Volume ซึ่งจะทำให้ข้อมูลของคุณยังคงอยู่แม้ว่าคุณจะหยุดหรือลบคอนเทนเนอร์ Keycloak ไปแล้วก็ตาม

การทดสอบ:

  1. เข้าสู่ Keycloak Admin Console (http://localhost:8080/admin/)
  2. สร้าง Realm ใหม่, สร้างผู้ใช้ใหม่, หรือ Client ใหม่
  3. หยุดและลบคอนเทนเนอร์ Keycloak:
    Bash

    docker stop keycloak
    docker rm keycloak
    
  4. รันคอนเทนเนอร์ Keycloak ใหม่โดยใช้คำสั่งเดิมที่มี Volume Mapping
  5. เข้าสู่ Admin Console อีกครั้ง คุณจะพบว่าข้อมูลที่คุณสร้างไว้ยังคงอยู่

6. การตั้งค่า Keycloak เพิ่มเติม (นอกเหนือจาก Docker)

หลังจาก Keycloak ทำงานด้วย Docker แล้ว คุณสามารถตั้งค่าต่างๆ ภายใน Keycloak Admin Console ได้ตามปกติ เช่น:

  • สร้าง Realm ใหม่: เพื่อแยกการจัดการผู้ใช้งานและแอปพลิเคชัน
  • สร้าง User: ผู้ใช้งานสำหรับระบบของคุณ
  • สร้าง Client: แอปพลิเคชันที่ต้องการใช้ Keycloak ในการยืนยันตัวตน
  • ตั้งค่า Federation: เชื่อมต่อกับระบบยืนยันตัวตนภายนอก (เช่น LDAP, Active Directory)
  • ตั้งค่า Themes: ปรับแต่งหน้า Login ให้เข้ากับแบรนด์ของคุณ
  • ตั้งค่า SMTP: เพื่อส่งอีเมลยืนยันตัวตนหรือรีเซ็ตรหัสผ่าน

สรุปและข้อควรจำ

  • Docker ทำให้การติดตั้งและจัดการ Keycloak ง่ายขึ้นมาก
  • ใช้ docker pull เพื่อดึง Image
  • ใช้ docker run เพื่อเรียกใช้คอนเทนเนอร์
  • Port Mapping (-p) สำคัญสำหรับการเข้าถึง Keycloak
  • Environment Variables (-e) ใช้ในการตั้งค่าเบื้องต้น
  • Volume (-v) เป็นสิ่งสำคัญสำหรับการจัดเก็บข้อมูลถาวร
  • สำหรับการใช้งาน Production ควรใช้ Docker Compose เพื่อจัดการหลายๆ Service และตั้งค่าที่ซับซ้อนกว่านี้

Scroll to Top