golang 框架_Go Web 框架 Gin 实践9—将Golang应用部署到Docker

2023-11-15

Go语言中文网,致力于每日分享编码知识,欢迎关注我,每天一起进步!

项目地址:https://github.com/EDDYCJY/go-gin-example

注:

  • 开始前你需要安装好 docker,配好镜像源
  • 本章节源码在 f-20180324-docker 分支上
  • 从本章节开始 项目目录都以 go-gin-example 为基准(请配合自己本地项目灵活变动)

介绍

在这里简单介绍下Docker,建议深入学习

Docker 是一个开源的轻量级容器技术,让开发者可以打包他们的应用以及应用运行的上下文环境到一个可移植的镜像中,然后发布到任何支持Docker的系统上运行。 通过容器技术,在几乎没有性能开销的情况下,Docker 为应用提供了一个隔离运行环境

  • 简化配置
  • 代码流水线管理
  • 提高开发效率
  • 隔离应用
  • 快速、持续部署

接下来我们正式开始对项目进行 docker 的所需处理和编写,每一个大标题为步骤大纲

Golang

一、编写Dockerfile

在 go-gin-example 项目根目录创建 Dockerfile 文件,写入内容

FROM golang:latestWORKDIR $GOPATH/src/github.com/EDDYCJY/go-gin-exampleCOPY . $GOPATH/src/github.com/EDDYCJY/go-gin-exampleRUN go build .EXPOSE 8000ENTRYPOINT ["./go-gin-example"]

作用

golang:latest 镜像为基础镜像,将工作目录设置为 $GOPATH/src/go-gin-example,并将当前上下文目录的内容复制到 $GOPATH/src/go-gin-example 中

在进行 go build 编译完毕后,将容器启动程序设置为 ./go-gin-example,也就是我们所编译的可执行文件

注意 go-gin-example 在 docker 容器里编译,并没有在宿主机现场编译

说明

Dockerfile 文件是用于定义 Docker 镜像生成流程的配置文件,文件内容是一条条指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建;这些指令应用于基础镜像并最终创建一个新的镜像

你可以认为用于快速创建自定义的 Docker 镜像

1、 FROM

指定基础镜像(必须有的指令,并且必须是第一条指令)

2、 WORKDIR

格式为 WORKDIR

使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如果目录不存在,WORKDIR 会帮你建立目录

3、COPY

格式:

COPY ... COPY ["
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang 框架_Go Web 框架 Gin 实践9—将Golang应用部署到Docker 的相关文章

  • Java多线程下 ThreadLocal 的应用实例

    ThreadLocal很容易让人望文生义 想当然地认为是一个 本地线程 其实 ThreadLocal并不是一个 Thread 而是 Thread 的局部变量 也许把它命名为 ThreadLocalVariable更容易让人理解一些 当使用
  • jQuery Ajax 初始化方法

    ajaxSetup headers Authorization auth token cache false 禁用缓存 dataType json contentType application json contentType appli
  • 《深入理解java虚拟机》笔记

    深入理解java虚拟机 走进java java不仅仅是一门编程语言 还是一个由一系列计算机软件和规范形成的技术体系 她有以下优点 结构严谨 面向对象 摆脱硬件平台的限制 实现了一次编写 到处运行 提供了一个相对安全的内存管理和访问机制 有一
  • 面向文本和视觉线索联合推断的多模态上下文推理方法

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 报告题目 面向文本和视觉线索联合推断的多模态上下文推理方法 内容简介 联合文本和视觉线索条件推理任务是一项复杂多模态推理任务 其中 文本线索提供与视觉内容互补的先验假设或者外部知
  • 学习笔记-创建赫夫曼树

    赫夫曼树 给定 n 个权值作为 n 个叶子结点 构造一棵二叉树 若该树的带权路径长度 wpl 达到最小 称这样的二叉树为最优二叉树 也称为哈夫曼树 Huffman Tree 还有的书翻译为霍夫曼树 赫夫曼树是带权路径长度最短的树 权值较大的
  • 学会项目成本管理计算,PMP计算题就是送分题

    学会项目成本管理计算 PMP计算题就是送分题 PMP中的计算主要在 lt 项目成本管理 gt 的控制成本部分 服务于挣值管理 EVM Earned Value Management 挣值分析 EVA Earned Value Analysi
  • 【知识图谱】基本概念&数据&综合应用&具体使用

    知识图谱 基本概念 数据 综合应用 具体使用 1 基本概念 1 1知识图谱组成 1 2 应用 1 2 1 应用一 医疗领域方向检索 1 2 2 应用二 金融领域反欺诈 金融知识图谱 1 2 3 推荐系统 2 数据 2 1 文本数据 2 2
  • vtk.js+react 实现ArrowSource 平移,缩放,旋转

    vtk js react 实现ArrowSource 平移 缩放 旋转 MatrixBuilder 矩阵构造器 ArrowSource 箭头 实现代码 MatrixBuilder 矩阵构造器 实现方法主要使用到的APIMatrixBuild
  • 扩散模型实战(三):扩散模型的应用

    推荐阅读列表 扩散模型实战 一 基本原理介绍 扩散模型实战 二 扩散模型的发展 扩散只是一种思想 扩散模型也并非固定的深度网络结构 除此之外 如果将扩散的思想融入其他领域 扩散模型同样可以发挥重要作用 在实际应用中 扩散模型最常见 最成熟的
  • 云存储服务器的安装文件,云存储服务器的安装文件

    云存储服务器的安装文件 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ exe 在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ
  • 【三维重建】Ubuntu18.04安装COLMAP

    Ubuntu18 04安装COLMAP 文章目录 Ubuntu18 04安装COLMAP 前言 安装COLMAP 安装CUDA cuDNN 安装依赖项 安装Ceres优化库 安装glog 可选 配置并编译COLMAP 运行COLMAP 总结
  • 数据结构-线性表之堆栈

    什么是栈 是一种数据结构 能够实现后进先出的一种业务场景 即栈中的元素被处理时 按后进先出的顺序进行 所以栈又叫做后进先出表 LIFO 例子 生活中的叠放在厨房桌子上的碗就是一种栈结构 放的时候只能把碗放在最上面 取的时候只能从最上面开始取
  • python+Visual studio code配置Selenium环境

    python Visual studio code配置Selenium环境 使用pip命令安装selenium Visual studio code控制台中直接输入 python m pip install selenium 查看是否安装s
  • 如何使用OpenAI进行embedding句子后,输入新句子比较

    import openai import numpy as np from sklearn metrics pairwise import cosine similarity Set up OpenAI API credentials op
  • 权衡问题---学习了微服务各大常用组件的一点思考

    1 没有什么技术可以完全通用 只要深度使用一定需要从业务出发对技术进行权衡 从几个例子出发 1 ES的分片机制天生支持分布式 同时也带来了分布式了弊端 排序和算分问题 搜索的场景需要严格的定制化 通过对mapping的修改可以支持算分的调整
  • vtk9.2.6编译记录

    1 cmake gui打开 搜索qt相关 将默认选项改成yes 重新configure之后 会出现新的选项 比如Qt目录 确认没有问题之后 Generate生成sln解决方案后 用vs编译 2 配置CMAKE INSTALL PREFIX
  • Git 将已有项目上传新建仓库

    Git 将已有项目上传新建仓库 一 gitee或github创建空白仓库 记得保留下git链接 https gitee com huadeng863 git 二 在已有项目目录内删除已有git readme 如果有的话 将项目中的 git
  • buildroot 编译出错

    编译buildroot的时候出现如下错误 Incorrect selection of kernel headers expected 4 1 x got 4 0 x package pkg generic mk 228 recipe fo
  • phpstudy 8.1下载安装和简单使用教程

    phpstudy下载 去官网下载PHPStudy 选择自己电脑对应的系统版本 在首页导航选择windows版 弹出下拉框点击phpStudy 客户端 进入下载界面 点击下载 接着选择64位 然后就开始下载了 PHPStudy安装 解压下载好

随机推荐

  • stm32---用外部中断实现红外接收器

    一 红外遥控的原理 红外遥控是一种无线 非接触控制技术 具有抗干扰能力强 信息传 输可靠 功耗低 成本低 易实现等显著优点 被诸多电子设备特别是 家用电器广泛采用 并越来越多的应用到计算机系统中 红外遥控通信系统一般由红外发射装置和红外接收
  • 无意中发现的方法:一招让你的 IntelliJ Idea 飞起来

    一 引言 最近工作中使用到了 IntelliJ Idea 说实在的 不太熟悉这个 IDE 不知道为什么 对比 Eclipse 和 IntelliJ Idea 在我的电脑上 竟然是 IntelliJ Idea 比 Eclipse 运行的更卡一
  • python炫酷gui界面_如何炫酷的使用Python

    Python很酷 真的很酷 但是 我们中的很多人都是从不同的编程语言开始的 尽管我们确实很容易地掌握了Python 但是我们仍然不擅长以pythonic的方式做事 本文介绍了我几年来学到的一些技巧和相同的实际示例 希望你喜欢它 1 有用的键
  • android aidl出现无法import

    当采用eclipse 写aidl时出现couldn t find import for class 原因是你import的包没有在framework aidl里parcelable过 所以解决办法很简单 找到对应api level的fram
  • 软件开发十本书

    几年前 总结了 软件测试十本书 对从事软件质量验证和确认工作的基础知识进行简介 软件花钱最多 耗时最长 投入人力和精力最大的 是在开发过程 根据个人经验 推荐软件开发相关的十本书 供入门和进阶参考 坐等拍砖员 1 代码大全 软件开发世界的
  • Java 多线程同步:volatile 关键字

    多线程基础知识 Java 内存模型 Java 中的堆内存用来存储对象的实例 堆内存是被所有线程共享的运行时内存区域 因此 它存在可见性的问题 而局部变量 方法定义的参数则不会在线程之间共享 它们不会有内存可见性问题 也不受内存模型的影响 J
  • MySQL Cluster

    MySQL Cluster数据分布 分区 两阶段提交协议及事务资源 2013 12 11 15 00 28 分类 MySQL FROM http www zrwm com p 3210 Posted on 2013 年 3 月 8 日 by
  • https网络编程——openssl安装(两个软链接库libssl、libcrypto)、openssl命令行方式实现CA和证书、介绍SSH

    参考 openssl安装方式 Ubuntu下 地址 https qingmu blog csdn net article details 115454254 spm 1001 2014 3001 5502 目录 官方网站 1 解压 2 编译
  • stable diffusion webui安装与使用(官方超简单教程)

    预备依赖 下载miniconda 教程参考 https blog csdn net weixin 43828245 article details 124768518 安装git 参考教程 https blog csdn net weixi
  • js 实现多重罗盘转动

    引子 这几天一直在忙一个可滑动的转盘的demo 网上也有类似的例子 但是根据老板的需求来改他们的代码 还不如重新写个完全符合需求的插件 想法很美好 但是新手上路 效果链接文末 需求 image 这个demo给的非常简单 能转动的地方有三处
  • 方差、标准差、均方差、均方误差区别总结

    转载 http blog csdn net Leyvi Hsing article details 54022612 一 百度百科上方差是这样定义的 variance 是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量 概率论中方差
  • Flutter 重写原生App -- 02 基础知识 一路踩坑

    Pubspec Assist 插件 快速添加 pubspec yaml 的依赖 device info 0 4 0 3 可查看当前 链接的设备是 Ios Android 并且获得设备信息 Dart 语法 https dart dev gui
  • SVN配置

    1 SVN插件下载地址 http subclipse tigris org update 1 4 x http subclipse tigris org servlets ProjectDocumentList expandFolder 2
  • 【特征工程】特征选择与特征学习

    特征选择与特征学习 在机器学习的具体实践任务中 选择一组具有代表性的特征用于构建模型是非常重要的问题 特征选择通常选择与类别相关性强 且特征彼此间相关性弱的特征子集 具体特征选择算法通过定义合适的子集评价函数来体现 在现实世界中 数据通常是
  • Python实现ACO蚁群优化算法优化LightGBM分类模型(LGBMClassifier算法)项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 视频讲解 如需数据 代码 文档 视频讲解可以直接到文章最后获取 1 项目背景 蚁群优化算法 Ant Colony Optimization ACO 是一种源于大自然生物世界的新的仿生进化
  • 背景差分法《python图像处理篇》

    引言 背景差分常用于运动目标检测 是一种动态检测的方法 即观察两帧图像间的差距 哪个物体存在相对运动 其基本原理就是将两幅图像做减法 只不过这里的两幅图像分为输入图像和背景图像 此方法对于动态常见特别敏感 例如监控环境下的下雪 刮风时的树叶
  • ❤ jeecgboot 使用

    jeecgboot 使用 JDictSelectTag 字典下拉去掉请选择 JDictSelectTag
  • 最近大火的ChatGPT和RPA机器人相结合会带来什么前景?

    ChatGPT是由人工智能技术驱动的自然语言处理工具 它可以通过理解和学习人类语言进行对话 并根据聊天的上下文进行互动 真正像人类一样进行聊天和交流 甚至完成撰写电子邮件 视频脚本 文案 翻译 代码 写论文等任务 ChatGPT和RPA都是
  • line-height行高的解析

  • golang 框架_Go Web 框架 Gin 实践9—将Golang应用部署到Docker

    Go语言中文网 致力于每日分享编码知识 欢迎关注我 每天一起进步 项目地址 https github com EDDYCJY go gin example 注 开始前你需要安装好 docker 配好镜像源 本章节源码在 f 20180324