source

권한 문제:Wordpress와 함께 사용할 Windows용 도커 권한을 설정하는 방법

lovecheck 2023. 3. 28. 21:54
반응형

권한 문제:Wordpress와 함께 사용할 Windows용 도커 권한을 설정하는 방법

문제

I'm trying to setup my developing environment using Docker for Windows for use with Wordpress. I'm using docker compose with a custom Dockerfile. This works perfectly on MacOS. Using the exact same docker setup on Windows though gets me these messages within Wordpress.

미디어 업로드 시도 중 미디어 업로드 시도 중

Wordpress 업데이트 시도 중 Wordpress 업데이트 시도 중

Worpress는 올바른 파일 권한을 가지고 있지 않습니다.

내가 시도한 것

1. 도커의 Windows 설정 확인 및 WSL 2로의 업그레이드

현재 WSL 2 기반 엔진을 사용하고 있습니다.이 엔진은 시스템상의 모든 파일에 대해 완전한 루트 권한을 부여합니다.Hyper-V 기반의 백엔드(물론 올바른 파일 권한 설정)를 처음 사용했을 때와 마찬가지로 WPL 2로 업그레이드하여 문제를 해결하려고 했습니다.운이 없다.

2. 의실실 2chmod ★★★★★★★★★★★★★★★★★」chown

먼저 '아까보다'를 넣었습니다.chmod -R 777 /var/www/html/도커파일로 이동합니다.제가 아는 한, 모든 파일 권한을 root에 부여해야 합니다.그것은 아무런 효과가 없었다.그럼 다른 사용자를 사용하고 있는 건가요? " " "whoami츠키노
내가 잘못해서 사용자가 다른 사람인지도 몰라. 덧붙였습니다.chown -R www-data:www-data /var 및 groupwww-data가 이이없없없없

.chmod -R 777 /var/www/html/wp-content/uploads/재미있게에러가 발생했습니다.chmod: cannot access '/var/www/html/wp-content/uploads/': No such file or directory폴더는 링크했지만, 이것으로 동작합니다(IntelliJ의 폴더 구조를 보면, 파일은 실제로 /var/www/html에 있는 것을 알 수 있습니다.-R옵션은 이 재귀가 되도록 하기 때문에 문제가 되지 않습니다.

3. 컨테이너가 가동 중인 동안 이 모든 작업을 수행합니다.

파일이 아직 없어서 권한을 할당할 수 없었습니다.그래서 저는 컨테이너가 실제로 가동되고 있을 때에도 이 모든 것을 시도했습니다.다시 말하지만, 운이 없군.

사용자로서 4. 로서 실행.root

먼저 '아까보다'를 넣었습니다.user: root까지 보내드립니다.docker-compose.yml이이없없없없
에 제가 덧붙였습니다.USER root파일 바로 에 있는 도커 파일로 합니다.FROM php:7.4-apache이이없없없없

5. Wordpress 공식 이미지 사용

아래와 같이 아파치 이미지를 Docker 파일의 기반으로 사용하고 있습니다.를 직접 .docker-compose.yml파일 를 사용해 .FROM: wordpress:latest도커 파일 상단에 있습니다.둘다다 다건 건한건건

내 파일

지금까지 인터넷에서 찾을 수 있는 모든 해결책을 시도해 봤지만 아무 것도 효과가 없었다.말도 안 되는 일이지만, MacOS에서는 이 모든 것이 잘 작동합니다.여기 내 도커 파일들인데, 너희들이 날 도와줄 수 있으면 좋겠어.

docker-param.yml

services:
  web:
    build:
      context: ./
      dockerfile: .docker/Dockerfile
    container_name: wolfpackvision.com
    ports:
    - "8080:80"
    volumes:
    - .:/var/www/html

도커 파일

FROM php:7.4-apache

#USER root

RUN apt-get update
RUN docker-php-ext-install mysqli

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

## Install PHP-GD
RUN apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev \
    && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
    && docker-php-ext-install gd

## Install xdebug
RUN apt-get install --assume-yes --fix-missing git libzip-dev libmcrypt-dev openssh-client \
    libxml2-dev libpng-dev g++ make autoconf \
    && docker-php-source extract \
    && pecl install xdebug redis \
    && docker-php-ext-enable xdebug redis \
    && docker-php-source delete \
    && docker-php-ext-install pdo_mysql soap intl zip

## Configure xdebug
RUN echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.idekey=wolfpackvision.com" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    && echo "xdebug.remote_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

## Enable mod_rewrite http://httpd.apache.org/docs/current/mod/mod_rewrite.html & mod_headers http://httpd.apache.org/docs/current/mod/mod_headers.html
RUN a2enmod rewrite \
    && a2enmod headers

## Give Full folder permissions to server
#RUN chown -R www-data:www-data /var/www/html
#RUN chmod -R 777 /var/www/html/
#RUN chmod -R 777 /var/www/html/wp-content/uploads/
#RUN chmod -R 777 /var/www/html/
#RUN chmod -R 766 /var/www/html/

## Copy php.ini over
COPY ./.docker/php/php.ini /usr/local/etc/php

## Cleanup
RUN rm -rf /tmp/*

777에 대해 경고하지 마세요.그건 알고 있어요.이것은 모두 엄밀하게 로컬이며, 저는 이것을 생산에 절대 사용하지 않을 것입니다.또한 권한이 작동되면 조일 수도 있습니다.우선 나는 그것이 작동하기를 원한다.

편집

In response to @user969068.
`docker exec -it ps aux` gives me:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.0  90652 28568 ?        Ss   11:04   0:00 apache2 -DFOREG
www-data    16  0.0  0.0  90684  8176 ?        S    11:04   0:00 apache2 -DFOREG
www-data    17  0.0  0.0  90684  8176 ?        S    11:04   0:00 apache2 -DFOREG
www-data    18  0.0  0.0  90684  8176 ?        S    11:04   0:00 apache2 -DFOREG
www-data    19  0.0  0.0  90684  8176 ?        S    11:04   0:00 apache2 -DFOREG
www-data    20  0.0  0.0  90684  8176 ?        S    11:04   0:00 apache2 -DFOREG
root        21  0.0  0.0   7640  2708 pts/0    Rs+  11:06   0:00 ps aux

저는 이미 PID 21, 1, 16으로 당신이 추천한 것을 하려고 했습니다.이 세 가지 결과 모두 동일한 파일 권한이 없습니다.내가 뭘 놓쳤지?

것 .php:7.4-apachewww-data한다.(「 」( 「 7 . 4 - 」( 「7.4-」)

docker run -d php:7.4-apache

그리고 실행보다

docker exec -it YOUR_IMAGE_HASH ps aux

보여줘야 돼요.www-data실행 중인 프로세스의 사용자 열 아래에 있습니다. 사용자를도커 파일을 할 수 .

FROM php:7.4-apache
.....
ARG user_id=1000
RUN usermod -u $user_id www-data

WSL에 대한 전문가는 아니지만, 당신의 문제는 컨테이너 안에 있는 것이 아니라 호스트 권한 문제인 것 같습니다.에 쓸 수 ..디렉토리(디렉토리)를 합니다).docker-compose를 참조해 주세요.

다음은 관련된 몇 가지 문제입니다.

Docker 프로세스가 어떤 사용자로부터 실행되었는지 확인하고 이 사용자로부터 디렉토리에 쓰려고 합니다.또한 명명된 볼륨을 사용할 것을 권장합니다.새로 생성된 볼륨은 기본적으로 윈도우즈 호스트에서 R/W 권한이 있어야 합니다.

도커 버그와 관련된 문제이며, 그 중 일부는 여기에 설명되어 있습니다.

기본적으로 윈도 볼륨은 파일의 원래 권한을 존중하지 않고 컨테이너가 초기화된 후 변경 시 root에 모든 것을 할당한다는 것입니다.저는 다른 CMS와 비슷한 문제가 있었고, 최종적으로 apache를 root으로 실행하여 파일을 읽을 수 있도록 하기로 결정했습니다.그리고 보통 제작에 있어서 어떻게 하면 좋은지 아이디어를 얻을 수 있었습니다.

도와주셔서 고마워요.이 문제는 도커와는 아무런 관련이 없는 것으로 밝혀졌습니다.WordPress는 호스트 폴더 구조 내에서 업로드 디렉토리를 찾도록 구성되었으며, 모든 것을 /wp-content/uploads로 설정했습니다.

어쨌든 도와주셔서 감사합니다!

저도 맥에 똑같은 문제가 있어서 이렇게 했어요.이것은 이 질문에 대한 답은 아니지만, 누군가에게 도움이 될 수도 있습니다.MacOS 사용 지원

sudo chown - R 사용자명 / Users / Username / . docker / contexts

언급URL : https://stackoverflow.com/questions/63791282/permission-problem-how-to-setup-permissions-on-docker-for-windows-for-use-with

반응형