docker部署gin项目

news2024/11/19 17:38:12

以如下这个简单的项目为例
在这里插入图片描述
创建Dockerfile文件

#指定构建镜像的基础镜像
FROM golang:1.18-alpine
#开发者
MAINTAINER who
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

#设置工作目录,后面的RUN,COPY等都基于在这个目录下工作
WORKDIR /goApp

# 复制项目文件到工作目录
COPY . .

# 编译应用程序成二进制文件app
RUN go build -o app

#容器暴露的端口
EXPOSE 8080

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

然后通过以下命令构建镜像

docker build -t goWeb:1.0 . 

由于go语言是编译型的语言,只需要将项目编译成一个二进制文件即可运行,不需要还基于golang的环境
所以可以采用分阶段构建镜像,减小打包后的文件大小

#指定构建镜像的基础镜像
FROM golang:1.18-alpine AS builder
#开发者
MAINTAINER who
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

#设置工作目录,后面的RUN,COPY等都基于在这个目录下工作
WORKDIR /goApp

# 复制项目文件到工作目录
COPY . .

# 编译应用程序成二进制文件app
RUN go build -o app


###################
# 接下来创建一个小镜像
###################
FROM scratch

WORKDIR /goApp

# 从第一阶段复制二进制文件到当前阶段
COPY --from=builder /goApp/app .

#容器暴露的端口
EXPOSE 8080

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

然后通过以下命令构建镜像

docker build -t goWeb:1.1 . 

结果显示
在这里插入图片描述
在这里插入图片描述

如果我这个项目构建的容器需要关联其他如mysql容器该如何做?

需要将项目中关于mysql的主机(127.0.0.1)名改为容器名字。

构建镜像后,通过–link的方式与需要关联的容器关联起来,比如

docker run --link=mysql1:mysql1 -p 8080:8080 goweb:1.1

在windows上构建的镜像如何发布到服务器上运行?

可以将镜像发布到云仓库,然后在服务器上又将仓库中的镜像拉取下来运行

参考文献:
1 https://www.bilibili.com/video/BV1tX4y1F7Xj/?spm_id_from=333.337.search-card.all.click&vd_source=b65afe73c2248cf649cdaa19490e01ed
2 https://www.liwenzhou.com/posts/Go/deploy-in-docker/

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

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

相关文章

集成运算放大器的线性应用(模电速成)

目录 1、运算电路基本认识 2、反向比例、同相比例运算电路 3、电压跟随器(同相比例的特例) 4、差分比例运算电路(减法运算电路) 5、积分、微分运算电路 1、运算电路基本认识 (集成运放工作在线性区) 两…

4.LVS负载均衡集群

文章目录 LVS负载均衡集群集群介绍集群类型LVS工作模式LVS虚拟服务器介绍LVS的NAT模式部署设置NFS服务器设置节点服务器配置负载调度器 LVS负载均衡集群 集群介绍 群集的含义 Cluster,集群、群集由多台主机构成,但对外只表现为一个整体,只提…

卷积神经网络之父的强人工智能路线图:自监督,推理,规划

导读 2023 年 6 月 9 日,智源大会第一天。在这场众星云集的盛会中。目前「深度学习三驾马车」中最活跃的 Yann LeCun 教授带来了重磅演讲「朝向能学习, 思考和计划的机器进发( Towards Machines that can Learn, Reason, and Plan&#xff09…

QtXlsxWriter make报错:[Makefile:45:sub-xlsx-make_first] 错误

新安装的银河麒麟系统(x64版),编译QtXlsxWriter库的时候报错: rootzhouyingge1104-GB01:/home/zhouyingge1104/Downloads/QtXlsxWriter-master# make cd src/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Make…

AD09 PCB拼板制作完整流程

1、新建PCB文件 画好PCB之后,先在原有工程文件下新建一个PCB文件(可以保存为XXX拼板),PCB大小根据拼板前大小以及拼板阵列确定(也可以在做好工艺边后再修改大小)。 2、放置PCB阵列 如上图,来…

《微服务实战》 第二十九章 分布式事务框架seata AT模式

前言 本章节介绍微服务分布式项目中,使用的事务框架seata。 官网:http://seata.io/zh-cn/ springcloud-nacos-seata:https://github.com/seata/seata-samples/tree/master/springcloud-nacos-seata 1、概念 Seata 是一款开源的分布式事务解…

线程堵塞(挂起)导致消息队列消息挤压

一、背景 A服务作为生产者,每天发送上百万的mq消息,每一个消息包含500个用户id数据。 B服务作为消费者,接受MQ消息并通过http调用第三方请求进行业务处理,消费组使用了rabbitmq 的多线程消费组,一个实例并发40个mq消…

四种Bootloader程序安全机制设计

正文 大家周末好,我是bug菌~ 不管是玩单片机还是嵌入式linux,基本上都会接触到bootloader,所以bootloader程序也是一个关键的组件,进行硬件初始化,应用程序的合法性、完成性检测、升级功能等等都与其息息相关。 像一些…

【ABAP】数据类型(二)「预定义数据类型」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言A…

【哈希的模拟实现】

文章目录 1 哈希概念2 哈希冲突2.1 直接定址法 (常用)2.2 除留余数法 (常用)2.3 平方取中法2.4 折叠法2.5 随机数法2.6 数学分析法 3 闭散列3.1 线性探测3.2 二次探测 4 开散列4.1 开散列概念4.2哈希桶的模拟实现4.3 开散列与闭散列的比较 1 哈希概念 顺序结构以及平衡树中&…

Science|改变微生物群落可以增强树木对气候变化的耐受性

改变微生物群落可以增强树木对气候变化的耐受性 Shifting microbial communities can enhance tree tolerance to changing climates Research Article,2023-5-25,Science, [IF 63.714] DOI:10.1126/science.adf202 第一作者&…

Java常用快捷键

在编写java代码时,要提升自己的编写代码的速度,光是靠鼠标来完成各种的操作是不行的,还会显得十分不成熟,所以这是就需要我们使用一定的快捷键,在键盘点击之间,完成代码的操作。接下来我就为大家介绍常用的…

7.2DIY可视化后台表格自定义列显示类型

后台表格自定义列显示类型 本教程均在第一节中项目启动下操作 后台表格自定义列显示类型前言一、图片格式内容显示:二. 效果展示: http://localhost:9999/#/hdp三:自定义列使用:1.添加字段:自定义列,取值自幻灯片title2. 设置自定义信息: 三.效果展示本文章原自bilibli作者视频…

6月6日复盘总结 11H10min-|23:15~23:25*

​​​​​​​ 7:20-8:20 背书翻译单词 【1h】 8:30-9:00 乐词 【30min】 9:00-10:00 TPO66 L1 精听 【1h】 10:00-10:30 TPO66 L1 错题分析 【30min】 10:30-11:30 L2 Fish Movement 精听 【1h】 11:40-12:40 午饭+水果🍑+玩手机…

【华为OD统一考试B卷 | 100分】经典屏保(C++ Java JavaScript Python)

题目描述 DVD机在视频输出时,为了保护电视显像管,在待机状态会显示“屏保动画”,如下图所示,DVD Logo在屏幕内来回运动,碰到边缘会反弹。 请根据如下要求,实现屏保Logo坐标的计算算法。 屏幕是一个800*600像素的矩形,规定屏幕的左上角点坐标原点,沿横边向右方向为X轴…

jeecg-boot权限篇

前言 本文档是对jeecg-boot官方文档的一个分析和补充,具体的可以同时互相参照来看,难免个人理解有出路,如有错误,还望补充和指正~ 文章目录 角色、用户、部门普通权限控制特殊定制化权限按钮控制文本输入禁用 列表控制…

碳中和城市建筑能源系统(2):网络篇(龙惟定)2022

碳中和城市建筑能源系统(2):网络篇 摘要 本文是碳中和城市建筑能源系统系列文章的第二篇,分别概要介绍了城市能源系统中的电网、热网和燃气网在碳中和背景下的新概念、新技术及新方法。强调未来的能源网以电网为主,三网融通,构成城区的能源互联网。综述了智能电网的灵活性、热…

我们不会很快有GPT-5;让 ChatGPT 帮我们总结 Hacker News

🦉 AI新闻 🚀 OpenAI联合创始人Sam Altman:我们不会很快有GPT-5 摘要:在2023北京智源大会的“AI安全与对齐”主题论坛上,OpenAI联合创始人Sam Altman表示,目前他们没有答案,不会很快有GPT-5&a…

OpenCV 项目开发实战--对图像种的斑点进行检测(Python、C++代码实现)

什么是斑点? Blob 是图像中一组连接的像素,它们共享一些共同的属性(例如,灰度值)。在上图中,暗连接区域是斑点,斑点检测旨在识别和标记这些区域。 文末附相关测试代码的下载链接 SimpleBlobDetector 示例 OpenCV 提供了一种基于不同特征检测和过滤斑点的便捷方法。让…

es相关的知识点

海量数据下如何提升es的操作性能 .filesystemcache os cache操作系统缓存 es中的数据,实际上写入磁盘,磁盘文件的操作系统,实际上会将数据写入到oscache中 es的搜索引擎严重依赖于底层的filesystemcache 如果filesystemcache的内存足够大,可以容纳所有的index segmentfile索引…