对镜像精简

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

相关推荐
moxiaoran57531 天前
Go语言的错误处理
开发语言·后端·golang
CTO Plus技术服务中1 天前
一栈式、系统性的C、C++、Go、网络安全、Linux运维开发笔记和面试笔记
c++·web安全·golang
modelmd1 天前
Go、Java 的值类型和引用类型对比
java·golang
资深web全栈开发1 天前
高并发的本质:超越语言的协作哲学——以 Go HTTP 服务器为例
服务器·http·golang·系统设计·goroutine·高并发架构·go并发
bing.shao1 天前
Golang 在OPC领域的应用
开发语言·后端·golang
os_lee1 天前
Milvus 实战教程(Go 版本 + Ollama bge-m3 向量模型)
数据库·golang·milvus
源代码•宸2 天前
大厂技术岗面试之一面(准备自我介绍、反问)
经验分享·后端·算法·面试·职场和发展·golang·反问
源代码•宸2 天前
Golang原理剖析(channel面试与分析)
开发语言·经验分享·后端·面试·golang·select·channel
moxiaoran57532 天前
Go语言中的泛型
golang
加油20192 天前
GO语言内存逃逸和GC机制
golang·内存管理·gc·内存逃逸