docker打包镜像--go语言编写的http项目
docker打包镜像–go语言编写的http项目
1、go编写的http服务
main.go文件,启动http服务的8096端口
package mainimport ("fmt""io""net""net/http""os""strings"
)func main() {// 注册handle处理函数http.HandleFunc("/users", user)http.HandleFunc("/healthz", healthz)// 监听8096端口err := http.ListenAndServe(":8096", nil)if err != nil {fmt.Println("监听失败:", err.Error())}
}// 定义handle处理函数
func user(w http.ResponseWriter, r *http.Request) {if len(r.Header) > 0 {for k, v := range r.Header {// 设置响应头键值对w.Header().Set(k, v[0])}}// 获取系统环境变量的VERSION配置_version := os.Getenv("VERSION")if _version == "" {fmt.Println("don't get the VERSION in env")}// 将version配置写入响应头w.Header().Set("Version", _version)io.WriteString(w, "hello web")// 获取客户端ipxForwardedFor := r.Header.Get("X-Forwarded-For")ip := strings.TrimSpace(strings.Split(xForwardedFor, ",")[0])if ip != "" {fmt.Println(ip)}ip = strings.TrimSpace(r.Header.Get("X-Real-Ip"))if ip != "" {fmt.Println(ip)}if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil {fmt.Println(ip)}fmt.Println(ip)
}func healthz(w http.ResponseWriter, r *http.Request) {io.WriteString(w, "200")
}
2、dockerfile编写
dockerfile
#获取golang镜像
FROM golang:latest#作者
MAINTAINER Dice #设置工作目录
WORKDIR $GOPATH/src/github.com/http4go#将服务器的go工程代码加入到docker容器中
ADD . $GOPATH/src/github.com/http4go#go构建可执行文件
RUN go env -w GO111MODULE=auto
RUN go build .#暴露端口
EXPOSE 8086#最终运行docker命令
ENTRYPOINT ["./http4go"]
3、构建镜像
docker build -f dockerfile -t jackiehong/httpgoserver:V1
docker build -f 指定dockerfile -t dockerhub的用户名/仓库名:版本 (必须按此格式打tag,用于后续push到dockerhub)
4、通过镜像启动容器
docker images # 查看镜像ID
#通过镜像构建容器,启动本地容器里的httpserver完成端口映射
docker run --name Dicegohttp -p 8096:8096 -d 88648ec04cb8
docker run --name 容器名称 -p 宿主机端口:容器内端口 -d 镜像id
5、访问容器里的http服务
因为我用的是阿里云服务器,所以要在策略里打开对应的8096端口
之后可以用公网ip:8096/users进行访问,至此项目由dockerfile至项目跑起来的整个流程就结束了
6、将镜像推送至dockerhub仓库
docker login #依次输入账号密码
docker tag 原镜像名 jackiehong(账号名)/httpgoserver
docker push jackiehong(账号名)/httpgoserver(仓库名,无须去dockerhub创建,运行push命令,将会自动创建)
docker打包镜像--go语言编写的http项目相关推荐
- Windows下用docker打包镜像
Windows下使用docker打包镜像 编写dockerfile并将其放入待打包code的同级目录下 生成requirements文档 通过docker命令打包程序 1.Dockerfile doc ...
- docker 打包镜像
因为某台服务器需要部署Tomcat,但是该服务武器不能连接外网,所以需要先pull拉一下镜像包,如果已经有了现有的镜像就不需要拉取了,直接从第二部开始就行. 具体操作步骤如下: 1. 拉取镜像(要能连 ...
- idea 使用 Docker 打包镜像的两种方式_07
idea 使用 Docker 打包镜像的两种方式_07 一.方式: 一.idea 的docker 插件 和Dockerfile: 二.pom和Dockerfile结合. 二.详解 第一种: 1.第一步 ...
- 使用Docker打包镜像并发布
1.docker介绍 Docker 是一个开源的应用容器引擎,以镜像的形式进行发布.docker的图标是一个大鲸鱼驮着许多集装箱在海上航行.大鲸鱼就是docker,集装箱就是一个个容器.容器是完全使用 ...
- docker 打包镜像成tar文件
docker 打包镜像 如果当前镜像正在运行,需要先commit一下,复制出最新的当前需要打包的镜像 docker commit -a 'rqq' -m 'my rabbitmq' 镜像id 新的镜像 ...
- scala语言编写的maven项目打jar包运行
项目场景: scala语言编写的maven项目打jar包运行 问题描述 最近在做项目的时候需要把项目部署到docker上面运行,java.编写的maven项目打成jar包再定义入口函数之后就可以运行了 ...
- docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器
不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...
- Windows 安装Docker 打包镜像
1.官网下载docker desktop,链接如下: Install on Windows | Docker Documentation 2. 启动Docker,如果启动报错: System.Inva ...
- docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像
一.前言 1.本文主要内容 将在项目中实际使用到的相关东西整理记录一波,同时可以方便其他同学在使用到的时候参考一下(自己也备忘),有不对的地方,欢迎指出~~ Docker部署SpringBoot 项目 ...
- docker打包镜像(实用版)
将当前所需的容器打包成镜像 该方法是使用docker commit 命令,其命令格式为: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 主要 ...
最新文章
- 4.1.4 文件的物理结构(上下)
- 计算机科学导论考试A卷试题,09级计算机科学导论A卷答案
- selenium3 + java 日志
- centos5.9 安装mysql_centos 5.9 安装mysql 5.5.31
- 斯坦福吴恩达团队公布最大医学影像数据集
- 网络子系统55_ip协议分片重组_加入ipq
- 0433-Kerberos环境下Impala Daemon在CDH5.15版本中KRPC端口27000异常分析
- 玩转Python,30行Python代码刷王者荣耀金币
- 利用FDTD软件仿真拓扑光子(二)-光子晶体结构分析
- (OJ)Java多线程-子弹射击
- 蚁群算法Ant Colony Optimization-ACO
- Transfomer详解
- 国二c语言程序,国家计算机二级c语言题库及答案
- 《管理经济学》公式大全
- 【问题】Adobe安装程序初始化失败
- jenkins如何得到日期
- JavaEE|TCP/IP协议栈之TCP协议端格式详解
- 项目进度推进——工作成果呈现
- 骁龙695和天玑900处理器哪个好
- 在excel中某些单元格内批量增加相同的内容
热门文章
- 千呼万唤始出来 Google GDrive将于4月初正式推出
- 360如何查看计算机配置文件,win7中怎么查看路由器配置文件config.bin
- 学习July博文总结——支持向量机(SVM)的深入理解(下)
- mysql中 创建函数失败_Mysql创建函数出错
- Photoshop图片变纯黑白无灰度
- mysql 关闭远程_禁止MySQL root远程访问
- sql server 2000收缩数据库【极简操作】
- 数据库-内外连接及左右连接的区别
- 数据恢复工具winhex教程
- 在分析仪中创建用户自定义的TRL校准件【以RS矢量网络分析仪为例】