玩转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%   

end~

相关文章
|
1月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
389 108
|
25天前
|
运维 Devops 持续交付
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
在企业IT建设中,软件部署常面临效率低、易出错等问题。通过Docker与自动化工具,可实现高效、标准化和可追溯的部署流程,提升企业应用交付效率,降低运维门槛,助力中小企业实现自动化部署。
124 5
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
|
1月前
|
设计模式 Linux 开发工具
Docker部署会吗?
本段内容主要介绍了Docker常用命令、Linux基础指令及日志查看方法,还涉及SpringMVC的执行流程、设计模式与注解,适合用于面试中技术能力的展示。
56 0
|
1月前
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
|
2月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
171 1
|
1月前
|
应用服务中间件 网络安全 nginx
Docker部署 Alist
这里帮你整理一份使用 Docker 部署 Alist(一个开源的文件列表和管理工具)的详细步骤和示例,方便你快速启动。
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
运维 Kubernetes 前端开发
【云原生】阿里云服务器部署 Docker Swarm集群
阿里云服务器 一键部署 Docker Swarm 集群!
875 0
【云原生】阿里云服务器部署 Docker Swarm集群
|
弹性计算 数据可视化 关系型数据库
使用阿里云部署基于docker的mysql云服务
本篇文章将介绍如何使用阿里云安装docker、部署mysql服务,并远程连接至远端mysql
874 1
使用阿里云部署基于docker的mysql云服务