如何使Docker容器以非root用户身份运行,并拥有非root用户拥有的工作目录(及其文件)。我可以在各种在线教程中找到的变体由于某种原因而无法使用,/var/www
中的文件仍归root root
所有。
下面是我的Dockerfile
,我使用docker-compose
来构建和运行容器。主机系统是Windows 10。
FROM php:7.4-fpm
ARG user
ARG uid
RUN apt-get update && apt-get install -y \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www
USER $user
答案 0 :(得分:1)
只需添加
RUN chown $user:$user -R /var/www
在您使用WORKDIR指令之前。同样,您可以根据需要更改其他位置的所有权。
答案 1 :(得分:1)
您可以尝试使用此docker文件
FROM php:7.4-fpm
ARG user
ARG uid
RUN apt-get update && apt-get install -y \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
RUN addgroup -g $uid $user && \
adduser -S -G $user -u $uid -h $user
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN chown $user:$user -R /var/www
WORKDIR /var/www
USER $user
需要进行此更改以确保在docker映像中创建了用户
RUN addgroup -g $uid $user && \
adduser -S -G $user -u $uid -h $user
这需要将文件的所有权更改为新用户
RUN chown $user:$user -R /var/www