如何使用Docker部署Go Web应用的实现

论坛 期权论坛 脚本     
niminba   2021-5-23 04:58   2298   0

本文介绍了如何使用Docker以及Docker Compose部署我们的 Go Web 程序。

为什么需要Docker?

使用docker的主要目标是容器化。也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机。

想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很多的依赖环境或包,甚至对依赖的具体版本都有严格的要求,当开发过程完成后,你希望将应用程序部署到web服务器。这个时候你必须确保所有依赖项都安装正确并且版本也完全相同,否则应用程序可能会崩溃并无法运行。如果你想在另一个web服务器上也部署该应用程序,那么你必须从头开始重复这个过程。这种场景就是Docker发挥作用的地方。

对于运行我们应用程序的主机,不管是笔记本电脑还是web服务器,我们唯一需要做的就是运行一个docker容器平台。从以后,你就不需要担心你使用的是MacOS,Ubuntu,Arch还是其他。你只需定义一次应用,即可随时随地运行。

Docker部署示例

准备代码

这里我先用一段使用net/http库编写的简单代码为例讲解如何使用Docker进行部署,后面再讲解稍微复杂一点的项目部署案例。

package main

import (
 "fmt"
 "net/http"
)

func main() {
 http.HandleFunc("/", hello)
 server := &http.Server{
 Addr: ":8888",
 }
 fmt.Println("server startup...")
 if err := server.ListenAndServe(); err != nil {
 fmt.Printf("server startup failed, err:%v\n", err)
 }
}

func hello(w http.ResponseWriter, _ *http.Request) {
 w.Write([]byte("hello liwenzhou.com!"))
}

上面的代码通过8888端口对外提供服务,返回一个字符串响应:hello liwenzhou.com!。

创建Docker镜像

镜像(image)包含运行应用程序所需的所有东西

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP