如何使用Docker快速部署go-web应用程序

简介

虽然大部分Go应用程序可以编译为一个单一的二进制文件。都是对于Web应用程序来说,可能还有自己的模板和配置文件。如果在一个项目中包含大量的文件,可能会因为文件的不同步而导致出错或造成更严重的错误。

本文将通过beego应用程序在docker中的快速部署,来介绍如何使用docker简化go-web应用程序的部署。通过该文章您可以了解如何使用Docker部署Go Web应用程序,以及Docker如何帮您改善开发工作流和部署过程。

目标

通过本文的学习,您将能:

  • 了解Docker如何帮您开发Go和部署应用程序
  • 知道如何为Go应用程序创建团队统一的Docker容器

创建一个go-web应用程序

本文主要是为了演示如何快速的部署一个go web应用程序到docker容器中。所以在技术选型了,使用beego go web框架进行演示说明。

为了快速的创建一个示例的应用程序,我们使用beego 的bee工具。(在本示例中,假设gopath在路径/app/go,那么我们示例项目的路径应该是/app/go/src/go-web-demo)通过如下命令

bee new go-web-demo

此时将会在我们的,$GOPATH/src下创建一个go-web-demo的项目。为了验证我们的项目是可以运行的,此时我们只需要执行如下命令

cd go-web-demo
bee run

此时,通过浏览器访问http://localhost:8080, 则会展示如下页面

当看到以上的页面,说明我们的程序运行正常。接下来我们开始制作beego 的Docker镜像

创建Dockerfile

最终生成的Dockerfile内容如下:

# 使用Go的官方映像作为基础映像。这个映像是Go 1.6预安装的。该映像的$GOPATH值已被设置为/go。所有安装在/go/src的程序包都能通过go命令访问。
FROM golang:1.6

# 安装beego程序包和bee工具。beego程序包将在应用程序内部使用,bee工具将用于在开发过程中实时重载代码。
RUN go get github.com/astaxie/beego && go get github.com/beego/bee

# 通过开发计算机上容器的8080端口暴露该应用程序。最后一行,
EXPOSE 8080

# 使用bee命令开始对我们的应用程序进行实时重载。
CMD ["bee", "run"]

构建镜像

创建好Docker文件之后,可运行下列命令创建映像:

docker build -t go-web-demo .

执行上述命令可创建一个名为go-web-demo的镜像。我们可以把这个镜像发布到镜像仓库供开发团队中所有的成员来使用,这样就可以保证开发环境的一致性。

要查看您系统中的映像列表,请运行下列命令:

docker images

执行该命令,可以看到如下的内容,请注意红框标记处为我们刚才构建好的镜像。

运行容器

准备好go-web-demo之后,可以使用下列命令启动一个容器:

docker run -it --name my-go-web-demo -p 8080:8080  -v /app/go/src/go-web-demo:/go/src/go-web-demo -w /go/src/go-web-demo go-web-demo

接下来,我们对执行的命令做一些简单的解释:

  • docker run命令可用于通过镜像运行容器
  • -it标记使用交互式模式启动该容器
  • --name my-go-web-demo 将容器命名为my-go-web-demo
  • -p 8080:8080将容器8080端口映射到主机8080端口上,最终我们可以通过主机的8080端口访问容器里的内容
  • -v /app/go/src/go-web-demo:/go/src/go-web-demo,使用volume将/app/go/src/go-web-demo从计算机映射至容器的/go/src/go-web-demo目录
  • -w /go/src/go-web-demo 设置容器的工作目录
  • go-web-demo 指定了容器使用的镜像名称

当容器启动以后,我们可以通过访问http://localhost:8080来验证容器是否运行正常。

总结

本文主要通过使用beego这个go web的开发框架来讲解如何使用构建镜像以及使用Docker容器。

时间: 2024-08-02 19:21:47

如何使用Docker快速部署go-web应用程序的相关文章

在Docker快速部署Node.js应用的详细步骤_node.js

一.前言 可能还有一些同学不了解docker这个项目,docker是由go语言编写的,一个快速部署的轻量级虚拟技术项目,他允许开发人员将自己的程序和运行环境一起打包,制作成一个docker的image(镜像),这样部署到服务器上,也只需要下载这个image就可以将程序跑起来,免去每次都安装各种依赖和环境的麻烦,还能够做到应用程序之间的隔离 二.实现准备 我会先创建一个简单的Node.js web app,来构建一个镜像.然后基于这个Image运行一个container.从而实现快速部署. 由于网

如何使用Docker部署一个Go Web应用程序

本文讲的是如何使用Docker部署一个Go Web应用程序,[编者的话]这是国外轻量级CJ厂商Semaphore发布的教程,旨在让开发人员如何借助于Docker让Go应用程序的编译及发动实现自动化,提升开发效率的同时也能保证软件部署的可靠性. 熟悉Docker如何提升你在构建.测试并部署Go Web应用程序的方式,并且理解如何使用Semaphore来持续部署. 简介 大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版和配置文件.而当一个项目中有很多文件的时候,由于很多文件

如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目

原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio 2012 Visual Studio Express 2012 for Web 与 的Visual Studio 2010 Visual Studio Web发布更新 与 的Visual Web Developer 2010 Express Visual Studio Web发布更新 您可以部署到任

如何部署Python Web应用:记录一次Heroku部署完整过程

0.选择Heroku云平台          伴随着云计算的浪潮,国内的云服务可谓多种多样,价格虽然不高,但是真正能够提供永久免费使用的,哪怕有些限制也好,似乎也找不到.     出于学习/研究/实验/测试或是真正应用等各种需求,这时我们不妨使用把应用部署到国外的Heroku云平台上,Heroku的免费版除了其提供的Postgres数据库有限制之外(小于1万条记录的小型数据库不用付费就可以添加到自己的Web应用上),其它都可以免费使用,这绝对是不二的选择.     另外一点来说,Heroku对P

Web 应用程序性能优化

技巧 1 - 返回多个结果集   仔细查看您的数据库代码,看是否存在多次进入数据库的请求路径.每个这样的往返都会降低应用程序可以提供的每秒请求数量.通过在一个数据库请求中返回多个结果集,可以节省与数据库进行通信所需的总时间长度.同时因为减少了数据库服务器管理请求的工作,还会使得系统伸缩性更强. 虽然可以使用动态 SQL 返回多个结果集,但是我首选使用存储过程.关于业务逻辑是否应该驻留于存储过程的问题还存在一些争议,但是我认为,如果存储过程中的逻辑可以约束返回数据的话(缩小数据集的大小.缩短网络上

Visual Studio .NET使开发人员能够快速地构建和部署XML Web服务和应用程序

visual|web|web服务|xml|程序 Visual Studio .NET使开发人员能够快速地构建和部署XML Web服务和应用程序(2002.02.25)   来自:CSDN    华盛顿莱得蒙德,2002年2月8日 --四年以来,微软一直从事Microsoft .NET(公司下一代XML Web服务和应用程序的理念,它们以无缝的.安全的方式联接了整个互联网上的人.设备和信息)的基础工作.下周,微软将庆祝.NET的一个重要的里程碑--该工具将向全世界发行,通过程序员它将推动下一代的网

vSphere web client 虚拟机生成模板快速部署

一般来说,在 vSphere web client 中如果需要部署虚拟机,则要上传 Images 到存储器,然后通过挂载镜像的方式进行安装.这篇文章主要写通过虚拟机来克隆模板,并且通过模板进而重新生成虚拟机,进而快速部署,下面开始: 一.生成模板 1.打开 vSphere web client 右击已经存在的虚拟机,选择克隆->克隆为模板 2.输入模板名称和选择模板存放位置 3.选择存放模板的计算机及检查兼容性 4.选择存储器,并且选择虚拟磁盘格式(精简置备) 5.生成模板 6.查看模板生成状态

使用 Meteor 快速开发 Web 应用程序

Meteor 是一个新的 Web 应用程序开发平台,正在国际上得到广泛采用.Meteor 不仅仅是一个 JavaScript 编码框架,它还提供了一种创新方式来构建可伸缩.交互式的富 Web 应用程序.通过简化编码模 型和减少开发人员必须编写的代码量,Meteor 具有加速开发周期的潜力.使用 Meteor,经验丰富的 Web 应 用程序架构师和开发人员只需花费几天或几星期的时间,就可以完成从概念到全面部署的整个过程,而不像平 常一样需要几个月或更长的时间. 关于安装 Meteor 平台并开始使

快速部署安全狗解决CC攻击

电脑装有的安全软件对一般的SQL注入等攻击还是没什么问题的,直到遇到CC攻击.本文中作者将教你如何快速部署安全狗解决CC攻击. 手头有几个网站:1个Z-Blog的博客.1个phpwind论坛.1个Discuz!论坛,流量又都不高,所以用个512M内存的VPS也足够用了,平时速度也还不错. 但是网站算是网络安全类的,所以,对网站的攻击隔三差五也是有的.还好,多数时候是扫描.踩点,用某安全监控软件检测到的攻击企图最多的一天居然有8万次.不过由于装有安全软件,一般的SQL注入等攻击还是没什么问题的--