Docker Composition Wordpress with pure-ftpd - FTP 사용자에게 쓰기 권한이 없습니다.
도커가 처음이라 조금만 참아주세요.
배경: WSL2를 사용하는 Win 10 OS에서 다음과 같은 컨테이너를 설정했습니다.
워드프레스 + 마리아DB + PhpMyAdmin + Pure-ftpd
전체 웹사이트 속도가 느려지기 때문에 프로젝트 파일을 OS로 묶지 않습니다.대신, 저는 제 볼륨을 업데이트하기 위해 pure-ftpd를 사용하고 있습니다.
이 설정이 잘 수행됩니다!ATM 나의 DB는 약 1GB+, 파일은 약 500MB, 업로드는 약 22GB 입니다. *셰프의 키스
문제: FTP를 사용하여 파일을 만들면 "쓰기" 권한이 없습니다.따라서 새 스크립트를 만드는 것이 불가능해집니다.문제 해결 방법이 볼륨으로 이동하여 파일 권한을 "777"로 업데이트했습니다.
pure-ftpd는 사용자 "1000"을 사용하여 파일을 생성하지만 컨테이너에서 사용자를 검색하면 아무것도 반환되지 않습니다.
제가 뭘 놓쳤나 봐요.순수 ftpd가 "wordpress" 볼륨에 "root"으로 쓸 수 있도록 허용하는 YML
이것은 나의 .YML입니다.
services:
#DATABASE
db:
container_name: cc_db
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:10.6.9-focal
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- cc_db:/var/lib/mysql/****_woo
- ./my_customized.cnf:/etc/mysql/my.cnf
ports:
- "3306:3306" # To Allow Remote Connections
restart: always
environment:
- MYSQL_ROOT_PASSWORD=******++
- MYSQL_DATABASE=******
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
networks:
- cc_network
#PHPMYADMIN
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- db
environment:
- UPLOAD_LIMIT=768M
- PMA_HOST:db
- PMA_PORT:3306
- PMA_ARBITRARY:1
- MYSQL_ROOT_PASSWORD=******++
restart: always
ports:
- 8080:80
networks:
- cc_network
#WORDPRESS
wordpress:
container_name: cc_wordpress
#image: wordpress:latest
# Current Website: Wordpress @ 6.0.2 -- PHP 8.1.10 -- Maria DB 10.6.9 :: Post Max Size: 128 MB , PHP Limit 120 :: Max Inpt Var 4500
image: wordpress:6.0.2-php8.1
ports:
- 80:80
restart: always
networks:
- cc_network
environment:
# our local dev environment
- WORDPRESS_DEBUG:1
- WORDPRESS_DB_HOST=db:3306
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=*****
volumes:
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
- ./httpd/wp-config.php:/var/www/html/wp-config.php
- ./httpd/.htaccess:/var/www/html/.htaccess
- cc_wordpress:/var/www/html/wp-content:rw
ftp:
container_name: ftpd-server
image: stilliard/pure-ftpd:hardened
depends_on:
- wordpress
ports:
- 21:21
- 20:20
- 30000-30009:30000-30009
volumes:
- cc_wordpress:/home/user/:rw
- './ftp/pass:/etc/pure-ftpd/passwd'
environment:
PUBLICHOST: "10.47.61.236"
FTP_USER_NAME: "user"
FTP_USER_PASS: "*****++"
FTP_USER_HOME: "/home/user"
ADDED_FLAGS: "--tls=2"
TLS_CN: "**** FTP"
TLS_ORG: "*****"
TLS_C: "US"
MAX_CONNECTIONS: "20"
restart: always
networks:
- cc_network
networks:
cc_network:
volumes:
cc_wordpress:
cc_db:
에 의하면pure-ftpd
당신이 나타낼 수 있는 문서.UID
그리고.GID
적절한 환경 변수를 사용하는 FTP 사용자:
설정하려면
UID
&GID
FTP 사용자의FTP_USER_UID
&FTP_USER_GID
환경 변수.
이 문서는 다음을 사용하는 예를 제공합니다.pure-ftpd
노골적으로 워드프레스로다음을 언급합니다.
워드프레스 컨테이너에서 파일의 소유자는
UID
33
&GID
33
, 이에 따라 FTP 사용자의 UID & GID를 설정하고 다음과 같은 코드 스니플릿을 제공합니다.
version: "3.2"
services:
web:
image: wordpress:4.8-apache
# other configs for wordpress
volumes:
- ./data/wordpress:/var/www/html
ftp:
# optionally replace username/repo:tag with your name and image details
image: stilliard/pure-ftpd:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
environment:
PUBLICHOST: xxx.xxx.xxx.xxx
FTP_USER_NAME: "bob"
FTP_USER_PASS: "foobarqux"
FTP_USER_HOME: "/var/www/html"
FTP_USER_UID: 33
FTP_USER_GID: 33
volumes:
- ./data/wordpress:/var/www/html
- ./data/ftp:/etc/ssl/private
ports:
- target: 21
published: 21
protocol: tcp
mode: host
# Bind each passive ports to the host
- target: 30000
published: 30000
protocol: tcp
mode: host
# ...
당신의 것을 수정해보세요.docker-compose
이에 따라 파일은 다음과 유사한 것으로 추정됩니다.
services:
#DATABASE
db:
container_name: cc_db
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:10.6.9-focal
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- cc_db:/var/lib/mysql/****_woo
- ./my_customized.cnf:/etc/mysql/my.cnf
ports:
- "3306:3306" # To Allow Remote Connections
restart: always
environment:
- MYSQL_ROOT_PASSWORD=******++
- MYSQL_DATABASE=******
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
networks:
- cc_network
#PHPMYADMIN
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- db
environment:
- UPLOAD_LIMIT=768M
- PMA_HOST:db
- PMA_PORT:3306
- PMA_ARBITRARY:1
- MYSQL_ROOT_PASSWORD=******++
restart: always
ports:
- 8080:80
networks:
- cc_network
#WORDPRESS
wordpress:
container_name: cc_wordpress
#image: wordpress:latest
# Current Website: Wordpress @ 6.0.2 -- PHP 8.1.10 -- Maria DB 10.6.9 :: Post Max Size: 128 MB , PHP Limit 120 :: Max Inpt Var 4500
image: wordpress:6.0.2-php8.1
ports:
- 80:80
restart: always
networks:
- cc_network
environment:
# our local dev environment
- WORDPRESS_DEBUG:1
- WORDPRESS_DB_HOST=db:3306
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=*****
volumes:
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
- ./httpd/wp-config.php:/var/www/html/wp-config.php
- ./httpd/.htaccess:/var/www/html/.htaccess
- cc_wordpress:/var/www/html/wp-content:rw
ftp:
container_name: ftpd-server
image: stilliard/pure-ftpd:hardened
depends_on:
- wordpress
ports:
- 21:21
- 20:20
- 30000-30009:30000-30009
volumes:
- cc_wordpress:/home/user/:rw
- './ftp/pass:/etc/pure-ftpd/passwd'
environment:
PUBLICHOST: "10.47.61.236"
FTP_USER_NAME: "user"
FTP_USER_PASS: "*****++"
FTP_USER_HOME: "/home/user"
FTP_USER_UID: 33
FTP_USER_GID: 33
ADDED_FLAGS: "--tls=2"
TLS_CN: "**** FTP"
TLS_ORG: "*****"
TLS_C: "US"
MAX_CONNECTIONS: "20"
restart: always
networks:
- cc_network
networks:
cc_network:
volumes:
cc_wordpress:
cc_db:
이미지를 사용하고 있으며 이는 다음을 기반으로 합니다.php:8.1-apache
. 제가 알기로는 당신이Dockerfile
조정할 필요가 있다고 생각합니다.FTP_USER_UID
그리고.FTP_USER_GID
사용자가 아파치를 실행하는데 사용되는 변수와 일치하는 변수라고 가정합니다.www-data
, Debian 시스템에서 기본적으로 생성됩니다.UID
그리고.GID
33
.
@jccampanero의 훌륭한 답변.도커는 다음과 같은 것을 실행할 수 있다고 덧붙이고 싶습니다.pure-pw useradd yourusername -f /etc/pure-ftpd/passwd/pureftpd.passwd -m -u ftpuser -d /home/ftpusers/youruser
. 또한 문서에 의하면,
생성된 사용자의 uid 또는 gid로 인해 볼륨 권한에 문제가 있는 경우 사용할 uid의 -u 플래그를 변경하거나 그룹 ID로 -g를 지정할 수 있습니다.자세한 내용은 이슈 참조
언급URL : https://stackoverflow.com/questions/74008865/docker-compose-wordpress-with-pure-ftpd-ftp-user-has-no-write-permissions
'IT' 카테고리의 다른 글
게시된 사용자 지정 게시글 수에 따라 워드프레스 작성자 순서 가져오기 (0) | 2023.10.20 |
---|---|
MySQL - 표의 id 필드에 상대가 없는 숫자 목록에서 선택 (0) | 2023.10.20 |
260자 제한에 상관없이 디렉토리 삭제 (0) | 2023.10.20 |
워드프레스:"wp_query" 클래스로 "post_content" 게시물을 검색하는 방법은 무엇입니까? (0) | 2023.10.20 |
AngularJs 블러에서 입력을 다시 렌더링하도록 강제하는 방법 (0) | 2023.10.20 |