docker篇6 构建一个go镜像

#版本一:
#FROM golang:alpine
#
#WORKDIR /build
#
#COPY hello.go .
#
#RUN go build -o hello hello.go
#
#CMD ["./hello"]

#版本二:

#FROM alpine
#
#WORKDIR /build
#
#COPY hello .
#
#CMD ["./hello"]


##版本三 第一个 FROM 开始的部分是构建一个 builder 镜像,目的是在其中编译出可执行文件 hello,第二个 From 开始的部分是从第一个镜像里 copy 出来可执行文件 hello,并且用尽可能小的基础镜像
FROM golang:alpine AS builder

WORKDIR /build

ADD go.mod .
COPY . .
RUN go build -o hello hello.go


FROM alpine

WORKDIR /build
COPY --from=builder /build/hello /build/hello

CMD ["./hello"]

版本四:

#源镜像
FROM golang:alpine As builder
## 设置环境变量
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64 \
	GOPROXY="https://goproxy.cn,direct"

#作者
LABEL MAINTAINER="denggx@126.com"

#设置工作目录
WORKDIR /opt/goinproject
#将服务器的go工程代码加入到docker容器中
# 将代码复制到容器中
COPY . .
# 将我们的代码编译成二进制可执行文件  可执行文件名为 app
RUN go mod tidy
RUN go build -o app .

# 移动到用于存放生成的二进制文件的 /dist 目录
WORKDIR /dist

# 将二进制文件从 /home/www/goWebBlog 目录复制到这里
COPY --from=builder /opt/goinproject/app ./
# 在容器目录 /dist 创建一个目录 为src
#RUN mkdir src .
# 在容器目录 把宿主机的静态资源文件 拷贝到 容器/dist/src目录下
# 这个步骤可以略  因为项目是引用到了 外部静态资源
#RUN cp -r /home/www/goWebBlog/src/static ./src/
# 声明服务端口
EXPOSE 8085

# 启动容器时运行的命令
CMD ["/dist/app"]


先打包编译
go build -o app .

构建镜像

docker build -t goinproject:v1 .

参考文章

https://mp.weixin.qq.com/s/LJ5mECUh-jRcBlVZ98q61A

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值