Gitlab build docker image [Golang] ฉบับสายย่อ

Tanaphon Auanhinkong
Tech INNO
Published in
2 min readMay 20, 2020

ก่อนอื่นเรามาสร้าง repository เปล่าบน gitlab แล้ว clone ลงมาที่เครื่องได้เลยครับ

ก่อนอื่น init go module ด้วยคำสั่ง

go mod init [ชื่อ module]// ตัวอย่าง go mod init https://gitlab.com/tanaphonble/gogo

ต่อไปเราจะมาสร้างไฟล์ที่ต้องใช้ 3 ไฟล์ด้วยกัน

  1. main.go — เป็น code golang ของเรา
  2. Dockerfile — เอาไว้ใช้ตอน build docker image
  3. .gitlab-ci.yml — เอาไว้เขียน pipeline บน gitlab

1. สร้าง main.go

เป็น code ตัวอย่างจากทาง https://echo.labstack.com/guide นั่นเอง

2. สร้าง Dockerfile

เป็น docker multistage build สำหรับ image ของเรา

3. สร้าง .gitlab-ci.yml

สิ่งที่ pipeline ของเราจะทำคือสร้าง docker image แล้ว push ขึ้นไปยัง registry ของ gitlab เรานั่นเองครับ

ในส่วนที่เป็น variables.IMAGE สามารถเปลี่ยนเป็นชื่อ registry ของเราได้เลย

หลังจากสร้างไฟล์เสร็จก็สามารถ push ขึ้น gitlab ได้เลยครับ แล้ว pipeline ก็จะทำงานตามที่เราได้เขียนไว้ในไฟล์ .gitlab-ci.yml ครับ

ตรวจสอบความถูกต้อง

เมื่อ pipeline ทำงานสำเร็จ ที่ repository ของเราไปที่ CI/CD > Pipelines ก็จะเห็นว่าที่มี job ที่ทำสำเร็จแล้ว
เข้าไปดูที่ Packages & Registries จะพบว่ามี image ถูก push ขึ้นมาแล้ว

เตรียมทดสอบ image ที่เพิ่งถูก push ขึ้นไป

คลิกที่ปุ่ม copy จะเป็นการ copy url ของ image ของเรา

ขั้นตอนต่อไปเปิด terminal ที่เครื่องของเรา และทำการ login เพื่อให้สามารถ pull image จาก registry gitlab ได้

docker login registry.gitlab.com

Run!

docker run -p 1323:1323 [url ของ registry ที่ copy ไว้]
run docker พร้อมทำการ map port 1323 ของ
ลองเรียกดูก็จะได้ response กลับมา

ขอบคุณที่อ่านจนจบนะคร้าบบบ ถ้าหากมีส่วนไหนที่อยากให้ปรับปรุงหรือมีข้อเสนอแนะยังไงก็เข้ามาให้ feedback กันได้เลยนะครับผม

--

--