千家信息网

最简单的Go Dockerfile编写方法是什么

发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要介绍"最简单的Go Dockerfile编写方法是什么",在日常操作中,相信很多人在最简单的Go Dockerfile编写方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2025年02月21日最简单的Go Dockerfile编写方法是什么

这篇文章主要介绍"最简单的Go Dockerfile编写方法是什么",在日常操作中,相信很多人在最简单的Go Dockerfile编写方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"最简单的Go Dockerfile编写方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. Dockerfile 一些额外注意点

  • 选择最简单的镜像

比如 alpine,整个镜像 5M 左右

  • 设置镜像时区

RUN apk add --no-cache tzdata
ENV TZ Asia/Shanghai

2. 多阶段构建

  • 第一阶段构建出可执行文件,确保构建过程独立于宿主机

  • 第二阶段将第一阶段的输出作为输入,构建出最终的极简镜像

3. 完整 Dockerfile 编写过程

  • 首先安装 goctl 工具

GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/tal-tech/go-zero/tools/goctl

  • greet 项目下创建一个 hello 服务

goctl api new hello

文件结构如下:

greet
├── go.mod
├── go.sum
└── service
└── hello
├── etc
│ └── hello-api.yaml
├── hello.api
├── hello.go
└── internal
├── config
│ └── config.go
├── handler
│ ├── hellohandler.go
│ └── routes.go
├── logic
│ └── hellologic.go
├── svc
│ └── servicecontext.go
└── types
└── types.go
  • hello 目录下一键生成 Dockerfile,命令如下

goctl docker -go greet.go

Dockerfile 内容如下:

FROM golang:alpine AS builder

LABEL stage=gobuilder

ENV CGO_ENABLED 0
ENV GOOS linux
ENV GOPROXY https://goproxy.cn,direct

WORKDIR /build/zero

ADD go.mod .
ADD go.sum .
RUN go mod download
COPY . .
COPY service/hello/etc /app/etc
RUN go build -ldflags="-s -w" -o /app/hello service/hello/hello.go


FROM alpine

RUN apk update --no-cache && apk add --no-cache ca-certificates tzdata
ENV TZ Asia/Shanghai

WORKDIR /app
COPY --from=builder /app/hello /app/hello
COPY --from=builder /app/etc /app/etc

CMD ["./hello", "-f", "etc/hello-api.yaml"]
  • greet 目录下 build 镜像

docker build -t hello:v1 -f service/hello/Dockerfile .

  • 查看镜像

hello v1 5455f2eaea6b 7 minutes ago 18.1MB

可以看出镜像大小约为 18M。

  • 启动服务

docker run --rm -it -p 8888:8888 hello:v1

  • 测试服务

$ curl -i http://localhost:8888/from/you
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 10 Dec 2020 06:03:02 GMT
Content-Length: 14

{"message":""}

到此,关于"最简单的Go Dockerfile编写方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

镜像 方法 阶段 学习 服务 文件 更多 目录 过程 帮助 实用 接下来 内容 命令 大小 宿主 宿主机 工具 文章 时区 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 无锡上位机软件开发公司 游戏软件开发师的工资 软件开发期的工作包括哪些 网络技术介绍网 菏泽手机软件开发服务公司 将数据库中的数据导出 服务器显卡可以当显示器用吗 上位机与数据库通讯的目的是什么 电脑软件开发专业学校排名 达梦数据库适用net网站么 网络安全产业链官网 黑客攻击服务器可以提前化解吗 泰拉瑞亚多人进不去服务器 h3c串口服务器改密码 北京安防守时模块服务器虚拟主机 计算机网络技术实训周心得体会 遂宁软件开发厂家报价 小规模软件开发税率是多少 东华软件数据库工程师 云服务器的流量用完了会怎么样 华为网络技术专利 蓬溪2020年外贸数据库系统 网络安全性检测 法院信息化建设 网络安全 程序调用数据库原则 添加网络服务器 兴化农商银行网络安全宣传 怎么在数据库查看后台密码 数据库原理及应用2019答案 java先查询再新增到数据库
0