Я создал файл 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
У меня есть моя база данных в/var/lib/mysql folder.how, я могу связать контейнер приложения с ним, чтобы он мог использовать мою существующую базу данных. – vicky
как я могу добавить данные var/lib/mysql в мой том, т.е. var/lib/docker/тома/mysqlvol ... – vicky
Вам нужно добавить что-то вроде 'VOLUME/data/mysql' в ваш файл докеров, а затем запустить контейнер с '-v/var/lib/mysql:/data/mysql: rw'. Это должно монтировать ваши данные mysql в контейнер под '/ data/mysql' – Fuxi