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项目相关推荐

  1. Windows下用docker打包镜像

    Windows下使用docker打包镜像 编写dockerfile并将其放入待打包code的同级目录下 生成requirements文档 通过docker命令打包程序 1.Dockerfile doc ...

  2. docker 打包镜像

    因为某台服务器需要部署Tomcat,但是该服务武器不能连接外网,所以需要先pull拉一下镜像包,如果已经有了现有的镜像就不需要拉取了,直接从第二部开始就行. 具体操作步骤如下: 1. 拉取镜像(要能连 ...

  3. idea 使用 Docker 打包镜像的两种方式_07

    idea 使用 Docker 打包镜像的两种方式_07 一.方式: 一.idea 的docker 插件 和Dockerfile: 二.pom和Dockerfile结合. 二.详解 第一种: 1.第一步 ...

  4. 使用Docker打包镜像并发布

    1.docker介绍 Docker 是一个开源的应用容器引擎,以镜像的形式进行发布.docker的图标是一个大鲸鱼驮着许多集装箱在海上航行.大鲸鱼就是docker,集装箱就是一个个容器.容器是完全使用 ...

  5. docker 打包镜像成tar文件

    docker 打包镜像 如果当前镜像正在运行,需要先commit一下,复制出最新的当前需要打包的镜像 docker commit -a 'rqq' -m 'my rabbitmq' 镜像id 新的镜像 ...

  6. scala语言编写的maven项目打jar包运行

    项目场景: scala语言编写的maven项目打jar包运行 问题描述 最近在做项目的时候需要把项目部署到docker上面运行,java.编写的maven项目打成jar包再定义入口函数之后就可以运行了 ...

  7. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  8. Windows 安装Docker 打包镜像

    1.官网下载docker desktop,链接如下: Install on Windows | Docker Documentation 2. 启动Docker,如果启动报错: System.Inva ...

  9. docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

    一.前言 1.本文主要内容 将在项目中实际使用到的相关东西整理记录一波,同时可以方便其他同学在使用到的时候参考一下(自己也备忘),有不对的地方,欢迎指出~~ Docker部署SpringBoot 项目 ...

  10. docker打包镜像(实用版)

    将当前所需的容器打包成镜像 该方法是使用docker commit 命令,其命令格式为: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 主要 ...

最新文章

  1. 4.1.4 文件的物理结构(上下)
  2. 计算机科学导论考试A卷试题,09级计算机科学导论A卷答案
  3. selenium3 + java 日志
  4. centos5.9 安装mysql_centos 5.9 安装mysql 5.5.31
  5. 斯坦福吴恩达团队公布最大医学影像数据集
  6. 网络子系统55_ip协议分片重组_加入ipq
  7. 0433-Kerberos环境下Impala Daemon在CDH5.15版本中KRPC端口27000异常分析
  8. 玩转Python,30行Python代码刷王者荣耀金币
  9. 利用FDTD软件仿真拓扑光子(二)-光子晶体结构分析
  10. (OJ)Java多线程-子弹射击
  11. 蚁群算法Ant Colony Optimization-ACO
  12. Transfomer详解
  13. 国二c语言程序,国家计算机二级c语言题库及答案
  14. 《管理经济学》公式大全
  15. 【问题】Adobe安装程序初始化失败
  16. jenkins如何得到日期
  17. JavaEE|TCP/IP协议栈之TCP协议端格式详解
  18. 项目进度推进——工作成果呈现
  19. 骁龙695和天玑900处理器哪个好
  20. 在excel中某些单元格内批量增加相同的内容

热门文章

  1. 千呼万唤始出来 Google GDrive将于4月初正式推出
  2. 360如何查看计算机配置文件,win7中怎么查看路由器配置文件config.bin
  3. 学习July博文总结——支持向量机(SVM)的深入理解(下)
  4. mysql中 创建函数失败_Mysql创建函数出错
  5. Photoshop图片变纯黑白无灰度
  6. mysql 关闭远程_禁止MySQL root远程访问
  7. sql server 2000收缩数据库【极简操作】
  8. 数据库-内外连接及左右连接的区别
  9. 数据恢复工具winhex教程
  10. 在分析仪中创建用户自定义的TRL校准件【以RS矢量网络分析仪为例】