1.概述
Dockerfile默认是以root用户进行操作的,该用户操作权限过大,基于安全考虑,一般是在镜像中创建一个普通的用户进行操作。这个要求跟在虚拟机或物理机上运行的linux系统要求其实是一样的,只是操作方式不一样。
2.操作
2.1 创建用户和用户组
RUN groupadd appgroup && useradd appuser -g appgroup
RUN groupadd appgroup [--gid 1000] && useradd appuser -g appgroup [--uid 2000]
2.2 镜像时区修改
# centos7.0 设置上海时区,即北京时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# ubuntu:21.10
ENV TZ=Asia/Shanghai
RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime
2.3 拷贝应用到镜像
默认是以root用户操作,所以拷贝文件的时候需要指定用户(这里可以不用指定用户组)。
COPY --chown=appuser:appgroup <源目录/文件> <目标目录>
COPY --chown=appuser <源目录/文件> <目标目录>
2.4 切换用户启动应用
USER appuser
ENTRYPOINT["你的启动命令"]