• Docker部署GoLang程序,保姆级教程!


    一、简介

    今天介绍一下 GoLang 的 restful 服务,如何部署到 docker 容器内。本篇不详细介绍 GoLang 编程方面的知识,重点介绍已经写好的 GoLang 程序,如何部署到 docker。


    二、前置条件

    • docker
      假设你有了一台 Linux 服务器(虚拟机、物理机、本机都行),已经部署且会了 docker 相关技能
    • golang
      假设你已经,准备好了 GoLang 开发环境,且有了一定的 GoLang 技能

    三、准备程序

    3.1 代码

    如下 main.go ,准备了一个 get 请求的,可访问的 restful 服务。如下:

    package main
    
    import (
    	"github.com/gin-gonic/gin"
    )
    
    func main() {
    	r := gin.Default()
    
    	r.GET("/hello", func(c *gin.Context) {
    		c.JSON(200, gin.H{
    			"message": "Hello world!",
    		})
    	})
    
    	r.Run(":8080")
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    3.2 启动程序

    控制台输入 go run . 启动准备的 api ,然后浏览器访问一下 /hello 验证一下是正常的
    在这里插入图片描述
    访问 http://localhost:8080/hello
    在这里插入图片描述

    四、打包

    输入下面命令,打包 GoLang 程序,打包完成后会产生一个 二进制文件,我这里的是 golang_gin ,实际会文件你的项目名称而不一样

    SET CGO_ENABLED=0
    SET GOOS=linux
    SET GOARCH=amd64
    go build
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述

    SET CGO_ENABLED=0 、SET GOOS=linux 、SET GOARCH=amd64 :这个涉及到的是交叉编译,有兴趣的可以网上深入了解一下


    五、Dockerfile

    接着,准备构建镜像的 Dockerfile 文件。如下

    FROM alpine:3.12
    
    RUN mkdir "/app"
    WORKDIR "/app"
    
    COPY main /app/app
    RUN chmod +x /app/app
    ENTRYPOINT ["./app"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    RUN chmod +x /app/app :赋予文件权限,否则启动容器,会报权限错误。这个不是必须的,得看自己的 docker 权限配置。如下:
    在这里插入图片描述


    六、构建镜像

    接着,连接上事先准备好的 Linux 服务器(192.168.88.146),然后将 golang_gin、Dockerfile 文件上次到自己指定的应用程序目录,执行下面命令打包成镜像。如下:

    docker build -t golang-hello-world:v1 .
    
    • 1

    在这里插入图片描述
    docker images 可以看下,上一步构建的镜像
    在这里插入图片描述


    七、启动容器

    镜像准备好以后,执行下面命令,将 golang-hello-world:v1 镜像,启动一个容器。如下:

    docker run -p 8082:8080 -d golang-hello-world:v1
    
    • 1

    在这里插入图片描述

    -p 8082:8080 : 端口映射,宿主机端口:容器内端口
    -d:后台运行


    八、访问 API

    容器启动成功后,访问 http://192.168.88.146:8082/hello,可以看到成功。如下:
    在这里插入图片描述

    九、容器日志

    当然,也可以验证一下是否有请求到,我们启动的容器。执行下面命令,可以看到容器日志,这个可以理解为控制台类似。如下

    docker logs -f  2212a8c5232b1e3dfe285900620f4c0200fa21efdccb637a0dc9fbe6092a0301
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    洛谷 P2763 试题库问题(最大流 EK算法)
    DataGrip 连接 Centos MySql失败
    接收请求地址下载并输出文件流实现
    【路径规划-TSP问题】基于粒子群结合蚁群算法求解旅行商问题附matlab代码
    【电工基础】电路的基本概念与基本定律
    PostgreSQL 认证方式
    2021年Javascript最常见的面试题以及答案
    35岁程序员被裁员,这半年他的故事
    手把手带你学SQL—牛客网SQL 统计复旦用户8月练题情况
    前端进击笔记第十三节 为什么小程序特立独行?
  • 原文地址:https://blog.csdn.net/weixin_46785144/article/details/124084046