解决 docker scratch 镜像的部署问题

https 请求失效,没有证书

解决办法

ADD https://curl.haxx.se/ca/cacert.pem /etc/ssl/certs/

更改时区

  • scratch 镜像没有办法使用 mkdir,使用 tar 命令打包系统的时区 /usr/share/zoneinfo 定义压缩文件 zoneinfo.tar.gz
    tar cfz zoneinfo.tar.gz /usr/share/zoneinfo
    
  • 结合 docker ADD 命令可以让时区文件自动解压到 /usr/share/zoneinfo
  • 预先将 zoneinfo 中的 /usr/share/zoneinfo/PRC 文件拷贝到根目录
  • 将 PRC 复制到 /etc/localtime 可以改变本地时区,从而不需要改 golang 代码
    ADD PRC /etc/localtime
    

完整 dockerfile

FROM scratch
ADD PRC /etc/localtime
ADD zoneinfo.tar.gz /
ADD https://curl.haxx.se/ca/cacert.pem /etc/ssl/certs/
ADD ./api.bangshang.net.cn /
ADD ./.env /.env
EXPOSE 9999
CMD ["/api.bangshang.net.cn"]
点赞