玩转Docker—使用Docker部署Go工程

举报
海风极客 发表于 2022/10/17 22:37:58 2022/10/17
【摘要】 1 基本流程(1)编写Go工程代码(2)可用性测试(3)编写Dockerfile(4)使用Dockerfile构建Docker镜像(5)查看构建结果并运行(6)测试新建的Docker镜像 2 操作实现 2.1 编写Go工程代码go-docker #项目根目录 - core #代码目录 - main.go #具体代码文件 - go.mod #mod文件 - Dockerfil...

1 基本流程

(1)编写Go工程代码

(2)可用性测试

(3)编写Dockerfile

(4)使用Dockerfile构建Docker镜像

(5)查看构建结果并运行

(6)测试新建的Docker镜像

2 操作实现

2.1 编写Go工程代码

go-docker  #项目根目录
 - core    #代码目录
   - main.go  #具体代码文件
 - go.mod  #mod文件
 - Dockerfile #Dockerfile文件
 - main   #go build ./core/main.go 命令编译后的二进制文件

2.2 具体代码

package main

import (
   "log"
   "net/http"
)

func main() {
   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
      w.Write([]byte("Hello Docker"))
   })
   log.Print("go docker project is running...")
   http.ListenAndServe(":8888", nil)
}

2.3 可用性测试

运行:

go run ./core/main.go

测试(在宿主机上):

curl http://127.0.0.1:8888

2.4 编写Dockerfile

#依赖镜像(母镜像),可以先使用docker search命令搜索
FROM golang:latest

#作者信息
MAINTAINER YMX "1712229564@qq.com"

#Docker工作目录
WORKDIR $GOPATH/src/go-docker

#将当前目录添加到Docker
ADD . $GOPATH/src/go-docker

#在Docker工作目录下执行命令
RUN go build ./core/main.go

#暴露端口
EXPOSE 8888

#编译后在根目录下生成而非./core目录下,最终运行Docker的初始命令
ENTRYPOINT ["./main"]

2.5 使用Dockerfile构建Docker镜像

基本语法:

docker build -t [镜像名] [Dockerfile所在目录]

具体演示:

docker build -t go-docker-latest .

2.6 查看构建结果并运行

root ~ % docker images            
REPOSITORY               TAG       IMAGE ID       CREATED          SIZE
go-docker-latest         latest    453fb231s245   9 minutes ago    953MB
root ~ % docker run -d -p 8888:8888 go-docker-latest  
a4a1f3b753913325b908bedf3d74ad1d0056223d8412524

2.7 测试新建的Docker镜像

root ~ % docker ps
CONTAINER ID   IMAGE              COMMAND    CREATED          STATUS          PORTS                    NAMES
a4a1f3b75391   go-docker-latest   "./main"   42 seconds ago   Up 42 seconds   0.0.0.0:8888->8888/tcp   jovial_z
root ~ % curl http://127.0.0.1:8888
Hello Docker%   

end~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。