2015-12-16 10 views
0

Я создал файл database.sql и добавлен в папку внутри контейнера, чтобы он мог использоваться приложением. Я хочу, чтобы мои данные оставались постоянными, даже когда мой контейнер удален. Я пытался использовать volume.But как добавить файл .sql и сделать этот файл согласованным.сохранить данные внутри базы данных с помощью докеров

Судо докер -v/каталогу_данное SQLdb в Lazarus

здесь, SQLdb в Lazarus этого имя изображения базы данных и каталогу_данная папка монтирования.

Dockerfile из SQLdb в Lazarus:

ОТ убунту: последняя

RUN APT-получить обновление RUN APT-получить обновление -y

RUN APT-получить -y установить MySQL-клиент MySQL-сервер curl ADD ./my.cnf /etc/mysql/my.cnf

RUN sed -i -e "s/^ bind-address \ s * = \ s * 127.0.0.1/bind-address = 0.0. 0,0/"/etc/mysql/my.cnf

ADD database.sql /var/db/database.sql

суперпользователя ENV ENV Пароль ENV URL файла: /var/db/database.sql ENV право ПИШИТЕ

ADD ./start -database.sh /usr/local/bin/start-database.sh RUN CHMOD + х /usr/local/bin/start-database.sh ПОДВЕРГАТЬ 3306

CMD [ "/ USR/местные/бен/start-database.sh "]

start-database.sh fi ле

!/bin/Баш

Этот скрипт запускает сервер базы данных.

эхо "Создание пользователя $ пользователя для баз данных, загруженных из $ URL" подготовлена ​​база данных

Импорт, если осуществляется через 'Docker запустить --env URL = "HTTP: /ex.org/db.sql"'

эхо "Добавление данных в MySQL" /USR/SBIN/туздЫ & сна 5 завитка $ URL -o import.sql

Закрепление некоторые экспортные phpmysqladmin проблемы

sed -ri.bak/- База данных: (. *?)/CREATE DATABASE \ 1; \ nUSE \ 1;/g 'import.sql

Исправление некоторых проблем с экспортом mysqldump (при запуске без - базы данных переключения)

Это не тестируется до сих пор

если Grep -q "CREATE DATABASE" import.sql; тогда :; else sed -ri.bak 's/- MySQL dump/CREATE DATABASE database_1; \ nUSE database_1; \ n-- MySQL dump/g' import.sql; fi

mysql --default-character-set = utf8 < импорт.SQL гт import.sql mysqladmin выключение эхо "закончил"

Теперь предоставленные учетные данные добавлены

/USR/SBIN/туздЫ & сон 5 эхо "Создание пользователя" эхо «CREATE USER '$ user' IDENTIFIED BY '$ password' "| mysql --default-character-set = utf8 echo "REVOKE ALL PRIVILEGES ON . FROM '$ user' @ '%'; FLUSH PRIVILEGES" | mysql --default-character-set = utf8 echo "GRANT SELECT ON . TO '$ user' @ '%'; FLUSH PRIVILEGES" | mysql --default-character-set = utf8 echo "finished"

if ["$ right" = "WRITE"]; затем эхо "добавление доступа для записи" эхо "ГРАНТ ВСЕ ПРИВИЛЕГИИ НА . TO '$ user' @ '%' с опцией ГРАНТА, ФЛЮЗЫ ПРИВИЛЕГИИ" | MySQL --default-символьный набор = utf8 фи

И мы перезагрузить сервер, чтобы перейти эксплуатационным

mysqladmin выключение сП /var/db/database.sql/вар/Библиотека/грузчик/объем/mysqlvol /database.sql echo «Запуск MySQL Server» /usr/sbin/mysqld

ответ

0

Чтобы сохранить данные, даже если контейнер удален, используйте тома. Для получения дополнительной информации смотрите на:

Я надеюсь, что помогает. Если нет, спрашивайте.

+0

У меня есть моя база данных в/var/lib/mysql folder.how, я могу связать контейнер приложения с ним, чтобы он мог использовать мою существующую базу данных. – vicky

+0

как я могу добавить данные var/lib/mysql в мой том, т.е. var/lib/docker/тома/mysqlvol ... – vicky

+0

Вам нужно добавить что-то вроде 'VOLUME/data/mysql' в ваш файл докеров, а затем запустить контейнер с '-v/var/lib/mysql:/data/mysql: rw'. Это должно монтировать ваши данные mysql в контейнер под '/ data/mysql' – Fuxi

 Смежные вопросы

  • Нет связанных вопросов^_^