在搜索引擎中,搜索了一下如何部署一个go的程序, 发现都是基于golang的镜像部署go源码的方案

而基于golang源码部署 docker image的大小有700MB, 有时候并不需要这么大,我们生成二进制文件后
只需要基于centos来制作image就可以了, 当然如果对于go源码有持续部署的需求,那还是只能使用golang镜像


目录结构

完整的目录结构就这么简单, main是二进制运行文件

main.go

package mainimport "github.com/gin-gonic/gin"func main() {g := gin.Default()g.LoadHTMLGlob("static/*")g.GET("/index", func(c *gin.Context) {c.HTML(200, "index.html", gin.H{"title": "标题",})})g.Run(":80")
}

打包go 二进制运行文件

这里因为我是mac系统,所以我需要交叉编译,具体的交叉编译可以查看我的另一篇交叉文章

cd mainCGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

制作镜像

Dockerfile

FROM centos:latestLABEL cjl "cjl_spy@163.com"WORKDIR /rootADD ./main ./main
ADD ./static/ ./static/EXPOSE 80ENTRYPOINT  ["./main"]

FROM 基于centos

LABEL 随便写

WORKDIR 工作目录, 在docker中的目录, 直接使用/root就行了 当然你也可以自己指定

ADD [源文件] [目标文件]

EXPOSE 80 端口号是多少,这里设置80 ,因为我的程序中写的是80

ENTRYPOINT ["./main"] 这个是在运行容器时会执行的命令, 因为假设我在centos中 我开启这服务只需要./main 就够了

打包镜像

在main目录下执行

 docker build -t dockertest .

接着就会根据Dockerfile的内容进行打包,看到sucessful 就说明成功了

测试镜像运行

docker run --name dtest -d -p 8888:80 dockertest

接着访问浏览器

http://localhost:8888/index


通过docker-compose部署

这里需要先移除掉上一个容器,即使不移除也需要先停止运行

docker container rm -f dtest

配置docker-compose.yml

version: "3"
services:go-web:image: dockertestports:- "8888:80"

这里就完成了配置

然后执行 docker-compose up -d

接着在浏览器输入 http://localhost:8888/index
还是和上一步一样,这样就完成了带静态资源的服务器完整部署

结语

越学习docker 就越觉得docker的部署方案真的太方便了,即使只是自己使用云服务器搭设一个博客也应该好好学习

docker 运行一个二进制文件(部署go web)相关推荐

  1. Docker启动tomcat容器部署java web应用详细过程

    1.由于docker拉取tomcat镜像速度非常慢,可以在网易云镜像中心获取镜像地址 docker pull hub.c.163.com/library/tomcat:latest 下载成功后,查看下 ...

  2. Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅

    2019独角兽企业重金招聘Python工程师标准>>> 通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一 ...

  3. 基于 RHEL 7.6 安装 Docker 运行环境

    文章目录 1. 写在前面 2. 安装过程 3. 参考链接 1. 写在前面 尽管当前容器和容器编排等技术是非常热门的话题,但我之前的工作却很少有机会接触到这一类的技术栈,想起来不免觉得有些落伍了.不过好 ...

  4. 宿主机连接虚拟机中用docker运行的MySQL

    目标 在VMware CentOS7虚拟机中采用docker运行一个MySQL容器,然后从宿主机访问和操作该MySQL数据库. 同时虚拟机的网络采用桥接模式,使用静态IP上网. 关键步骤 创建虚拟机之 ...

  5. docker部署python web应用_在 Docker 中运行一个 Python 的 Web 应用

    几周前, Elastic Beanstalk声明在AWS云中配置和管理Docker容器.在本文中,我们通过一个简单的注册表单页面应用去理解Docker部署过程,该表单使用Elastic Beansta ...

  6. docker 运行 web 服务和部署 Go web app

    docker 运行 web 服务 和 部署 Go web app 文章目录 docker 运行 web 服务 和 部署 Go web app 一.docker 简介 二.docker 运行 web 服 ...

  7. go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)

    go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...

  8. 基于Docker里的运行的tomcat容器进行部署Java Web项目详解

    引言:在centos-7环境装了docker后,通过docker创建一个tomcat容器,想部署Java web项目,结果就是找不到tomcat 容器的的webapps目录,导致部署不了项目,不过后来 ...

  9. 部署go的web应用_使用Docker部署Go Web应用

    为什么需要Docker? 使用docker的主要目标是容器化.也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机. 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很 ...

最新文章

  1. Java方向如何准备BAT技术面试答案
  2. CCNP路由实验---12、配置分发列表和被动接口
  3. 从书上截取一段TCP三次握手和四次挥手
  4. Linux内核中的进程组及会话
  5. SQL Server XML性能优化(Best Practices)
  6. 日常问题——flume连接hive时报错Caused by: java.lang.NoSuchMethodError
  7. vscode自动加前缀_详解VScode自动补全CSS3前缀插件以及配置无效的解决办法
  8. Activity切换动画---点击哪里从哪放大
  9. python中文decode和encode转码
  10. java day01【前言、入门程序、常量、变量】
  11. MIUI系统刷第三方Recovery+Magisk
  12. 2022亚太杯数学建模比赛准备
  13. atmega168p与328p_atmega328P 写入 Boot Loader的那点事 之 互相伤害
  14. html没有写font标签却出现font标签解决方案
  15. oracle常见异常——io异常,connection reset
  16. 计算机桌面图标任意排列,教你win7电脑桌面图标怎么随意摆放
  17. 通达信【波段底部机会】副图指标公式 操盘行情线 重心买入 源码
  18. DBeaver 安装及配置离线驱动
  19. CCCC-GPLT L2-023. 图着色问题 图论-点染色
  20. 笔记本电脑插过一次typeC的耳机之后在插3.5的圆孔耳机不能用?

热门文章

  1. 论EBS的并发请求(报表中心)的必要性
  2. 只有养老机器人才能拯救未来“老龄化中国”
  3. 不一样的解决Non-static method 'xxx' cannot be referenced from a static context
  4. #学习笔记4#软件测试基础——测试阶段划分、黑盒测试的一些知识
  5. AD常用使用快捷键和技巧
  6. Py西游攻关之正则表达式
  7. 测试用例(功能用例)——登录、首页、个人信息
  8. android中bitmap压缩的几种方法详解
  9. ui设计是干啥的: ui设计师主要是做什么的呢
  10. VC++ InvalidateRect