'你好世界!' 应用:如何Docker化Golang应用

言鼎科技 2023-06-29 429

介绍

您是否觉得开始使用 Docker 令人生畏?您想迈出第一步,成功将 golang 应用程序 docker 化吗?您是否找不到基本的分步教程来对golang 应用程序进行 docker 化?所有这些问题和一个答案——如果是,那么您选择了正确的教程!

本教程的目的是让初学者了解 Docker。在本指南中,我们将构建一个“Hello, World”应用程序并按照简单的步骤对 golang 应用程序进行 docker 化。事不宜迟,让我们开始我们的教程。

Dockerize Golang 应用程序的先决条件

在构建应用程序之前,请确保您的系统安装了 docker 和 golang。如果没有,请访问下面的链接进行安装。
⦿ 安装Docker
⦿ 安装Golang

项目设置

首先,让我们创建 main.go 文件并使用命令初始化应用程序去修改初始化

我们的项目结构将如下所示 -

sample-dockerize-app
|– main.go
|– Dockerfile

我们的main.go将包含以下代码。


包主
进口 (
“编码/json”
“调频”
“日志”
“网络/http”

“github.com/gorilla/mux”)
功能主要(){
路由器 := mux.NewRouter()
router.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) {
  响应:=地图[字符串]字符串{
    "message": "欢迎使用 Dockerized 应用程序",
  }
  json.NewEncoder(rw).Encode(响应)
})

router.HandleFunc("/{name}", func(rw http.ResponseWriter, r *http.Request) {
  变量 := mux.Vars(r)
  名称:=变量[“名称”]
  var 消息字符串
  如果名字==“”{
    消息=“你好世界”
  } 别的 {
    消息=“你好”+名字
  }
  响应:=地图[字符串]字符串{
    “消息”:消息,
  }
  json.NewEncoder(rw).Encode(响应)
})

log.Println("服务器正在运行!")
fmt.Println(http.ListenAndServe(":8081", router))}

创建一个 Docker 镜像

正如 Docker 文档所说——

映像包括运行应用程序所需的一切——代码或二进制文件、运行时、依赖项以及所需的任何其他文件系统对象。

图像包含您的应用程序定义以及以最简单的方式运行应用程序所需的一切。

创建 docker 镜像需要在配置文件中编写步骤。最常用的文件名是 Dockerfile,但您可以使用您选择的任何名称。但是,在我看来,遵循标准总是更好。

现在,创建一个名为Dockerfile的文件并编写以下代码。


# 构建阶段# 首先拉取 Golang 镜像来自 golang:1.17-alpine 作为 build-env
# 设置环境变量ENV APP_NAME sample-dockerize-appENV CMD_PATH main.go
# 将应用程序数据复制到图像中复制 。$GOPATH/src/$APP_NAMEWORKDIR $GOPATH/src/$APP_NAME
# 构建应用程序运行 CGO_ENABLED=0 go build -v -o /$APP_NAME $GOPATH/src/$APP_NAME/$CMD_PATH
# 运行阶段来自高山:3.14
# 设置环境变量ENV APP_NAME sample-dockerize-app
# 仅将需要的数据复制到此图像中复制 --from=build-env /$APP_NAME 。
# 暴露应用端口暴露 8081
# 启动应用命令 ./$APP_NAME

完成文件后,运行以下命令更新应用程序的依赖项


整理一下

构建并运行 Docker 镜像

使用以下命令构建 docker 镜像。


docker build --rm -t golang-docker-example 。

成功执行命令后,您的屏幕将显示以下输出。


此命令将构建图像并用名称标记它golang-docker-示例. 现在,它只会构建图像,不会做任何事情。下一次将运行图像来处理请求。运行的镜像就是我们所说的容器。

使用以下命令运行图像。


docker run -p 8081:8081 golang-docker-example

执行成功!


-p标志用于定义端口绑定。我们在容器内的应用程序将在 8081 端口上运行,我们将其绑定到主机端口,即 8081。您也可以使用不同的端口进行绑定。为此,您可以运行-p $HOST_PORT:8081, 例如-p 3000:8081.

完成后,瞧!您的应用程序将在端口 8081 上运行。您现在已成功将 golang 应用程序 docker 化。打开浏览器并点击 http://localhost:8081 检查您的应用程序。

您的浏览器将显示


您还可以运行 http://localhost:8081/{name}* 并将 {name}* 替换为将打印具有变量的消息的任何内容。


源代码:Golang Docker 示例 Github

您可以运行以下命令克隆 github 存储库以使用代码,并随时访问golang docker 示例 github

git 克隆 https://github.com/DekivadiyaKishan/golang-docker-example.git

结论

所以,这是一个关于如何对 golang 应用程序进行 dockerize 的初学者教程。我希望本教程至少能帮助您开始使用 Docker。如果您是 Golang 爱好者并想探索 Golang,请访问Golang 教程页面。

如果您正在寻找可以帮助您满足项目要求的熟练开发人员,请联系 Bacancy 并聘请 golang 开发人员

言鼎科技

The End