gpt4 book ai didi

Dockerfile 入口点无法切换用户

转载 作者:行者123 更新时间:2023-12-02 18:06:10 25 4
gpt4 key购买 nike

我无法从入口点脚本将用户切换到非 root 用户。在 Dockerfile 中更改用户的 User 指令有效,但我无法使用 chmod 更改权限。为了克服这个问题,我创建了 entrypoint.sh更改文件夹权限的脚本,但是当我尝试使用 su 切换用户时命令,它显然不起作用,容器仍在以 root 身份运行。

Dockerfile

FROM php:7.2-fpm

# Installing dependencies
RUN apt-get update && apt-get install -y \
build-essential \
mysql-client \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl

# Installing composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

ENV USER_ID=1000
ENV GROUP_ID=1000
ENV USER_NAME=www
ENV GROUP_NAME=www

RUN groupadd -g $GROUP_ID $GROUP_NAME
RUN useradd -u $USER_ID -ms /bin/bash -g $GROUP_NAME $USER_NAME
RUN mkdir /app
WORKDIR /app

EXPOSE 9000

COPY ./entrypoint.sh /
RUN ["chmod", "+x", "/entrypoint.sh"]
ENTRYPOINT ["/entrypoint.sh"]

入口点.sh文件
#!/bin/bash
if [ -n "$USER_ID" -a -n "$GROUP_ID" ]; then
chown -R $USER_NAME:$GROUP_NAME .
su $USER_NAME
fi

php-fpm

exec "$@"

无论我做什么,我都无法从 entrypoint.sh 脚本切换用户。

我的情况是以非 root 用户身份运行容器。

最佳答案

我认为你的 su 命令应该是这样的

su $USERNAME --command "/doit.sh"

b/c 你的 entrpoiny 脚本正在切换用户,什么都不做,然后切换回 root。

关于Dockerfile 入口点无法切换用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com