Php Dockerfile chown命令无法更改容器文件夹权限
我试过下面的帖子 但是Dockerfile没有将/var/www的权限更改为www:www 因为所有php artisan命令都失败了 知道为什么容器的文件夹权限保持不变吗Php Dockerfile chown命令无法更改容器文件夹权限,php,laravel,docker,docker-compose,chown,Php,Laravel,Docker,Docker Compose,Chown,我试过下面的帖子 但是Dockerfile没有将/var/www的权限更改为www:www 因为所有php artisan命令都失败了 知道为什么容器的文件夹权限保持不变吗 FROM php:7.2-fpm # Copy composer.lock and composer.json COPY composer.lock composer.json /var/www/ # Set working directory WORKDIR /var/www # Install dependenc
FROM php:7.2-fpm
# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/
# Set working directory
WORKDIR /var/www
# Install dependencies
RUN apt-get update && apt-get install -y \
build-essential \
mariadb-client \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
# Copy existing application directory contents
COPY . /var/www
# Copy existing application directory permissions
COPY --chown=www:www . /var/www
#RUN chown -R www:www /var/www
# Change current user to www
USER www
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
服务器Debian9
下线未按预期工作
复制--chown=www:www/var/www从上面给定的Dockerfile中,您的三个命令位于命令的上方
COPY--chown=www:www/var/www
实际上是使用root用户创建目录/var/www
,因为Dockerfile中的命令是作为root用户运行的
执行此操作的命令是——
# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/
# Set working directory
WORKDIR /var/www
# Copy existing application directory contents
COPY . /var/www
一旦我们了解到这些命令是以root用户身份运行的,就有很多方法可以在Dockerfile中解决这个问题。
遵循以下步骤,这些可能是解决问题的方法之一
COPY composer.lock composer.json/var/www/
并给予正确的许可。确保你只做这个
创建要向其分配权限的用户后
文件夹拷贝/var/www
此处的命令原因
您正在对chown使用高级复制命令,这将需要
注意使用chown中设置的权限复制所有文件(www
就你而言)WORKDIR
您可以在末尾或之后执行COPY--chown
在上面给定的Dockerfile中,在命令
COPY--chown=www:www上面有三个命令/var/www
实际上是使用root用户创建目录/var/www
,因为Dockerfile中的命令是作为root用户运行的
执行此操作的命令是——
# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/
# Set working directory
WORKDIR /var/www
# Copy existing application directory contents
COPY . /var/www
一旦我们了解到这些命令是以root用户身份运行的,就有很多方法可以在Dockerfile中解决这个问题。
遵循以下步骤,这些可能是解决问题的方法之一
COPY composer.lock composer.json/var/www/
并给予正确的许可。确保你只做这个
创建要向其分配权限的用户后
文件夹拷贝/var/www
此处的命令原因
您正在对chown使用高级复制命令,这将需要
注意使用chown中设置的权限复制所有文件(www
就你而言)WORKDIR
您可以在末尾或之后执行COPY--chown
你能提供更多的信息吗?你能提供更多的信息吗?