Dockerfile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # syntax=docker/dockerfile:1
  2. FROM golang:1.17-alpine as builder
  3. #RUN apk --no-cache --no-progress add git
  4. RUN echo -e 'https://mirrors.aliyun.com/alpine/v3.6/main/\nhttps://mirrors.aliyun.com/alpine/v3.6/community/' > /etc/apk/repositories && \
  5. apk update && \
  6. apk upgrade && \
  7. apk add --no-cache git
  8. # 设置go环境变量
  9. RUN go env -w GOPROXY=https://goproxy.cn,direct;
  10. RUN go env -w GOPRIVATE=bp.jydev.jianyu360.cn,app.yhyue.com # 设置私有镜像仓库
  11. # 创建工作区
  12. WORKDIR /workspace
  13. # 复制编译需要的文件
  14. COPY go.mod go.mod
  15. COPY go.sum go.sum
  16. COPY core/ core/
  17. COPY main.go main.go
  18. # 执行 go build 从./cmd/user/server.go 输出到 ./app 可执行文件
  19. # 最终 app 可执行文件 路径 为 /workspace/app
  20. # 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"]
  21. # 构建程序
  22. RUN CGO_ENABLED=0 go build -a -o app
  23. # 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 "]
  24. # 多段编译
  25. FROM alpine
  26. # cd 到 / 目录
  27. WORKDIR /runspace
  28. # 复制配置文件夹
  29. COPY etc/ etc/
  30. # 把builder 阶段 的 成功 /workspace/app 可执行文件 复制到 当前目录来 (/workspace)
  31. COPY --from=builder /workspace/app .
  32. ## 暴露容器端口
  33. EXPOSE 8077
  34. #执行 /app 命令 运行 app 启动服务
  35. ENTRYPOINT ["/app"]