docker部署go gin框架 Linux环境

目录

文章目的是什么

环境介绍

Linux 环境下 docker 部署 go gin 详细步骤

部署 gin


文章目的是什么

假设我们学习了 go 语言,在 Linux 上安装了 go 相关的程序,也能直接运行,使用以下命令:

go run main.go

假如代码是这样的:

package mainimport "fmt"func main() {fmt.Println("Hello World")
}

就会输出:

Hello World

但现在我们想要使用 docker 来部署,可能就有一些不同,复杂度肯定会比上面多一些。

所以本文的目的是:

使用 docker 部署 go,且可以运行 gin 框架的基础代码

环境介绍

我们开发时,基本上都是在自己电脑上,大多数应该都是 Windows,而我们项目发布上线时,一般又是使用的是 Linux,本文讲解的是 Linux 环境。

Linux:LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.9.2009 (Core)
Release:	7.9.2009
Codename:	Core

Linux 环境下 docker 部署 go gin 详细步骤

docker安装golang 我在另一个文章中有详细的讲解,因为内容比较多,建议看一下另一篇文章

docker安装golang_docker golang-CSDN博客文章浏览阅读880次。最近玩 docker 比较多,试试安装 golang。第一步:先看一下镜像;第二步:下载镜像;第三步:进一步查看 golang 是不是我们指定安装的版本;第四步:运行容器_docker golanghttps://blog.csdn.net/longfeng995/article/details/131006514?spm=1001.2014.3001.5501上面这篇文章,正好是 Linux 环境部署go,并且成功运行了一段简单的代码,所以我们这里就直接跳过 docker 部署 go 的过程,而直接进入部署 gin

部署 gin

现在我们 Linux 环境中,创建我们的项目 demo 目录:

目录地址为:

/docker/go/project

在这个目录下,有一个项目:demo

接着再查看我们的容器:

docker ps

能看到,有一个容器正在运行,然后我们复制这个 容器ID

我们进入容器:

docker exec -it 容器ID bash

能看到,容器内,也跟我们 Linux 环境下的项目是一样的。

我们进入 demo 目录

cd demo

当前目录是没有任何文件的

第一步是要先初始化 mod,运行:

go mod init demo

能看到创建成功,我们可以切回 Linux下看看

因为挂载的关系,在容器里创建了文件、目录,在 Linux 环境里,也会创建,反之也是一样的。

接着我们再次进入容器,找到 demo 目录,下载并安装 gin

go get -u github.com/gin-gonic/gin

执行以上操作时,可能会出现错误,提示:"go: zip: not a valid zip file" 之类的错误。

我这边整理是说代理的问题,我上面使用的是阿里云代理,也很奇怪,有时候可以,有时候却会出现问题。

所以我切换成 七牛云代理。

go env -w GOPROXY=https://goproxy.cn,direct

然后我们再重新 下载安装gin 就可以了。

相关的 gin 包,我们就下载好了,一般我们敲代码都不会在容器内,所以我们需要切回 Linux 环境

我们可以先看一下,Linux 环境下,go.mod 文件的内容

然后我们创建 main.go 文件

进入 main.go 文件,粘贴以下代码

package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})_ = r.Run() // listen and serve on 0.0.0.0:8080
}

然后我们进入 docker 容器,运行 go

go run main.go

可以看到,程序成功执行,端口默认的是 8080

当请求后,我们可以进入容器,查看请求记录

以上,就完成了在 Linux 环境下使用 docker 部署 go gin 并运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法中的最优化方法课程复习

算法中的最优化方法课程复习 单模函数、拟凸函数、凸函数证明证明一个线性函数与一个凸函数的和也是凸的 梯度线性规划标准形式以及如何标准化标准形式常见标准化方法线性化技巧 单纯形法二次规划无约束优化Nelder-Mead线搜索FR共轭梯度法例题 优化算法的选择、停止准则算法选择…

electron命令下载失败,手动安装教程

现象:pnpm i electron, 一直卡在提示错误node install.js 一 、下载需要的electron版本 地址 二、下载完毕,解压压缩包, 进入项目的node_modules/electron文件夹,创建dist文件夹,将下载的zip包里的文件复制到dist…

Docker笔记:docker compose部署项目, 常用命令与负载均衡

docker compose的作用 docker-compose是docker官方的一个开源项目可以实现对docker容器集群的快速编排docker-compose 通过一个配置文件来管理多个Docker容器在配置文件中,所有的容器通过 services来定义然后使用docker-compose脚本来启动,停止和重启容…

oracle 查看统计信息

统计信息在oracle中是非常重要的模块,就好似打仗时的侦察兵,提前了解敌情,来帮助CBO更好地生成执行计划。下面是一些常用地查看统计信息的语句,希望能帮助到大家。 表统计信息查看 select t.owner, t.table_name, t.num_rows, t…

考研真题c语言

【2016年山西大学考研真题】输入10个学生三门课的成绩,用函数实现:找出最高的分数所对应的学号和成绩。 1. 定义一个结构体 Student 来表示每个学生,包括学号和三门课的成绩。 c typedef struct { int studentID; int score1; i…

链路追踪详解(四):分布式链路追踪的事实标准 OpenTelemetry 概述

目录 OpenTelemetry 是什么? OpenTelemetry 的起源和目标 OpenTelemetry 主要特点和功能 OpenTelemetry 的核心组件 OpenTelemetry 的工作原理 OpenTelemetry 的特点 OpenTelemetry 的应用场景 小结 OpenTelemetry 是什么? OpenTelemetry 是一个…

DevEco Studio 鸿蒙(HarmonyOS)项目结构

DevEco Studio 鸿蒙(HarmonyOS)项目结构 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、项目结构 创建简单的Hello World移动应用项目结构如下图 由上到下说明各个文件夹的作用 .hvigor:存…

阅读笔记——《UTOPIA: Automatic Generation of Fuzz Driverusing Unit Tests》

【参考文献】Jeong B, Jang J, Yi H, et al. UTOPIA: automatic generation of fuzz driver using unit tests[C]//2023 IEEE Symposium on Security and Privacy (SP). IEEE, 2023: 2676-2692.【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。…

智慧储能数字孪生:能源未来的智慧引擎

随着社会对清洁能源的需求不断增加,智能储能技术成为能源转型的关键驱动力。在这一领域中,数字孪生技术的应用为智慧储能带来了全新的可能性。数字孪生是指数字化、实时、可视化的模拟系统,通过复制现实世界中的对象或过程,为智能…

SpeechGPT领航:创新的130亿参数跨模态AI模型

引言 在人工智能的最新进展中,SpeechGPT以其130亿参数的规模和跨模态会话能力引起了业界的广泛关注。这一由复旦大学邱锡鹏教授团队开发的模型,不仅在技术层面上取得了重大突破,也为多模态人工智能(AI)的未来发展指明…

力扣120. 三角形最小路径和

动态规划 思路: 假设 dp[i][j] 为最小路径到第 i 层的第 j 个元素的值;则 dp[i][j] min(dp[i - 1][j - 1], dp[i - 1][j]) tr[i][j];当 j 0 时,dp[i][j] dp[i - 1][0] tr[i][0];(可以认为 j - 1 不能…

目标检测YOLO实战应用案例100讲-基于深度学习的跌倒检测(续)

目录 3.3 基于YOLOv7算法的损失函数优化 3.3.1 IoU损失策略 3.3.2 GIoU回归策略 3.3.3

Selenium库自动化测试入门

前言 为什么要学selenium??前面已经学了requests库我们会发现 对于绝大多数动态渲染的网页来说,用requests进行爬虫比较繁琐。 所以我们还是要学习一下selenium库,以帮助我们更高效的爬取网页。 环境: pychar 202…

Linux--绝对路径和相对路径

1. 绝对路径 从根目录算起的路径叫做绝对路径 例如: /home/python/Desktop/usr/bin 2. 相对路径 从当前目录算起的路径叫做相对路径 例如: ./test/hello../static/images 3. 绝对路径和相对路径的使用 使用绝对路径切换到桌面 cd /home/python/Desktop 在下载目录以相…

机器学习算法新手入门指南

AI算法的种类在人工智能领域中非常丰富,而且多样化,AI算法利用数学、统计学和计算机科学等领域的原理和方法,通过模拟人类智能和学习能力来解决各种复杂的问题。 在监督学习领域,我们有经典的线性回归和逻辑回归算法,…

光栅化渲染:可见性问题和深度缓冲区算法

在前面第二章中,我们了解到,在投影点(屏幕空间中的点)的第三个坐标中,我们存储原始顶点 z 坐标(相机空间中点的 z 坐标): 当一个像素与多个三角形重叠时,查找三角形表面上…

Java 多线程之线程安全集合

文章目录 一、概述二、List 接口线程安全实现类2.1 普通 List 变线程安全 List2.2 Vector2.3 CopyOnWriteArrayList 三、Map 接口线程安全实现类3.1 普通 Map 变线程安全 Map3.2 Hashtable3.3 ConcurrentHashMap3.4 ConcurrentSkipListMap 有序/跳表 四、Set 接口线程安全实现类…

J2EE(架构师考试复习资料)

J2EE 是针对 Web Service、业务对象、数据访问和消息报传送的一组规范。这组应用编程接口确定了 Web 应用与驻留它们的服务器之间的通信方式。J2EE 注重两件事,一是建立标准,使 Web 应用的部署与服务器无关;二是使服务器能控制构件的生命周期…

前端传的true后端变false?

前端传来true,后端变成false? 背景:原因分析:解决: 背景: 最近在搞项目的时候遇到了神奇的东西,后端定了了boolean类型的变量,前端在传值的时候传的是true,但是到了后端…

自定义Mybatis LanguageDriver性能优化

场景:高并发情况下mybatis 动态sql 解析 锁问题优化 优化前 并发测试 XMLLanguageDriver 类 的 createSqlSource 方法有锁 而且 每次执行时都会走该方法 优化前 : 线程有Block 优化后的 LanguageDriver public class CustomXMLLanguageDriver im…