Golang - 使用docker部署专案

之前就有做过这件事情
当时搞定了之后想说,简单吗~~~就是搞个Dockerfile而已
结果好一阵子没用就给他忘了,然后卡很久还7pupu= =
最近会继续用的原因是在学Kuberbetes,体会到了容器部署的强大之处

Source code

https://github.com/whitefloor/building_golang_with_docker_exercise

Golang code

就是个api sample连进去会有反应,有用go mod

package mainimport ("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 ./destCOPY . .# 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也会有结果

参考资源

https://philipzheng.gitbook.io/docker_practice/dockerfile/instructions

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章