架构从零搭建0042-devops之Dockerfile制作golang运行环境

Dockerfile 制作及使用(golang运行环境)

准备golang的简单web工程代码 main.go ,功能是浏览器请求8999端口就返回“Hello World!”如下:

package main
import(
    "fmt"
    "net/http"
    "strings"
    "log"
)
func sayhelloName(w http.ResponseWriter,r *http.Request){
    r.ParseForm()//解析参数,默认是不会解析的
    fmt.Println(r.Form)//这些信息是输出到服务器端的打印信息
    fmt.Println("path",r.URL.Path)
    fmt.Println("scheme",r.URL.Scheme)
    fmt.Println(r.Form["url_long"])
    fork,v:=ranger.Form{
    fmt.Println("key:",k)
    fmt.Println("val:",strings.Join(v,""))
}
//这个写入到w的是输出到客户端的
fmt.Fprintf(w,"Hello Wrold !")
}
func main(){
    http.HandleFunc("/",sayhelloName)//设置访问的路由
    err:=http.ListenAndServe(":8999",nil)//设置监听的端口
    if err != nil{
    	log.Fatal("ListenAndServe:",err)
	    }
}

备注: 在MAC中编译linux版本的go执行文件需要这样:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

  1. 创建Dockerfile ---- 按照常规就是应该用 Dockerfile 文件名,没找到什么解释, 内容如下:

    #以centos为基准镜像
    FROM centos:latest
    #发布者信息
    MAINTAINER arno
    #copy main.go编译后的可执行文件 main至docker中的/workspace目录中
    COPY main /workspace/
    //执行个命令打印出欢迎信息
    CMD echo “hello docker!”

  2. 构建Dockerfile为新的镜像
    docker build -t hello_docker .
    "hello_docker"是为新的镜像名

  3. 启动镜像
    docker run -it -d -p 8999:8999 hello_docker:latest /bin/bash

  4. 进入镜像docker exec -t 41428c6b1a59 /bin/bash

  5. 进入copy文件的位置/workspace并执行main程序
    cd /workspace
    ./main

  6. 浏览器输入 http://localhost:8999 查看测试结果

流程评策:启动完docker后还需进入docker启动golang主程序,这样会增加工作量,尤其是在快速迭代的工作中尽量减少这样的人工操作

下面来优化这个流程,让CI工具在执行docker run时就完成启动工作,去除人工部分
修改docker run 指令为: docker run -it -d -p 8999:8999 hello_docker:latest sh -c ‘./workspace/main’ /bin/bash

ok, 以后当CI工具执行完后,服务自动启动,无需人为干预

至此docker与golang的环节打通,为CI 持续集成打好了基础

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值