对镜像精简

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

相关推荐
海上彼尚17 小时前
Go之路 - 7.go的结构体
开发语言·后端·golang
源代码•宸1 天前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
半桶水专家1 天前
GORM 结构体字段标签(Struct Tags)详解
golang·go·gorm
GokuCode1 天前
【GO高级编程】05.类的扩展与复用
golang·embedding·xcode
Tony Bai1 天前
Jepsen 报告震动 Go 社区:NATS JetStream 会丢失已确认写入
开发语言·后端·golang
bing.shao1 天前
Golang 之 defer 延迟函数
开发语言·后端·golang
penngo1 天前
Golang使用Fyne开发桌面应用
开发语言·后端·golang
ByNotD0g1 天前
Golang Green Tea GC 原理初探
java·开发语言·golang
NaturalHarmonia1 天前
【Go】sync package官方示例代码学习
开发语言·学习·golang
海上彼尚1 天前
Go之路 - 7.go的函数
开发语言·后端·golang