Есть ли доступное изображение, содержащее 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.


Если вы хотите экспортировать набор данных workig на другой сервер, в docker есть команда commit. Эта команда создает новый образ из работающего контейнера.
$ docker commit c3f279d17e0a svendowideit/testimage:version3
Обратите внимание, что при использовании официального образа MySQL каталог данных представляет собой именованный том и, следовательно, находится за пределами файловой системы union. По этой причине docker commit не получает никаких реальных данных, когда вы используете его в официальном контейнере MySQL без некоторых настроек. Вы можете развернуть свой собственный Dockerfile для MySQL или просто изменить каталог данных при запуске на расположение без тома. Это относится к любому контейнеру, использующему тома.
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 runcommand 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, вам нужно проверить это, но да, это может сработать. Однако работа с данными в контейнере остается рискованной.
Это работает. hub.docker.com/r/shantanuo/lamp/~/dockerfile Чем это опаснее, чем сохранение данных на хосте?
@shantanuo, если сервер перезагружается и вам нужно снова запустить докер, ваш контейнер запустится заново, без предыдущих данных. Если вы обнаружите, что ваш контейнер остановлен, вы можете попытаться перезапустить его, но, опять же, наличие данных сомнительно (для проверки). Сохранение диска (через объем) в этом отношении безопаснее.
Можете ли вы уточнить здесь конечную цель? Какую проблему ты пытаешься решить?