docker 运行一个二进制文件(部署go web)
在搜索引擎中,搜索了一下如何部署一个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)相关推荐
- Docker启动tomcat容器部署java web应用详细过程
1.由于docker拉取tomcat镜像速度非常慢,可以在网易云镜像中心获取镜像地址 docker pull hub.c.163.com/library/tomcat:latest 下载成功后,查看下 ...
- Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅
2019独角兽企业重金招聘Python工程师标准>>> 通过 Docker 化一个博客网站来开启我们的 Docker 之旅 这篇文章包含 Docker 的基本概念,以及如何通过创建一 ...
- 基于 RHEL 7.6 安装 Docker 运行环境
文章目录 1. 写在前面 2. 安装过程 3. 参考链接 1. 写在前面 尽管当前容器和容器编排等技术是非常热门的话题,但我之前的工作却很少有机会接触到这一类的技术栈,想起来不免觉得有些落伍了.不过好 ...
- 宿主机连接虚拟机中用docker运行的MySQL
目标 在VMware CentOS7虚拟机中采用docker运行一个MySQL容器,然后从宿主机访问和操作该MySQL数据库. 同时虚拟机的网络采用桥接模式,使用静态IP上网. 关键步骤 创建虚拟机之 ...
- docker部署python web应用_在 Docker 中运行一个 Python 的 Web 应用
几周前, Elastic Beanstalk声明在AWS云中配置和管理Docker容器.在本文中,我们通过一个简单的注册表单页面应用去理解Docker部署过程,该表单使用Elastic Beansta ...
- docker 运行 web 服务和部署 Go web app
docker 运行 web 服务 和 部署 Go web app 文章目录 docker 运行 web 服务 和 部署 Go web app 一.docker 简介 二.docker 运行 web 服 ...
- go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)
go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...
- 基于Docker里的运行的tomcat容器进行部署Java Web项目详解
引言:在centos-7环境装了docker后,通过docker创建一个tomcat容器,想部署Java web项目,结果就是找不到tomcat 容器的的webapps目录,导致部署不了项目,不过后来 ...
- 部署go的web应用_使用Docker部署Go Web应用
为什么需要Docker? 使用docker的主要目标是容器化.也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机. 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很 ...
最新文章
- Java方向如何准备BAT技术面试答案
- CCNP路由实验---12、配置分发列表和被动接口
- 从书上截取一段TCP三次握手和四次挥手
- Linux内核中的进程组及会话
- SQL Server XML性能优化(Best Practices)
- 日常问题——flume连接hive时报错Caused by: java.lang.NoSuchMethodError
- vscode自动加前缀_详解VScode自动补全CSS3前缀插件以及配置无效的解决办法
- Activity切换动画---点击哪里从哪放大
- python中文decode和encode转码
- java day01【前言、入门程序、常量、变量】
- MIUI系统刷第三方Recovery+Magisk
- 2022亚太杯数学建模比赛准备
- atmega168p与328p_atmega328P 写入 Boot Loader的那点事 之 互相伤害
- html没有写font标签却出现font标签解决方案
- oracle常见异常——io异常,connection reset
- 计算机桌面图标任意排列,教你win7电脑桌面图标怎么随意摆放
- 通达信【波段底部机会】副图指标公式 操盘行情线 重心买入 源码
- DBeaver 安装及配置离线驱动
- CCCC-GPLT L2-023. 图着色问题 图论-点染色
- 笔记本电脑插过一次typeC的耳机之后在插3.5的圆孔耳机不能用?
热门文章
- 论EBS的并发请求(报表中心)的必要性
- 只有养老机器人才能拯救未来“老龄化中国”
- 不一样的解决Non-static method 'xxx' cannot be referenced from a static context
- #学习笔记4#软件测试基础——测试阶段划分、黑盒测试的一些知识
- AD常用使用快捷键和技巧
- Py西游攻关之正则表达式
- 测试用例(功能用例)——登录、首页、个人信息
- android中bitmap压缩的几种方法详解
- ui设计是干啥的: ui设计师主要是做什么的呢
- VC++ InvalidateRect