在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Docker中怎么搭建Golang开发环境

104次阅读
没有评论

共计 2688 个字符,预计需要花费 7 分钟才能阅读完成。

今天就跟大家聊聊有关 Docker 中怎么搭建 Golang 开发环境,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

获取 Docker 镜像
我们使用官方最新稳定版的镜像 golang:latest,获取镜像前先得确保你电脑上运行了 Docker 客户端,没有的去官网下载一下吧这里就不多说了。
下载 dockerHub 上的镜像直接使用命令:
docker pull golang
下载完镜像后用镜像运行一个容器:
docker run –rm -it –name go-http-demo golang bash
上面这个命令用镜像 golang 创建了一个名为 go-http-demo 的容器,在容器中创建了一个 Bash 会话。–rm 选项指定容器退出后自动移除容器。
运行完上面的命令后我们就进入了运行的容器中,运行 go version 查看以下 go 的版本:
[email protected]:/go# go version
go version go1.13.6 linux/amd64
[email protected]:/go#
你可以根据自己的需要在 https://hub.docker.com/_/golang 中查找自己需要的版本的 golang 镜像运行容器。
在容器中运行 Go 项目
我们使用《深入学习用 Go 编写 HTTP 服务器》中最后写的支持优雅关停服务的 HTTPServer 的源码,将它放到 Docker 容器里伺服宿主机的请求。HTTP Server 的源码如下,想探究代码具体怎么实现的看链接里的文章就好了。

package mainimport (    context     fmt     log     net/http     os     os/signal     syscall)func main() {    mux := http.NewServeMux()    mux.Handle(/ , helloHandler{})    server := http.Server{       Addr:     :8080 ,        Handler: mux,    }    // 创建系统信号接收器    done := make(chan os.Signal)    signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)    go func() {         -done        if err := server.Shutdown(context.Background()); err != nil {           log.Fatal( Shutdown server: , err)        }    }()    log.Println( Starting HTTP server…)    err := server.ListenAndServe()    if err != nil {        if err == http.ErrServerClosed {            log.Print( Server closed under request)        } else {           log.Fatal( Server closed unexpected)        }    }}type helloHandler struct{}func (*helloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {   fmt.Fprintf(w, Hello World)}

把源码放在本地电脑的 /Code/go/src/example.com/http-demo/main.go 中,文件目录你们做的时候根据自己的情况写路径。
接下来就要把这个代码放到容器里去运行了,切到代码目录里执行如下命令:

docker run –rm -it –name go-http-demo \  -v $PWD:/go/src/example.com/go-http-demo \  -p 8000:8080  golang

- v 选项允许我们挂载多个本地目录或者数据卷到容器中,更改会在容器内外相互同步,上面的命令将 /Code/go/src/example.com/go-http-demo/ 挂载到了容器的 /go/src/example.com/go-http-demo。
- p 指定主机和容器的端口映射,因为代码里 HTTP 服务是监听 8080 端口的,所以我们将主机的 8000 端口和容器的 8080 端口做了映射。
执行完上面的命令,我们切换到到容器里的 Bash 会话,切到代码目录运行 go run main.go 后,在自己的电脑上打开浏览器访问 http:localhost:8080 看到下图中的页面就证明服务器在容器里已经正常运行起来了。

用 docker-compose 管理容器
通过上面的内容我们已经用 Docker 构建好了一个 Go 的开发环境,不过每次打那堆命令,还要进容器执行 go 命令启动程序太费事了,我们用 docker-compose 把上面那些流程自动化一下。
在项目代码根目录创建 docker-compose.yml:

version: 3 services:  app:    image: golang:latest    volumes:      – $PWD:/go/src/examplecom/http_demo    ports:      – 8000:8080    command: go run /go/src/examplecom/http_demo/main.go

如果你们项目里不允许就找个目录放这个文件,我自己就是单独有个目录里面放了好几个项目的 Docker 配置文件,有 PHP 项目的也有 Go 项目的。
上面的编排文件里只定义了一个叫 app 的服务,其他的也很容易理解我就不说了,唯一要注意的一点就是如果 yml 文件在项目外 volumes 里的配置就换成绝对路径不要用 $PWD 了
接下来启动 docker-compose:
docker-compose up -d
如果启动不成功先不要在 daemon 模式下运行把 - d 去掉,就能看到具体什么错误,等调试正常了再后台启动。
代码有修改后,需要重新编译项目,针对我们的容器执行下面的命令即可
docker-compose restart
想要进入运行的容器中执行操作使用命令:
docker exec -it container name bash
给我们创建的 app 发送 go test 命令让它在容器内执行:
docker-compose exec app go test

看完上述内容,你们对 Docker 中怎么搭建 Golang 开发环境有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计2688字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产精品亚洲综合 | 欧美成人亚洲高清在线观看 | 久久99热这里只有精品免费看 | 2020国产精品永久在线 | 91入口免费网站大全 | 亚洲色图欧美色 | 亚洲日韩久久综合中文字幕 | 真人直播 免费视频 | 国产色拍 | 精品久久久久久 | 蜜桃视频在线观看免费网址入口 | 精品视频免费看 | 国产精品青草久久久久福利99 | 亚洲日韩国产精品乱-久 | 国产成人精品999在线 | 亚洲人成网亚洲欧洲无码久久 | 四虎在线最新永久免费播放 | 亚洲人成在线影院 | 亚洲v欧美 | 亚洲成a人片在线观看久 | 性a爱片免费视频性 | 久久97 | 亚洲一区二区天海翼 | 国产精品国产午夜免费福利看 | 亚洲愉拍自拍另类图片 | 国产日韩在线看 | 人妻少妇精品视频专区 | 精品亚洲成a人片在线观看 精品亚洲成a人片在线观看少妇 | 欧美午夜片欧美片在线观看 | 精品人妻无码区在线视频 | 日本黄色免费看 | 精品国偷自产在线视频99 | 午夜影剧| 成年男女男精品免费视频网站 | 免费观看成人欧美www色 | 免费性| 亚洲精品乱码久久久久66 | 爆乳熟妇一区二区三区霸乳 | 99热3| 久精品视频| 小明看片成人永久在线观看 |