玩转Docker—使用Docker部署Go工程
2023-09-11 14:16:33 时间
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~
相关文章
- 如何将docker swarm的manager节点降级为worker节点?
- Docker NFS volume 创建与使用
- Docker 大热,还不了解 Dockerfile 你就OUT啦~
- 《循序渐进学Docker》——1.4 本章小结
- 如何在 Docker 中设置 Go 并部署应用
- 通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
- docker for windows--Windows 10 家庭中文版 21H2 安装Docker Desktop初体验
- Docker服务启动报错:Job for docker.service failed because the control process exited with error code
- Docker 常用命令
- Centos7 下建立 Docker 桥接网络
- Docker环境搭建与使用:docker仓库管理的基础用法
- 转 叫板OpenStack:用Docker实现私有云
- GO语言练习:第一个Go语言工程--排序
- 初识GO语言——安装Go语言
- 在 Docker 中生成 ProtoBuffer、gRPC 文件
- 国内高速下载Docker 以及 docker-compose 地址
- 浅析Docker容器的两种运行模式及 docker run 的 --rm 参数的作用及与 docker rm 的区别
- 浅析Docker数据管理-数据库容器化并持久化:数据卷概念、创建数据卷的2种方式、docker volume用法
- Docker问题——ubuntu下彻底删除docker
- dockerfile来构建自己的docker镜像
- docker 和contianerd区别
- Ubuntu下Jenkins(docker)配置Docker远程启动
- Docker介绍以及Registry的安装 -摘自http://dockone.io/article/108
- Docker启动报错docker: Error response from daemon: Conflict. The container name “/redis6“ is already in u