对镜像精简

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

相关推荐
徐小黑ACG2 小时前
GO语言 使用protobuf
开发语言·后端·golang·protobuf
能来帮帮蒟蒻吗13 小时前
GO语言学习(16)Gin后端框架
开发语言·笔记·学习·golang·gin
JavaPub-rodert14 小时前
一道go面试题
开发语言·后端·golang
6<714 小时前
【go】静态类型与动态类型
开发语言·后端·golang
weixin_4209476417 小时前
windows golang,consul,grpc学习
windows·golang·consul
Json201131517 小时前
Gin、Echo 和 Beego三个 Go 语言 Web 框架的核心区别及各自的优缺点分析,结合其设计目标、功能特性与适用场景
前端·golang·gin·beego
二狗哈1 天前
go游戏后端开发21:处理nats消息
开发语言·游戏·golang
能来帮帮蒟蒻吗1 天前
Go语言学习(15)结构体标签与反射机制
开发语言·笔记·学习·golang
returnShitBoy1 天前
Go语言中的defer关键字有什么作用?
开发语言·后端·golang
SoFlu软件机器人1 天前
Go/Rust 疯狂蚕食 Java 市场?老牌语言的 AI 化自救之路
java·golang·rust