在 Dockerfile 中添加新用户

在 Dockerfile 中添加新用户

我已经设置了以下 dockerfile,其中我正在创建一个新用户而不是使用 root 用户。

USER root
RUN microdnf --setopt=tsflags=nodocs install -y nginx procps shadow-utils net-tools ca-certificates dirmngr gnupg wget vim\
            && microdnf clean all \
            && rpm -q procps-ng

ENV NGINX_USER="api-gatway" \
    NGINXR_UID="8987" \
    NGINX_GROUP="api-gatway" \
    NGINX_GID="8987"     

RUN set -ex; \
  groupadd -r --gid "$NGINX_GID" "$NGINX_GROUP"; \
  useradd -r --uid "$NGINXR_UID" --gid "$NGINX_GID" "$NGINX_USER" 

#To start up NGINX 
EXPOSE 80
USER $SOLR_USER
CMD ["nginx", "-g", "daemon off;"]

当我执行进入我的docker容器时,它仍然保持为root用户,而不是切换到我创建的新用户。

uk-:api-gateway m$ docker exec -it 828f6d67a004 /bin/bash 
[root@828f6d67a004 /]# 

当我检查 /etc/passwd 文件时,我可以看到用户已创建

api-gatway:x:8987:8987::/home/api-gatway:/bin/bash

我可以通过执行 su 命令切换到我创建的新用户,如下所示:

[root@828f6d67a004 /]# su api-gatway
bash-4.4$ whoami 
api-gatway

我应该在dockerfile中做哪些更改,以便当我运行docker镜像并启动docker容器时,它以用户:api-gatway而不是root身份启动?

答案1

USER $SOLR_USER

该变量未定义,因此可能 Docker 决定以用户身份运行觉得很有趣。

相关内容