iT邦幫忙

0

Golang - 使用docker部署專案

  • 分享至 

  • xImage
  •  

之前就有做過這件事情
當時搞定了之後想說,簡單嗎~~~就是搞個Dockerfile而已
結果好一陣子沒用就給他忘了,然後卡很久還7pupu= =
最近會繼續用的原因是在學Kuberbetes,體會到了容器部署的強大之處

Source code

https://github.com/whitefloor/building_golang_with_docker_exercise

Golang code

就是個api sample連進去會有反應,有用go mod

package main

import (
	"log"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		log.Println(("hello user"))
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

Dockerfile

# 小坑:記得做docker image的時候一定要命名成"Dockerfile"不然會發生錯誤
FROM golang:1.18
# 有設定WORKDIR就不需要mkdir,會自己創資料夾
WORKDIR /app
# COPY ./src ./dest
COPY . .
# RUN 用多個RUN去寫的話,會產生新的image,因此最好是使用一次RUN,然後換行處理
# go build的時候中過一招卡很久,沒有指定-o輸出檔名的話,會使用資料夾預設的名稱當做app name,然後ENTRYPOINT怎樣都找不到
RUN go mod tidy && \
    go build -o myGolangApp
# ENTRYPOINT docker執行的進入點,預設工作目錄是/app,所以才可以用相對路徑直接找到myGolangApp進入
ENTRYPOINT ./myGolangApp

Build docker image and run

docker bulid -t golang_app_image .
docker run --rm -p 8080:8080 -d golang_app_image

Testing

用postman或瀏覽器連線到

http://localhost:8080/ping

會看到response,docker用dashboard看log也會有結果

參考資源


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言