对镜像精简

dive工具,用来优化镜像大小

ENV命令合并

复制代码
ENV DEBUG_PORT=8777 \
    HTTP_PORT=12080 \
    PROGRAM_FILE_HOME_UPORTAL_CONF=/home/zenap/uportal/conf

WORKDIR usr/src/app,会切换到这个目录

使用COPY --chown 修改属主,不要使用RUN chown

容器内非root运行业务,要对目录和文件chown,增加镜像大小。构建镜像时,使用COPY --chown,使用 buildkit 或docker v17.x及以上版本。

由于PaaS使用docker v1.12.6,使用高于v1.12.6的docker版本,构建镜像有可能出现不兼容的问题。

错误示例:

COPY data /home/conf

RUN addgroup -g 1340 -S app

&& adduser app -D -s /sbin/nologin -G app -u 1340

&& mkdir /home/conf

&& chown -R app:app /home/conf

正确示例:

RUN addgroup -g 1340 -S app

&& adduser app -D -h /home/app -s /sbin/nologin -G app -u 1340

COPY --chown=app:app data /home/app/conf

相关推荐
le serein —f13 小时前
用go实现-反转链表
leetcode·链表·golang
席万里16 小时前
关于Go的init函数执行顺序#黑魔法
开发语言·网络·golang
喵了几个咪1 天前
Golang微服务框架kratos实现Socket.IO服务
开发语言·微服务·golang
海奥华21 天前
分库分表技术详解:从入门到实践
数据库·后端·mysql·golang
智商低情商凑2 天前
Go学习之 - Goroutines和channels
开发语言·学习·golang
半桶水专家2 天前
Go 语言时间处理(time 包)详解
开发语言·后端·golang
编程点滴2 天前
Go 重试机制终极指南:基于 go-retry 打造可靠容错系统
开发语言·后端·golang
月屯2 天前
后端go完成文档分享链接功能
开发语言·后端·golang
喵了几个咪2 天前
Golang微服务框架Kratos实现Thrift服务
开发语言·微服务·golang
Zzz 小生2 天前
Github-Go语言AI智能体开发套件:构建下一代智能代理的利器
人工智能·golang·github