对镜像精简

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

相关推荐
听雨·眠2 小时前
go语言中defer使用指南
开发语言·后端·golang
言之。2 小时前
【Go语言】RPC 使用指南(初学者版)
开发语言·rpc·golang
唐僧洗头爱飘柔95277 小时前
(Go Gin)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
后端·golang·go·restful·gin·goweb开发
是发财不是旺财1 天前
跟着deepseek学golang--认识golang
开发语言·后端·golang
我的golang之路果然有问题1 天前
快速上手GO的net/http包,个人学习笔记
笔记·后端·学习·http·golang·go·net
草海桐1 天前
go 的 net 包
网络·golang·net
Xiaoyu Wang2 天前
Go协程的调用与原理
开发语言·后端·golang
techdashen2 天前
性能比拼: Go vs Java
java·开发语言·golang
听雨·眠3 天前
go中map和slice非线程安全
java·开发语言·golang
abin在路上3 天前
Golang 版本导致的容器运行时问题
云原生·golang·containerd