# syntax=docker/dockerfile:1 FROM golang:1.17-alpine as builder #RUN apk --no-cache --no-progress add git RUN echo -e 'https://mirrors.aliyun.com/alpine/v3.6/main/\nhttps://mirrors.aliyun.com/alpine/v3.6/community/' > /etc/apk/repositories && \ apk update && \ apk upgrade && \ apk add --no-cache git # 设置go环境变量 RUN go env -w GOPROXY=https://goproxy.cn,direct; RUN go env -w GOPRIVATE=bp.jydev.jianyu360.cn,app.yhyue.com # 设置私有镜像仓库 # 创建工作区 WORKDIR /workspace # 复制编译需要的文件 COPY go.mod go.mod COPY go.sum go.sum COPY core/ core/ COPY main.go main.go # 执行 go build 从./cmd/user/server.go 输出到 ./app 可执行文件 # 最终 app 可执行文件 路径 为 /workspace/app # ENTRYPOINT ["/bin/sh", "-c" , "echo 192.168.3.207 bp.jydev.jianyu360.cn >> /etc/hosts && echo 192.168.3.207 app.yhyue.com >> /etc/hosts && cat /etc/hosts"] # 构建程序 RUN CGO_ENABLED=0 go build -a -o app # ENTRYPOINT ["/bin/sh", "-c" , "echo 192.168.3.207 bp.jydev.jianyu360.cn >> /etc/hosts && echo 192.168.3.207 app.yhyue.com >> /etc/hosts && cat /etc/hosts && go build -a -o app && ./workspace/app "] # 多段编译 FROM alpine # cd 到 / 目录 WORKDIR /runspace # 复制配置文件夹 COPY etc/ etc/ # 把builder 阶段 的 成功 /workspace/app 可执行文件 复制到 当前目录来 (/workspace) COPY --from=builder /workspace/app . ## 暴露容器端口 EXPOSE 8077 #执行 /app 命令 运行 app 启动服务 ENTRYPOINT ["/app"]