我已经设置了以下 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 决定以用户身份运行它觉得很有趣。