Изображение Wordpress с данными MySQL

Есть ли доступное изображение, содержащее wordpress вместе с данными mysql? Когда я фиксирую и делаю резервную копию образа, данные mysql не включаются. Я предпочитаю одно изображение для обоих. Я попытался создать такой образ с помощью этого Dockerfile:

FROM tutum/lamp:latest
RUN rm -fr /app && git clone https://github.com/WordPress/WordPress.git /app
EXPOSE 80 
CMD ["/run.sh"]

Я могу запустить новую установку с помощью такой команды ...

docker run -p 88:80 shantanuo/wp

Но контейнер нельзя переместить на другой сервер «как есть». Мне нужно сделать резервную копию данных с помощью команды mysql-дамп, и я пытаюсь этого избежать. Является ли это возможным?


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

https://hub.docker.com/r/shantanuo/lamp/~/dockerfile/

Но на новом сервере это не работает. Добавление тега wordpress.

Можете ли вы уточнить здесь конечную цель? Какую проблему ты пытаешься решить?

bluescores 08.06.2018 14:15
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
1
440
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы хотите экспортировать набор данных workig на другой сервер, в docker есть команда commit. Эта команда создает новый образ из работающего контейнера.

$ docker commit c3f279d17e0a svendowideit/testimage:version3

Документация.

Обратите внимание, что при использовании официального образа MySQL каталог данных представляет собой именованный том и, следовательно, находится за пределами файловой системы union. По этой причине docker commit не получает никаких реальных данных, когда вы используете его в официальном контейнере MySQL без некоторых настроек. Вы можете развернуть свой собственный Dockerfile для MySQL или просто изменить каталог данных при запуске на расположение без тома. Это относится к любому контейнеру, использующему тома.

bluescores 08.06.2018 14:03
Ответ принят как подходящий

Is there any image available that contain wordpress along with mysql data?

Краткий ответ: не рекомендуется.

Изображение обычно связано с сервисом один (поэтому здесь будут задействованы два изображения: wordpress и MySQL)

И постоянные данные будут не «в» изображении, а на хосте в объем / привязать крепление.

Например, tutumcloud/lamp образ объявляет тома:

# Add volumes for MySQL 
VOLUME ["/etc/mysql", "/var/lib/mysql" ]

The docker run command initializes the newly created volume with any data that exists at the specified location within the base image.

Создавая свой собственный образ без, эти строки могут работать так, как вы ожидаете (т. Е. Зафиксировать контейнер с участием его данных) .
Но если сервер перезагрузится в любое время или вам придется снова запустить докер исходный контейнер, он запустится заново, без данных.


Типичный образ докер WordPress будет использовать MySQL один

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

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

docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql \
           -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

См., Например, "Быстрый старт: Compose и WordPress"

Таким образом, вы должны зафиксировать не только изображение Wordpress, но и изображение Mysql, а также вашего тома.

Однако фиксация тома не поддерживается: см. «Зафиксируйте содержимое смонтированных томов», чтобы сделать резервную копию этого тома с вашей базой данных WordPress в нем.

С этими тремя резервными копиями вы затем переносите их на другой сервер.


Однако это кажется слишком сложным, и новый проект докеров WordPress / MySQL на втором сервере запустить легче. Тогда вам понадобится, да, файл дампа вашей базы данных. И некоторые другие папки Wordpress (например, темы)

См. "Легкая миграция WordPress с помощью Docker" .
Это был бы рекомендуемый способ вместо попытки зафиксировать существующие контейнеры с одного сервера и «трансплантировать» их на другой сервер.

Будет ли работать, если я закомментирую строку 39 на этой странице ... github.com/tutumcloud/lamp/blob/master/Dockerfile и выставлю только порт 80 (а не 3306)?

shantanuo 08.06.2018 09:53

@shantanuo, вам нужно проверить это, но да, это может сработать. Однако работа с данными в контейнере остается рискованной.

VonC 08.06.2018 18:38

Это работает. hub.docker.com/r/shantanuo/lamp/~/dockerfile Чем это опаснее, чем сохранение данных на хосте?

shantanuo 09.06.2018 03:01

@shantanuo, если сервер перезагружается и вам нужно снова запустить докер, ваш контейнер запустится заново, без предыдущих данных. Если вы обнаружите, что ваш контейнер остановлен, вы можете попытаться перезапустить его, но, опять же, наличие данных сомнительно (для проверки). Сохранение диска (через объем) в этом отношении безопаснее.

VonC 09.06.2018 05:55

Другие вопросы по теме