установка плагина и редактирование файлов от имени пользователя * не root в wordpress docker image - PullRequest
0 голосов
/ 17 апреля 2020

Я начал работать над изображением WordPress docker в локальной среде разработки. Если бы я не изменил никакого разрешения, я мог бы установить плагин, но он не позволил бы мне редактировать файлы WordPress локально; для этого требуется root привилегий

drwxr-xr-x  5 www-data www-data  4096 Apr 16 14:38 wp-content
-rw-r--r--  1 www-data www-data  3940 Feb  5 22:33 wp-cron.php
drwxr-xr-x 21 www-data www-data 12288 Mar 31 13:03 wp-includes

Я прочитал статью , в которой показано, как запускать docker контейнеры от имени пользователя, не являющегося root. Я использую docker -композит. Я начал с WordPress в качестве родительского изображения и нового сценария оболочки base-entrypoint для управления правами доступа к файлу. Скрипт используется с wordpress docker -entrypoint shell script

#base-entrypoint.sh

sed -i -e 's/^exec "$@"/#exec "$@"/g' /usr/local/bin/docker-entrypoint.sh
source /usr/local/bin/docker-entrypoint.sh

USER_ID=${LOCAL_USER_ID:-9001}
echo "Starting with UID : $USER_ID"

if id -u user >/dev/null 2>&1; then
    echo "User alreay exist"
    chown --recursive "$USER_ID" /var/www/html/

    exec "$@"
else 
    echo "User does not exist"
    useradd --shell /bin/bash -u $USER_ID -o -c "" -m user
    export HOME=/home/user

    chown --recursive "$USER_ID" /var/www/html/
    exec /usr/local/bin/gosu user "$@"
fi
FROM wordpress
ENV GOSU_VERSION 1.11
COPY entrypoint-base.sh /usr/local/bin/
RUN # setup gosu here

ENTRYPOINT [ "/usr/local/bin/entrypoint-base.sh" ]
CMD ["apache2-foreground"]

docker -компонован, отредактирован для отображения важных разделов

services:
    db:
        image: mariadb
        restart: always

    wordpress:
        image: imagename #image created using dockerfile
        restart: always
        depends_on:  
            - "db"
        volumes: 
            - ./wordpress:/var/www/html
        ports: 
            - "8000:80"
        environment: 
            LOCAL_USER_ID: 1001

Мне удалось создать нового пользователя, «дере», и иметь возможность редактировать файлы. Текущее разрешение выглядит следующим образом

drwxr-xr-x  4 dere www-data  4096 Mar 31 13:03 wp-content
-rw-r--r--  1 dere www-data  3940 Feb  5 22:33 wp-cron.php
drwxr-xr-x 21 dere www-data 12288 Mar 31 13:03 wp-includes

Проблема заключается в том, что при попытке установить плагин всплывающее окно запрашивает информацию FTP. Я нашел возможное исправление и добавил строку define('FS_METHOD', 'direct') в wp-config.php файл. Всплывающее окно исчезает, но когда я начинаю установку плагина, появляется сообщение «Ошибка установки: не удалось создать каталог». ошибка на панели управления WordPress.

Как обновить то, что у меня есть, чтобы я мог установить плагин и редактировать файлы как пользователь, не являющийся root? Соответствует ли изменение владельца с www-data локальному пользователю? Разбивается ли это, если я перенесу местную разработку в производство? Я добавил репо для полного покрытия кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...