권한 문제: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.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-apache
www-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
'source' 카테고리의 다른 글
현재 쿼리에 상대적인 범주 수 가져오기 (0) | 2023.03.28 |
---|---|
왜 Instagram의 페이지 수가 같은 페이지를 반복해서 반환하는 걸까요? (0) | 2023.03.28 |
ASP.NET Core API POST 파라미터는 항상 null입니다. (0) | 2023.03.28 |
Angular에서 배열 내의 객체를 검색해야 합니다. (0) | 2023.03.28 |
angularjs를 사용하여 차트 생성 (0) | 2023.03.28 |