对镜像精简

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

相关推荐
ttwuai17 小时前
Go开源后台管理系统推荐:怎么按技术栈和边界比较4个官方仓库?
golang·gin
codeejun18 小时前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
Achou.Wang19 小时前
k8s中nginx worker process自动设置
后端·golang
指尖的爷2 天前
ARM 架构 Ubuntu(RK3588/aarch64)go开发环境安装手册
ubuntu·架构·golang
名字还没想好☜2 天前
Go 实现指数退避重试:context 取消、抖动 jitter 与什么时候别重试
后端·golang·go
Casbin开源社区2 天前
OpenAgent 详解:单二进制自托管 AI Agent 平台,30+ 模型接入、RAG 知识库、MCP 工具调用与 Casbin 工具权限
人工智能·golang·开源
五彩小白3 天前
GO语言装饰器语法
golang
金金计较.3 天前
Go语言-4
开发语言·golang
名字还没想好☜3 天前
Go context.AfterFunc 实战(Go 1.21):context 一取消就自动跑清理,告别手写 goroutine 监听 Done
后端·golang·go
web守墓人3 天前
【goed/ui】自定义组件设计思想篇
linux·windows·ui·golang