Я не могу переключить пользователя на пользователя без полномочий root из сценария точки входа.Директива User для изменения пользователя в Dockerfile работает, но я не могу изменить разрешения с помощью 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"]
Файл Entrypoint.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.