Обновление плагинов wordpress внутри контейнера docker

вот мой сценарий:

Я разрабатываю плагин, который будет изменяться очень часто, мне нужно создать изображение с помощью docker, в котором установить новую версию wordpress, а затем импортировать все базы данных и плагины из среды разработки, (плагин находится на github)

мне удалось установить wordpress на docker с помощью https://github.com/eugeneware/docker-wordpress-nginx

теперь вот мои вопросы:

1 - Есть ли способ изменить файлы и папки wordpress после его установки в docker (для установки плагинов и использования командной строки, а не WordPress GUI)

2-Если я хочу достичь того, что я объяснил выше, что такое Лучший рабочий процесс?

2 ответов


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

во-первых, если вы запускаете контейнер Docker на своем хосте, вы всегда можете приостановить его docker pause создайте новое изображение из контейнера docker commit, затем нажмите его в частный репозиторий docker push (живая установка Wordpress, вероятно, не подходит для общедоступного концентратора докеров). Как только это будет сделано, вы можете возобновить контейнер docker unpause и затем вы можете пойти обновить изображения на вашем система Дэв. Затем вернитесь, как только обновление будет протестировано и все будет хорошо, а затем docker pull образ и перезапустите службу, чтобы она использовала новый образ.

не отличное решение, но оно будет работать.

на основе комментария Тадеуш, Я бы не обязательно запускал всю вашу установку WP с тома данных. Они изменчивы, и если по какой-либо причине ваш контейнер удаляется, и он является единственным, ссылающимся на том данных, то вы теряете все (если вы не храните несколько резервных копий -- you do сохранить несколько резервных копий, верно?)

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

конечно, это осталось в качестве упражнения для вашей системы Дэв.

Ура!


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

Я удобно запускаю это на коробке ec2 t2-micro, и до сих пор он работал отлично. Wordpress, mySQL и Nginx установлены в своих собственных контейнерах (через Docker compose), а Тома Docker используются для поддержания состояния mySQL и Wordpress. Код и дополнительная информация о настройке Nginx взяты из здесь.

докер-сочинять.в формате YML:

version: '3.6'

 services:
    db:
      image: mysql:5.7
      volumes:
        - db_data:/var/lib/mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: db_root_pass
        MYSQL_DATABASE: db
        MYSQL_USER: db_user
        MYSQL_PASSWORD: db_pass
    nginx:
      depends_on:
        - wordpress
      image: nginx:latest
      restart: always
      ports:
        - "80:80"
      volumes:
        - ./nginx.conf:/etc/nginx/nginx.conf
    wordpress:
      depends_on:
        - db
      volumes:
        - wp_data:/var/www/html/wp-content
      image: wordpress:latest
      restart: always
      environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: db_user
        WORDPRESS_DB_PASSWORD: db_pass
 volumes:
    db_data:
    wp_data:

на db_data том сопоставляется с каталогом данных mySQL в контейнере mySQL и wp_data том сопоставляется с каталогом содержимого Wordpress в контейнере Wordpress. Что вы можете сделать, это настроить CLI для записи в wp_data каталог на хосте, и эти изменения будут выявлены на сайте Wordpress без необходимости перестраивать какие-либо контейнеры!