go从0到1项目实战体系十五:go生产docker构建

1. docker镜像要求:

(1). 云原生对应用运行时的不同需求:

. 体积更小:
    a. 对于微服务分布式架构而言,更小的体积意味着更少的下载带宽,更快的分发下载速度

②. 启动速度更快:
    a. 对于传统单体应用,启动速度与运行效率相比不是一个关键的指标
    b. 原因:
       (1). 这些应用重启和发布频率相对较低
       (2). 对于需要快速迭代、水平扩展的微服务应用而言,更快的的启动速度就意味着更高的交付效率、更加快速的回滚
       (3). 当需要发布一个有数百个副本的应用时,缓慢的启动速度就是时间杀手
       (4). 对于Serverless应用而言,端到端的冷启动速度则更为关键,即使底层容器技术可以实现百毫秒资源就绪,如果应用无法在500ms内完成启动,用户就会感知到访问延迟

③. 占用资源更少:
    a. 运行时更低的资源占用,意味着更高的部署密度和更低的计算成本

(2). 如何把体积缩小:

# 官方golang镜像为基础镜像,gopath默认在/go/src中
FROM golang
# 指定维护者名称
MAINTAINER David
# 指定容器内的工作目录,不存在目录会自动创建
WORKDIR /go/src/git.xxx.com/cm/cm_ad_free
# 把dockerfile当前目录下的所有目录和文件都复制到上面指定的工作目录下
COPY . .
# 开始打包
RUN go build main.go
# 暴露服务端口
EXPOSE 20020 20021 20022
# 使用cmd执行命令,映射到容器内部的命令为./main ./config_local.ini :20020 :20021 :20022
CMD ["./main","./config_local.ini",":20020",":20021",":20022"]

你可能感兴趣的:(golang,docker,开发语言)