对镜像精简

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

相关推荐
golang学习记1 天前
Go slog 日志打印最佳实践指南
开发语言·后端·golang
水淹萌龙1 天前
玩转 Go 表达式引擎:expr 实战指南
开发语言·后端·golang
Yeats_Liao1 天前
Go Web 编程快速入门 07.4 - 模板(4):组合模板与逻辑控制
开发语言·后端·golang
nexttake2 天前
5.go-zero集成gorm 和 go-redis
开发语言·后端·golang
QX_hao2 天前
【Go】--闭包
开发语言·golang
脚踏实地的大梦想家2 天前
【Go】P8 Go 语言核心数据结构:深入解析切片 (Slice)
开发语言·数据结构·golang
Tony Bai2 天前
【Go 网络编程全解】13 从 HTTP/1.1 到 gRPC:Web API 与微服务的演进
开发语言·网络·http·微服务·golang
weixin_420947642 天前
golang使用泛型
golang·1024程序员节
小画家~2 天前
第二十七:使用 Logrus + Lumberjack 创建日志中间件
golang
Yeats_Liao3 天前
Go Web 编程快速入门 05 - 表单处理:urlencoded 与 multipart
前端·golang·iphone