Go เป็นภาษาโปรแกรมโอเพ่นซอร์ส พิมพ์คงที่ และคอมไพล์ ซึ่งมีชื่อเสียงในด้านความสามารถในการอำนวยความสะดวกในการพัฒนาซอฟต์แวร์ที่เรียบง่าย เชื่อถือได้ และมีประสิทธิภาพสูง พบยูทิลิตี้ในการสร้างแอปพลิเคชันที่หลากหลาย รวมถึงเว็บแอป โซลูชันแบบคลาวด์เนทีฟ อินเทอร์เฟซบรรทัดคำสั่ง (CLI) และที่น่าทึ่ง แม้แต่ Docker เองก็สร้างขึ้นโดยใช้ Go
ในกรณีของเรา เราสร้างเซิร์ฟเวอร์ HTTP แบบง่ายใน Go ซึ่งช่วยให้เราสาธิตวิธีสร้างและเชื่อมต่อแอปพลิเคชันในขั้นตอนง่ายๆ
ความต้องการ:
เพื่อปฏิบัติตามบทช่วยสอนนี้ คุณต้องมีเครื่องมือต่อไปนี้:
- ติดตั้งคอมไพเลอร์ Go แล้ว (ต้องใช้เวอร์ชัน 1.21 ขึ้นไป)
- ใช้งาน Docker Engine บนเครื่องโฮสต์ของคุณ
- IDE หรือโปรแกรมแก้ไขข้อความเพื่อแก้ไขแอปพลิเคชัน Go เราแนะนำให้ใช้ Visual Studio หรือ Vim
- ล่ามบรรทัดคำสั่งเช่น 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.21WORKDIR / แอป
คัดลอก .
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 สร้างอิมเมจจากคอนเทนเนอร์ และเรียกใช้คอนเทนเนอร์จากอิมเมจ