在golang项目中创建一个Dockerfile文件,执行Dockerfile即可编译出docker的镜像
# FROM ... AS builder : 表示依赖的镜像只是使用在编译阶段
FROM golang:1.18.1 AS builder
# 编译阶段的工作目录,也可以作为全局工作目录
WORKDIR /app
# 把当前目录的所有内容copy到 WORKDIR指定的目录中
COPY . .
# 定义go build的工作环境,
# 例如GOOS=linux、GOARCH=amd64,
# 这样编译出来的 'main可执行文件' 就只能在linux的amd64架构中使用
ARG TARGETOS
ARG TARGETARCH
# 执行go build; --mount:在执行build时,会把/go 和 /root/.cache/go-build 临时挂在到容器中
RUN --mount=type=cache,target=/go --mount=type=cache,target=/root/.cache/go-build
GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o main
FROM alpine:3.14.0
# 把执行builder阶段的结果 /app/main拷贝到/app中
COPY --from=builder /app/main /app
# 把配置文件copy到/app/tsvbin中
COPY ./tsvbin /app/tsvbin
# 运行main命令,启动项目
# /app/main 指向RUN命令的 go build -o main的结果
ENTRYPOINT ["/app/main"]
参开文献:https://new.qq.com/rain/a/20220714A014LL00
原文地址:https://blog.csdn.net/Kelvin_hui/article/details/128905194
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_36278.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。