Я начал работать над изображением 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 локальному пользователю? Разбивается ли это, если я перенесу местную разработку в производство? Я добавил репо для полного покрытия кода