首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 Docker 进行 Go 应用程序引导指南

为在 Docker 中部署的 Go 应用程序做准备

使用 Docker 进行 Go 应用程序引导指南

在使用 Go 开发 Web 应用程序时,无论是用于 HTTP 还是其他类型的服务,部署到不同的阶段或环境(本地开发、生产环境等)都是一个常见的考虑因素。在本文中,我们将探讨在 Docker 容器内集成 Golang 栈的方法,这是一个被广泛采用的方法,并使用 Docker Compose 进行编排。

准备您的 Go 应用程序

首先,您需要一个功能齐全的 Go 应用程序。以下是我们main.go文件的代码及其简要说明:

//?/src/main.go

package?main

import?(

"fmt"

"net/http"

"os"

)

func?main()?{

var?PORT?string

if?PORT?=?os.Getenv("PORT");?PORT?==?""?{

PORT?=?"3001"

}

http.HandleFunc("/",?func(w?http.ResponseWriter,?r?*http.Request)?{

fmt.Fprintf(w,?"Hello?World?from?path:?%s\n",?r.URL.Path)

})

http.ListenAndServe(":"+PORT,?nil)

}

这段代码设置了一个基本的 HTTP 服务器,当接收到请求时返回“Hello World”,并根据环境变量动态分配一个端口。

创建您的 Dockerfile

接下来的步骤是创建一个 Dockerfile,该文件定义了构建和运行您的 Go 应用程序的环境。

#?/Dockerfile

FROM?golang:alpine

ADD?./src?/go/src/app

WORKDIR?/go/src/app

ENV?PORT=3001

CMD?["go",?"run",?"main.go"]

Dockerfile 的解释如下:

??使用 Alpine Linux 发行版从官方 Golang 镜像构建容器,因为它轻量级。

??将当前目录挂载到容器的标准 Go 路径上。

??设置工作目录到我们应用程序的 Go 路径。

??定义一个名为“PORT”的环境变量,其默认值为“3001”。

??指定构建和运行我们应用程序的命令。

构建和运行容器

假设您已安装 Docker 运行环境,请按照以下步骤操作:

1.?构建 Docker 镜像:

docker?build?.?-t?my-golang-app-image

2.?从该镜像运行一个容器:

docker?run?-p?3030:3001?-it?--rm?--name?my-golang-app-run?my-golang-app-image

在这里,我们指示 Docker 运行一个新容器,将主机端口 3030 绑定到容器的内部端口 3001,将 stdout 输出显示在当前终端上,在其进程终止后删除容器,并为容器分配一个自定义名称。

试一试!

在您的浏览器中访问localhost:3030,您应该会看到文本“Hello World from path: /”。要停止容器,请按Ctrl + C。

使用 Docker Compose 进行编排

Docker Compose 允许集成多个容器。虽然对于此练习来说可能有些大材小用,但对于未来的场景是宝贵的知识。创建一个docker-compose.yml文件:

#?/docker-compose.yml

version:?'2'

services:

my-golang-app-run:

container_name:?my-golang-app-run

build:?.

command:?go?run?main.go

volumes:

-?./src:/go/src/app

working_dir:?/go/src/app

ports:

-?"3030:3000"

environment:

PORT:?3001

现在,运行以下命令:

docker-compose?up

再次在浏览器中访问localhost:3030,您将看到与之前使用 Docker Compose 相同的结果。要停止容器,请按Ctrl + C。

为什么在本地使用 Docker?

请注意,我们从未在本地环境中安装 Go。只需安装 Docker,您就可以避免在本地环境中安装各种运行时,这在处理具有不同运行时的多个项目时非常有用。

总结

我们成功地配置了一个 Dockerfile,用于构建图像和运行具有 Go 应用程序所需环境的容器。此外,Docker Compose 定义文件允许我们在需要时无缝运行容器与其他服务。

希望这个指南对您有所帮助!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OW8af18YY8VzMBx7htA817NA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com