Heroกู deploy Spring Boot for API
เมื่อผมนึกถึง host หรือ cloud สำหรับ deploy โปรแกรม Java แบบไวๆผมมักนึกถึง Heroku ครับ เขาทำมันให้ง่ายได้ มาดูกัน
Heroku Free Account
อันดับแรกเราต้องมี account (แบบฟรี) ของเขาเสียก่อน สมัครได้เลยนะครับ
Heroku deploy Java
หลังจากนั้นหา doc ของเขาแบบไวๆครับ Google ไปว่า (ผมใช้ Google Chrome นะ)
heroku deploy java
หัวข้อที่เราสนใจคือ
Getting Started on Heroku with Java | Heroku Dev Center
ความจริงแล้วลำดับขั้นตอนต่างๆชัดเจน สามารถทำตามได้เลย แต่ผมก็จะนำเสนอด้วยนะ
Create Spring Boot for API Project
มีโปรเจกต์ Spring Boot Web หรือยัง ถ้าไม่มี Google ไปว่า
spring init
ผมสร้างตัวอย่างขึ้นมา JDK 8 โดย Maven ชื่อ ShopDemo
และอย่าลืม spring boot starter web นะครับ
ตัว starter web นี้ใช้สร้าง API ได้ เพื่อนๆสามารถอ่านเพิ่มเติมได้ที่นี่
สำหรับใครก็ตามที่ใช้ IDEA เขียน Java เป็นทุนอยู่แล้ว ก็เปิดโปรเจกต์นี้ขึ้นมาครับ
ผมจะสร้าง controller ชื่อ ProductController อยู่ที่ package ชื่อ com.pros.ShopDemo.controller แต่ต้องการให้มันเป็นพิมพ์เล็กทั้งหมด ดังนั้นจึง rename เป็น com.pros.shopdemo.controller
สร้าง Get Method สำหรับขอรายการสินค้าทั้งหมด มีชนิดเป็น String[] (สตริงอาร์เรย์)
เมื่อรันโปรเจกต์ก็จะได้หน้าตาแบบนี้เมื่อเรียกด้วย browser
http://localhost:8080/products
จนถึงตอนนี้ก็ได้ว่าเรามี API แล้วนะครับ ต่อไปก็จะนำมันไป deploy บน Heroku ล่ะ
Before Deploy
ตาม doc ของ Heroku ดูว่ามีสามอย่างนี้พร้อมแล้วหรือยัง หากยังก็ติดตั้งให้เรียบร้อยโดยคลิกที่ลิงก์
- Heroku Account (คงทำเสร็จไปแล้ว)
- Java 8 (JDK) (เสร็จไปแล้ว)
- Maven 3
- Heroku Command Line Interface (CLI)
บอกกับมือใหม่ว่า Maven 3 ที่กล่าวถึงนี้ไม่ใช่ Maven เดิมที่ติดมากับ IDEA นะ ตรงนั้นก็ให้แยกไปต่างหาก (ปล่อยไป ไม่ต้องนำมาเกี่ยวข้องกัน) เพราะมันจัดการง่ายกว่า ให้ติดตั้ง Maven 3 แบบ global ไปเลยอีกตัว (ทำเป็นกันนะ เคร~)
ส่วน Heroku Command Line Interface หรือ Heroku CLI จำเป็นต้องมี Git ติดตั้งไว้ก่อน (required) และเราต้อง login เพื่อยืนยันตัวตนด้วย
ตรวจสอบสำหรับคนติดตั้งเรียบร้อยแล้ว
Java 8
java -version
Maven 3
mvn -version
Heroku CLI
ไปยังโปรเจกต์ Spring Boot ของเราครับ เปิด command line หรือ terminal ขึ้นมาจาก root ของโปรเจกต์แล้วพิมพ์
heroku login
จากนั้นมันจะเปิด browser ขึ้นมา
จัดการ login เลยนางหนู
เมื่อทำสำเร็จจะได้หน้าตาอย่างนี้
เห็นแล้วปิดหน้าต่างนี้ได้
ส่วนสถานะเราใน command line (terminal) ก็แบบนี้
เยี่ยมมากทหาร!
Deploy Spring Boot (Shop Demo) project to Heroku
นาทีสำคัญมาถึงแล้ว ที่นี่จะต้องมี git repository อยู่ด้วยนะ
ตรวจสอบว่า git ของโปรเจกต์พร้อมไหม
พิมพ์ git status
กลับได้ผลลัพธ์เช่นนี้
ฉะนั้น init git ก่อน
git init
จัดการ commit ให้เรียบร้อยนะนางหนู
git add .
ต่อด้วย
git commit -m "init project"
เรื่องของ git นี้เพื่อนๆที่ยังไม่คุ้นเคยสามารถหาอ่านจากบทความอื่นประกอบนะครับ
ตอนนี้เท่ากับว่าเรามี source code เก็บไว้ใน git ซึ่งตัว git ดูแลโปรเจกต์ของเราอยู่ ขั้นตอนถัดไปเราจะต้องทำให้ Heroku รู้จัก git นี้ผ่าน git remote
คำสั่งต่อไปนี้จะสร้าง Heroku application พร้อมกับ link ไปที่ git remote ให้อัตโนมัติ
heroku create
จากนั้นทดสอบว่า git remote ได้รู้จัก Heroku application นั้นแล้วหรือยัง
git remote -v
ผลลัพธ์
remote ก็คือ ปลายทางที่เราต้องการ push source ไป
รอช้าอยู่ใย push source ไปได้แล้ว
git push heroku master
ลองเข้าไปดูที่ Heroku website ที่ account ของเราเอง
An Application is Running
ดูต่อครับว่ามัน running อยู่ไหม
heroku open
วู้ๆๆ ใช้ได้
จากนั้นเรียก api /products ของเรา
.../products
พวกเราทำได้นะ เยี่ยมมาก! ไว้พบกันใหม่ครับ