docker部署go简单web项目(无mysql等附加功能)

news/2025/2/26 18:10:53

首先准备好go语言代码

代码表示当访问主机上8080端口下的/hello路径时,会返回hello,world。

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

type hh struct {
	S string
}

func main() {
	router := gin.Default()
	router.GET("/hello", func(c *gin.Context) {
		c.JSON(200, hh{S: "hello world!"})
	})

	err := router.Run(":8080")
	if err != nil {
		fmt.Println(err)
		return
	}

}

准备Dockerfile文件

FROM golang:1.23

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64 \
    GOPROXY=https://goproxy.io,direct

# 移动到工作目录:/app/demo3
WORKDIR /app/demo3

# 先复制 go.mod 和 go.sum 文件
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download

# 将剩余代码复制到容器中
COPY . .

# 编译 Go 代码,指定输出文件名为 main
RUN go build -o main main.go

# 声明服务端口
EXPOSE 8080

# 启动容器时运行的命令
ENTRYPOINT ["./main"]

注意第一行基础镜像的版本要和你项目所用的go版本相同在这里插入图片描述
在这里插入图片描述

将以下文件放入宿主机中

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

构建镜像

首先在宿主机上进入Dockerfile文件所在的目录,然后输入以下命令开始构建镜像 。 注意 -t 后跟的是镜像名,是自定义的,可以不和我一样。

docker_build_t_demo3image__78">docker build -t demo3image .

输入完成后等待构建成功即可,构建不会很快,我这里等了大概有十多分钟。
在这里插入图片描述

创建并运行容器

镜像前面创建好了,我们现在要让镜像在容器里跑起来,输入下方指令即可。–name 后的demo3表示容器名称,可以自定义。

docker run -d --name demo3 -p 8080:8080 dem03image

在这里插入图片描述

添加安全组

我用的服务器是阿里云的,以下是配置阿里云服务器安全组的步骤
在这里插入图片描述

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

验收结果

在这里插入图片描述


http://www.niftyadmin.cn/n/5869040.html

相关文章

简单理解Oracle中的latch

可以用一个小卖部抢购的例子来理解 Oracle 数据库中的 Latch: 1、 什么是 Latch? 打个比方,假设数据库的某个内存区域(比如缓存的数据块)是小卖部货架上的最后一包辣条,Latch 就像是货架前的一个狭窄通道&a…

【docker】namespace底层机制

Linux 的 Namespace 机制是实现容器化(如 Docker、LXC 等)的核心技术之一,它通过隔离系统资源(如进程、网络、文件系统等)为进程提供独立的运行环境。其底层机制涉及内核数据结构、系统调用和进程管理。以下是其核心实…

angular新闻列表分页

说明:使用angular技术,material控件,ngfor循环,img网络图片展示,分页组件 效果图: step1: C:\Users\Administrator\WebstormProjects\untitled4\src\app\home\home.component.ts import { Component, V…

解决安卓recyclerView滚到底部不彻底问题

问题分析: 传统recycleview滚到到底部方式scrollToPosition(lastpositon),只能定位到最后一条数据的顶部。由于数据过长,无法滚动到最底部。 问了下deepseek,给了个方案: private void recyclerViewScrollToBottom()…

Qt/C++项目积累:3.日志管理系统 - 3.1 项目介绍

在实际工程项目中,日志系统无疑是比较重要地分析问题的手段,常用的一般是将其写入到日志文件中,或者写入数据库文件,进行分析,而工程人员或者开发人员需要实时查看日志,可能不太方便,于是就需要…

DeepSeek 助力 Vue 开发:打造丝滑的分割线(Divider)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

《Vue全栈图形绘制系统开发实战》—— 第一章础架构与核心模块实现

第一章 基础架构与核心模块实现 #mermaid-svg-am3qjLePI9PBjAJy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-am3qjLePI9PBjAJy .error-icon{fill:#552222;}#mermaid-svg-am3qjLePI9PBjAJy .error-text{fill:#552…

浅析DeepSeek在商业银行的应用

在金融科技蓬勃发展的时代背景下,人工智能技术正重塑商业银行的运营模式与服务生态。DeepSeek作为一款极具潜力的大语言模型,可凭借其独特的优势广泛应用于商业银行多个业务领域,为银行数字化转型注入新动力。然而,与所有新兴技术类似,DeepSeek在应用过程中也面临诸多挑战…