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

简介: 玩转Docker—使用Docker部署Go工程

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%


相关文章
|
1月前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
151 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
18天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
22 2
|
24天前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
41 3
|
1月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
1月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
1月前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
57 1
|
28天前
|
持续交付 开发者 Docker
掌握Docker容器化技术,加速软件开发与部署
掌握Docker容器化技术,加速软件开发与部署
46 0
|
11天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
141 77
|
19天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
12天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
53 3