แอปพลิเคชัน Golang เพื่อทำงานเป็น Docker Container

Xaepphlikhechan Golang Pheux Thangan Pen Docker Container



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

Go เป็นภาษาโปรแกรมโอเพ่นซอร์ส พิมพ์คงที่ และคอมไพล์ ซึ่งมีชื่อเสียงในด้านความสามารถในการอำนวยความสะดวกในการพัฒนาซอฟต์แวร์ที่เรียบง่าย เชื่อถือได้ และมีประสิทธิภาพสูง พบยูทิลิตี้ในการสร้างแอปพลิเคชันที่หลากหลาย รวมถึงเว็บแอป โซลูชันแบบคลาวด์เนทีฟ อินเทอร์เฟซบรรทัดคำสั่ง (CLI) และที่น่าทึ่ง แม้แต่ Docker เองก็สร้างขึ้นโดยใช้ Go

ในกรณีของเรา เราสร้างเซิร์ฟเวอร์ HTTP แบบง่ายใน Go ซึ่งช่วยให้เราสาธิตวิธีสร้างและเชื่อมต่อแอปพลิเคชันในขั้นตอนง่ายๆ







ความต้องการ:

เพื่อปฏิบัติตามบทช่วยสอนนี้ คุณต้องมีเครื่องมือต่อไปนี้:



  1. ติดตั้งคอมไพเลอร์ Go แล้ว (ต้องใช้เวอร์ชัน 1.21 ขึ้นไป)
  2. ใช้งาน Docker Engine บนเครื่องโฮสต์ของคุณ
  3. IDE หรือโปรแกรมแก้ไขข้อความเพื่อแก้ไขแอปพลิเคชัน Go เราแนะนำให้ใช้ Visual Studio หรือ Vim
  4. ล่ามบรรทัดคำสั่งเช่น Bash, ZSH, PowerShell เป็นต้น

เมื่อมีคุณสมบัติตรงตามข้อกำหนดแล้ว ให้เราดำเนินการต่อและเรียนรู้วิธีสร้างแอปพลิเคชัน



การสร้างแอปพลิเคชัน

ขั้นตอนต่อไปคือการสร้างแอปพลิเคชันของเรา ในกรณีของเรา เราสร้างเซิร์ฟเวอร์ HTTP แบบธรรมดาที่ตอบกลับด้วยข้อความธรรมดา





เริ่มต้นด้วยการสร้างไดเร็กทอรีเพื่อจัดเก็บโปรเจ็กต์ Go คุณสามารถระบุชื่อที่เหมาะสมได้

$ mkdir go_server

นำทางไปยังไดเร็กทอรีและสร้างไฟล์ใหม่เพื่อจัดเก็บซอร์สโค้ด ในกรณีของเรา เราเรียกไฟล์ 'main.go' ซึ่งระบุว่าไฟล์นั้นเป็นซอร์สโค้ด Go



$ สัมผัส main.go

สุดท้าย แก้ไขไฟล์และเพิ่มซอร์สโค้ดให้กับแอปพลิเคชันดังแสดงต่อไปนี้:

แพ็คเกจหลัก

นำเข้า (
'เอฟเอ็มที'
'เน็ต/http'
)

ฟังก์ชั่นหลัก ( ) {
// จัดการกับคำขอที่เข้ามา
http.HandleFunc ( '/' , ฟังก์ชั่น ( ใน http.ResponseWriter, r * http.คำขอ ) {
// เขียนคำตอบให้กับลูกค้า
fmt.Fprintf ( ใน , 'จากนักเทียบท่า (:' )
} )

// เริ่มเซิร์ฟเวอร์ HTTP บนพอร์ต 8080
fmt.พิมพ์ln ( 'เซิร์ฟเวอร์กำลังทำงานบน :8080' )
http.ListenAndServe ( ':8080' , ไม่มี )
}

แอปพลิเคชันก่อนหน้านี้สร้างเซิร์ฟเวอร์ HTTP พื้นฐานที่เชื่อมโยงกับพอร์ต 8080 เซิร์ฟเวอร์ตอบสนองด้วยข้อความพื้นฐานตามที่กำหนดไว้ก่อนหน้านี้

การทดสอบแอปพลิเคชัน

ก่อนที่เราจะเชื่อมต่อแอปพลิเคชัน ให้เราตรวจสอบให้แน่ใจว่าแอปทำงานอย่างถูกต้อง รันคำสั่งต่อไปนี้:

$ ไปวิ่ง main.go

คำสั่งก่อนหน้านี้เริ่มแอปพลิเคชันและส่งกลับข้อความดังต่อไปนี้:

เซิร์ฟเวอร์กำลังทำงานบน: 8080

ถัดไป เพื่อทดสอบเซิร์ฟเวอร์ HTTP คุณสามารถรันคำสั่ง “curl” ได้ดังนี้:

$ ขด http: // โฮสต์ท้องถิ่น: 8080 /

คำสั่งก่อนหน้านี้ควรส่งคืนข้อความดังนี้:

จากด็อกเกอร์ ( : : %

ตอนนี้เราสามารถดำเนินการและเชื่อมต่อแอปพลิเคชันก่อนหน้าตามที่กำหนดไว้ในขั้นตอนถัดไป

การบรรจุแอปพลิเคชัน

ขั้นตอนต่อไปคือการหารือเกี่ยวกับวิธีสร้างคอนเทนเนอร์สำหรับแอปพลิเคชัน เราเริ่มต้นด้วยการสร้าง Dockerfile ในไดเรกทอรีโครงการ

$ ซีดี go_server

สร้างไฟล์ชื่อ Dockerfile โดยไม่มีนามสกุลใดๆ และแก้ไขไฟล์ด้วยโปรแกรมแก้ไขข้อความ ไฟล์นี้ช่วยให้เราสามารถกำหนดข้อกำหนดทั้งหมดสำหรับแอปพลิเคชันของเราได้ดังต่อไปนี้:

$ สัมผัส Dockerfile
$ เพราะ Dockerfile

เพิ่มการกำหนดค่าดังนี้:

จากโกลัง: 1.21

WORKDIR / แอป

คัดลอก .

RUN ไปสร้าง main.go -โอ หลัก .

เปิดเผย 8080

ซีเอ็มดี [ './หลัก' ]

ใน Dockerfile ก่อนหน้า เรากำหนดการดำเนินการก่อนหน้าสำหรับแอปพลิเคชัน

  • ตั้งค่าอิมเมจฐานเป็นอิมเมจ Golang อย่างเป็นทางการเวอร์ชัน 1.21
  • กำหนดค่าไดเร็กทอรีการทำงานภายในคอนเทนเนอร์เป็น “/app”
  • เราคัดลอกไดเร็กทอรีโครงการทั้งหมดลงในคอนเทนเนอร์
  • สร้างแอปพลิเคชัน Go ภายในคอนเทนเนอร์
  • เปิดเผยพอร์ต 8080 เพื่ออนุญาตการรับส่งข้อมูล HTTP ขาเข้า
  • ตั้งค่าคำสั่งให้รันแอปพลิเคชัน Go

การสร้างอิมเมจนักเทียบท่า

หากต้องการสร้างอิมเมจสำหรับแอปพลิเคชัน ให้เปิดเทอร์มินัลแล้วไปที่ไดเร็กทอรีโปรเจ็กต์ จากนั้นรันคำสั่งต่อไปนี้เพื่อสร้างอิมเมจ:

$ ซูโดะ สร้างนักเทียบท่า -t go_server_docker .

แทนที่ go_server_docker ด้วยชื่อที่คุณต้องการกำหนดอิมเมจของแอป

หลังจากสร้างอิมเมจ Docker สำเร็จแล้ว คุณสามารถเรียกใช้คอนเทนเนอร์ตามอิมเมจนั้นได้ด้วยคำสั่งต่อไปนี้:

$ นักเทียบท่าวิ่ง -พี 8080 : : 8080 go_server_docker

คำสั่งก่อนหน้านี้ควรแมปพอร์ต 8080 จากเครื่องโฮสต์กับพอร์ต 8080 ภายในคอนเทนเนอร์

หากต้องการทดสอบคอนเทนเนอร์ ให้รันคำสั่งต่อไปนี้:

$ ขด http: // โฮสต์ท้องถิ่น: 8080

สิ่งนี้ควรพิมพ์ข้อความที่กำหนดไว้ในแอปพลิเคชัน

บทสรุป

ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีสร้างแอปพลิเคชัน Go พื้นฐาน นอกจากนี้เรายังได้เรียนรู้วิธีจัดวางแอปพลิเคชันด้วยการกำหนดข้อกำหนดใน Dockerfile สร้างอิมเมจจากคอนเทนเนอร์ และเรียกใช้คอนเทนเนอร์จากอิมเมจ