เป้าหมาย
- เข้าใจพื้นฐานของ 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 สามารถดาวน์โหลดได้จากเว็บไซต์ทางการ:
- สำหรับ Windows: https://docs.docker.com/desktop/install/windows-install/
- สำหรับ macOS: https://docs.docker.com/desktop/install/mac-install/
หลังจากติดตั้งแล้ว ให้เปิด 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 Imagequay.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
ขั้นตอน:
-
หยุดและลบคอนเทนเนอร์ Keycloak เดิมของคุณ (ถ้ามี):
docker stop keycloak docker rm keycloak -
สร้าง Docker Volume:
docker volume create keycloak_dataคำสั่งนี้จะสร้าง Volume ชื่อ
keycloak_dataบนเครื่องโฮสต์ของคุณ -
เรียกใช้ 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 Mappingkeycloak_dataด้านซ้ายคือชื่อ Volume ที่เราสร้างขึ้น/opt/keycloak/dataด้านขวาคือพาธภายในคอนเทนเนอร์ที่ Keycloak ใช้ในการจัดเก็บข้อมูล (นี่คือพาธมาตรฐานของ Keycloak ที่ควรจะใช้)
ตอนนี้ Keycloak จะจัดเก็บข้อมูลลงใน keycloak_data Volume ซึ่งจะทำให้ข้อมูลของคุณยังคงอยู่แม้ว่าคุณจะหยุดหรือลบคอนเทนเนอร์ Keycloak ไปแล้วก็ตาม
การทดสอบ:
- เข้าสู่ Keycloak Admin Console (
http://localhost:8080/admin/) - สร้าง Realm ใหม่, สร้างผู้ใช้ใหม่, หรือ Client ใหม่
- หยุดและลบคอนเทนเนอร์ Keycloak:
docker stop keycloak docker rm keycloak - รันคอนเทนเนอร์ Keycloak ใหม่โดยใช้คำสั่งเดิมที่มี Volume Mapping
- เข้าสู่ 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 สามารถดาวน์โหลดได้จากเว็บไซต์ทางการ:
- สำหรับ Windows: https://docs.docker.com/desktop/install/windows-install/
- สำหรับ macOS: https://docs.docker.com/desktop/install/mac-install/
หลังจากติดตั้งแล้ว ให้เปิด 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 Imagequay.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 พื้นฐานที่คุณควรรู้:
-
ดูคอนเทนเนอร์ที่กำลังทำงานอยู่:
Bashdocker psคุณจะเห็นคอนเทนเนอร์ชื่อ
keycloakที่กำลังรันอยู่ -
หยุดคอนเทนเนอร์:
Bashdocker stop keycloakคอนเทนเนอร์จะหยุดทำงาน แต่ยังคงอยู่
-
เริ่มคอนเทนเนอร์ที่หยุดไปแล้ว:
Bashdocker start keycloakคอนเทนเนอร์จะเริ่มทำงานใหม่
-
ลบคอนเทนเนอร์ (เมื่อไม่ต้องการแล้ว):
Bashdocker rm keycloakข้อควรระวัง: การลบคอนเทนเนอร์จะลบข้อมูลที่อยู่ในคอนเทนเนอร์ไปด้วย (ยกเว้นถ้าคุณใช้ Volume ซึ่งเราจะพูดถึงในส่วนถัดไป) คุณต้องหยุดคอนเทนเนอร์ก่อนจึงจะลบได้
-
ลบ Image (เมื่อไม่ต้องการแล้ว):
Bashdocker rmi quay.io/keycloak/keycloak:latestคุณต้องลบหรือหยุดคอนเทนเนอร์ที่ใช้ Image นี้ก่อนจึงจะลบ Image ได้
5. การจัดเก็บข้อมูลถาวรด้วย Docker Volume
อย่างที่กล่าวไปข้างต้น คอนเทนเนอร์เป็นแบบ stateless ถ้าคุณลบคอนเทนเนอร์ ข้อมูล Keycloak ของคุณ (เช่น Users, Realms, Clients) จะหายไป เพื่อป้องกันปัญหานี้ เราจะใช้ Docker Volume
ขั้นตอน:
-
หยุดและลบคอนเทนเนอร์ Keycloak เดิมของคุณ (ถ้ามี):
Bashdocker stop keycloak docker rm keycloak -
สร้าง Docker Volume:
Bashdocker volume create keycloak_dataคำสั่งนี้จะสร้าง Volume ชื่อ
keycloak_dataบนเครื่องโฮสต์ของคุณ -
เรียกใช้ Keycloak Container พร้อม Volume:
Bashdocker 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 Mappingkeycloak_dataด้านซ้ายคือชื่อ Volume ที่เราสร้างขึ้น/opt/keycloak/dataด้านขวาคือพาธภายในคอนเทนเนอร์ที่ Keycloak ใช้ในการจัดเก็บข้อมูล (นี่คือพาธมาตรฐานของ Keycloak ที่ควรจะใช้)
ตอนนี้ Keycloak จะจัดเก็บข้อมูลลงใน keycloak_data Volume ซึ่งจะทำให้ข้อมูลของคุณยังคงอยู่แม้ว่าคุณจะหยุดหรือลบคอนเทนเนอร์ Keycloak ไปแล้วก็ตาม
การทดสอบ:
- เข้าสู่ Keycloak Admin Console (
http://localhost:8080/admin/) - สร้าง Realm ใหม่, สร้างผู้ใช้ใหม่, หรือ Client ใหม่
- หยุดและลบคอนเทนเนอร์ Keycloak:
Bash
docker stop keycloak docker rm keycloak - รันคอนเทนเนอร์ Keycloak ใหม่โดยใช้คำสั่งเดิมที่มี Volume Mapping
- เข้าสู่ 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 และตั้งค่าที่ซับซ้อนกว่านี้