Golang 如何应用Docker化

Golang 如何应用Docker化

Docker是一个容器化平台,可以在隔离环境中构建、运行和管理应用程序。在容器中,软件、库和配置文件被捆绑在一起并相互隔离。Golang是一种开源、过程化和静态类型的编程语言。本文将讨论如何使用Docker开发和部署Golang应用程序。

将Golang应用程序容器化

作为本教程的一部分,我们将创建一个简单的Golang应用程序作为REST API。

步骤1: 运行以下命令创建一个新的Golang项目。

$ mkdir docker-go

$ cd docker-go

$ go mod init dockergo
Go

Golang 如何应用Docker化

步骤2: 将以下内容复制到新文件main.go中。

$ touch main.go
Go
package main
  
// 导入 http 和 mux 包
import (
    "encoding/json"
    "log"
    "net/http"
    "github.com/gorilla/mux"
)
  
func main() 
{
    // 创建一个新的路由器实例
    router := mux.NewRouter()
      
    // 创建一个新的控制器以处理“/”端点的响应
    router.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) 
    {
          
        response := map[string]string{
            "response": "Dockerizing Go Application",
    }
          
    // 设置响应
    json.NewEncoder(rw).Encode(response)
})
      
// 在控制台上输出日志
log.Println("⚡️[bootup]: Server is running at port: 5000")
      
      
http.ListenAndServe(":5000", router)
// 在端口5000上启动服务器
} 
Go

步骤3: 您可以通过运行以下命令启动应用程序。

$ go run main.go
Go

Golang 如何应用Docker化

项目结构: 此时的项目结构如下所示。

Golang 如何应用Docker化

用于开发的Dockerfile: 为我们的React项目的开发阶段创建一个Dockerfile。让我们将其命名为Dockerfile.dev。

$ touch Dockerfile.dev
Go

Golang 如何应用Docker化

步骤4: 将以下命令粘贴到新创建的文件中。

# Latest golang image on apline linux
FROM golang:1.17-alpine

# 工作目录
WORKDIR /docker-go

# 安装依赖项
COPY go.mod go.sum ./
RUN go mod download

# 复制所有文件
COPY . .

# 启动我们的应用程序
CMD ["go", "run", "main.go"]

# 暴露服务器端口
EXPOSE 5000
Go

步骤5: 现在,使用docker build命令创建一个docker镜像。

$ docker build -f Dockerfile.dev -t [name:tag] .
Go

这里,

  • -f: docker文件的路径
  • -t: 图像的名称和标记
  • **.:

构建过程完成后,您将收到新镜像的ID和标签。

Golang 如何应用Docker化

步骤6: 通过运行以下命令创建一个docker容器。

$ docker run -d -it –-rm -p [host_port]:[container_port] --name [container_name] [image_id/image_tag]
Go

Golang 如何应用Docker化

这里,

  • -d: 后台运行容器并打印容器ID
  • -it: 创建交互式容器
  • -p: 映射主机端口到容器端口
  • –name: 为容器指定名称
  • –rm: 当容器退出时删除容器。

步骤7: 运行以下命令以验证容器是否已成功创建

$ docker container ps
Go

Golang 如何应用Docker化

步骤8: 打开http://localhost:5001/ 以验证构建过程。

Golang 如何应用Docker化

生产Dockerfile: 观察Docker映像,您将看到我们的简单go应用程序占用了一半的存储空间。因此,我们将减小图像的大小以进行生产部署。

$ docker images
Go

Golang 如何应用Docker化

步骤9: 下一步是创建生产模式的Dockerfile。

$ touch Dockerfile
Go

Golang 如何应用Docker化

# 最新版本的alpine linux的golang镜像
FROM golang:1.17 as builder

# 环境变量
ENV GOOS linux
ENV CGO_ENABLED 0

# 工作目录
WORKDIR /docker-go

# 安装依赖项
COPY go.mod go.sum ./
RUN go mod download

# 复制所有文件
COPY . .

# 构建应用程序
RUN go build -o docker-go

# 获取最新的nginx镜像
FROM alpine:3.16 as production

# 证书
RUN apk add --no-cache ca-certificates

# 从builder复制已构建的资源
COPY --from=builder docker-go .

# 启动我们的应用程序
CMD ./docker-go

# 暴露服务器端口
EXPOSE 5000
Go

步骤10: 使用更新后的Dockerfile构建镜像并创建容器。

$ docker build -t [name:tag] .
Go

Golang 如何应用Docker化

Golang 如何应用Docker化

$ docker run -d -it -–rm -p [host_port]:[container_port] –name [container_name] [image_id/image_tag]
Go

Golang 如何应用Docker化

步骤11: 应用程序的大小现在已经减小到13MB。

$ docker images
Go

Golang 如何应用Docker化

步骤12: 打开http://localhost:5002/ 以查看docker化的golang应用程序。

Golang 如何应用Docker化

项目结构: 现在,项目的结构应该如下所示。

Golang 如何应用Docker化

注意: 如果您在按照上述步骤时遇到困难,请参考本教程中使用的Dockerfile。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册