[Docker] Golang Create and Build Image đơn giản.

Giới Thiệu Trong một vài năm gần đây thì ngôn ngữ lập trình Golang cực kì hot, vì hot nến thị trường công việc cũng như tuyển dụng vô cùng đa dạng. Golang hiện tại rất mạnh cũng như rất mới ở việt nam nên hôm nay mình demo đơn giản tạo một source vào

Giới Thiệu

Trong một vài năm gần đây thì ngôn ngữ lập trình Golang cực kì hot, vì hot nến thị trường công việc cũng như tuyển dụng vô cùng đa dạng.
Golang hiện tại rất mạnh cũng như rất mới ở việt nam nên hôm nay mình demo đơn giản tạo một source vào một api để ping, và build ra image docker cũng như run nó nhé.


Create Project

Trước Khi tạo project golang bạn cần setup môi trường cho nó, để kiểm tra đã setup môi trường ok thì bạn run:

go verion

=> nếu kết quả ra thể này là ok rồi, go version go1.18.2 darwin/arm64 hoặc version thấp hơn nhé.


  1. Để create 1 project golang bạn run: golang-docker-demo thì bạn có thể thay đổi tên khác nhé
go mod init golang-docker-demo

=> sau khi run xong bạn sẽ thấy một file go.mod được tạo ra.

  1. Bạn tạo một file main.go:
package main

import (
	"fmt"
)
func main() {
	fmt.Println("running")
}

=> sau khi run go run main.go thì sẽ thấy kết quả running. OK rồi bây giờ bạn có thể đi phỏng vấn với golang và nhận offer 2K$ rồi đó haha.

  1. Bây giờ sẽ tạo một api rest đơn giản sau đó thực hiện lệnh curl http://localhost:8100/ping bạn thay thế đoạn code trên bằng đoạn code dưới này nhé.
package main

import (
	"fmt"
	"log"
	"net/http"
)

func init() {

}

var (
	ServiceName = "golang-docker-demo"
	port        = "8100"
)

func main() {
	http.HandleFunc("/ping", func(w http.ResponseWriter, req *http.Request) {
		w.Write([]byte(fmt.Sprintf("ping ok %s", ServiceName)))
	})
	fmt.Println("start service with port: ", port)
	log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}

=> nếu kết quả là ping ok golang-docker-demo thì bạn đã thành công rồi đó. sau này chỉ cần xử lý get data từ database là được rồi.

Build Image

Sau khi create project xong, bước tiếp theo là mình sẽ tạo Dockerfile bạn nhớ là ghi tên file đúng nha, nếu không đúng nhé, sau đó copy đoạn script này vào.

FROM golang:1.18.2-alpine
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build  -o /out/main ./
ENTRYPOINT ["/out/main"]

Tiếp theo là bước build image, nhớ là cũng setup docker môi trường trước nhé.

docker build -t golang-docker-demo .

=> sau khi đợi build xong, bạn run docker images bạn sẽ thấy golang-docker-demo ở cột năm là build thành công rồi đó.

Tiếp đó là mình run images thành container nhé.

docker run --name   golang-docker-demo -p 8100:8100 -h 0.0.0.0 golang-docker-demo 

=> Sau khi build xong, bạn run docker ps nếu có xuất hiện golang-docker-demo ở cột name thì là đã run được container.

Bước cuối cùng bạn run:

curl http://localhost:8100/ping

=> ping ok golang-docker-demo thì đã thành công rồi nhé.

link source code: https://github.com/ducnpdev/golang-docker-demo

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ