Как изменить права доступа к файлу на ElasticBeanstalk до создания образа докера? - PullRequest
0 голосов
/ 20 февраля 2019

Я развертываю образ Docker (Wordpress) на Elastic Beanstalk, используя одно развертывание контейнера.

Мой zip-файл развертывания включает в себя:

  • public папка, содержащая полный WordPressbuild
  • Dockerfile
  • .ebextensions/permissions.config

Стандартное изображение Wordpress создает том VOLUME /var/www/html, и в моем Dockerfile я делаю

COPY ./public /var/www/html

Теперь проблема в том, что я не могу загрузить медиафайл с помощью панели администратора Wordpress.

Unable to create directory wp-content/uploads/2019/02. Is its parent directory writable by the server?

Я пытался изменить разрешения для папки загрузкииспользуя конфигурацию EB в .ebextensions/permissions.config

container_commands:
  91writable_dirs:
    command: | 
        chmod -R 777 /var/app/current/public/wp-content/uploads
    cwd: "/var/app/current"

Из журналов видно, что образ докера создается перед запуском chmod.Я видел в других сообщениях SO, что некоторые запускают скрипт на /var/app/ondeck/, но это не с the directory doesn't exist

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

РЕДАКТИРОВАТЬ: Когда я присоединяю оболочку к док-контейнеру и меняю права доступа к файлу wp-content/uploads в VOLUME /var/www/html, я могу загружать медиа.Так, как это может быть сделано постоянным на ОБЪЕМЕ?

1 Ответ

0 голосов
/ 21 февраля 2019

Всякий раз, когда образ докера WordPress создается и запускается, в первую очередь запускается док-станция ENTRYPOINT образа WordPress.Следовательно, ваша команда для изменения прав доступа к каталогу не выполняется.

Этот ENTRYPOINT является сценарием bash, расположенным в /usr/local/bin/docker-entrypoint.sh

Если вы хотите, чтобы ваша команда выполнялась, вы можете добавить еек этому сценарию, и он будет вызываться каждый раз при запуске вашего контейнера.

Вы можете сделать это следующим образом -

  • Запустите свой контейнер и скопируйте содержимое существующегоdocker-entrypoint.sh

  • Создайте новый docker-entrypoint.sh вне контейнера и отредактируйте
    этот скрипт, чтобы добавить вашу команду chmod в соответствующем месте.

  • В вашем Dockerfile добавьте строку, чтобы скопировать эту новую точку входа в
    местоположение /usr/local/bin/docker-entrypoint.sh

...