62
задан 10 May 2017 в 00:21

9 ответов

Я, может казаться, не делаю эту работу с последним mysql или mysql:5.7. Таким образом, я использую mariaDB вместо этого. Вот мой docker-compose.yaml код.

version: '3'

services:
  mysql:
    image: mariadb:10.3
    container_name: mariadb
    volumes:
      - container-volume:/var/lib/mysql
      - ./dump.sql:/docker-entrypoint-initdb.d/dump.sql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: name_db
    ports:
      - "3306:3306"

volumes:
  container-volume:
38
ответ дан 31 October 2019 в 13:04

можно скопировать файл экспорта для, например, dump.sql использование CP докера в контейнер и затем импортировать дб. при необходимости в полных инструкциях сообщите мне, и я обеспечу

0
ответ дан 31 October 2019 в 13:04

объединение https://stackoverflow.com/a/51837876/1078784 и ответы в этом вопросе, я думаю, что лучший ответ:

cat {SQL FILE NAME} | docker exec -i {MYSQL CONTAINER NAME} {MYSQL PATH IN CONTAINER} --init-command="SET autocommit=0;"

, например, в моей системе эта команда должна быть похожей:

cat temp.sql | docker exec -i mysql.master /bin/mysql --init-command="SET autocommit=0;"

также можно использовать объем плазмы для контролирования прогресса:

cat temp.sql | pv | docker exec -i mysql.master /bin/mysql --init-command="SET autocommit=0;"

И самая важная вещь здесь "-init-команда", которая ускорит прогресс импорта 10 раз быстро.

1
ответ дан 31 October 2019 в 13:04

Я могу импортировать с этой командой

docker-compose exec -T mysql mysql -uroot -proot mydatabase < ~/Desktop/mydatabase_2019-10-05.sql
0
ответ дан 31 October 2019 в 13:04

Можно импортировать базу данных впоследствии:

docker exec -i mysql-container mysql -uuser -ppassword name_db < data.sql

115
ответ дан 31 October 2019 в 13:04

Другая опция, если Вы не хотите монтировать объем, но хотеть вывести файл от Вашей локальной машины, состоит в том, чтобы передать по каналу cat yourdump.sql. Как так:

cat dump.sql | docker exec -i mysql-container mysql -uuser -ppassword db_name

См.: https://gist.github.com/spalladino/6d981f7b33f6e0afe6bb

22
ответ дан 31 October 2019 в 13:04

Можно выполнить контейнер, устанавливающий общий каталог (-v объем), и затем работать, избивают тот контейнер. После этого можно в интерактивном режиме использовать mysql-клиент для выполнения .sql файла из контейнера. obs:/my-host-dir/shared-dir .sql местоположение в хост-системе.

docker run --detach --name=test-mysql -p host-port:container-port  --env="MYSQL_ROOT_PASSWORD=my-root-pswd" -v /my-host-dir/shared-dir:/container-dir mysql:latest


docker exec -it test-mysql bash

Внутренняя часть контейнер...

mysql -p < /container-dir/file.sql 

Пользовательские параметры:

  • тест-mysql (контейнерное имя)
  • серверный порт и контейнерный порт
  • my-root-pswd (mysql пароль root)
  • /my-host-dir/shared-dir и /container-dir (каталог хоста, который будет смонтирован в контейнере и контейнерном местоположении общего каталога)
0
ответ дан 31 October 2019 в 13:04

Импорт с помощью докер - сочиняет

cat dump.sql | docker-compose exec -T <mysql_container> mysql -u <db-username> -p<db-password> <db-name>
9
ответ дан 31 October 2019 в 13:04

Смонтируйте свой sql-дамп под /docker-entrypoint-initdb.d/yourdump.sql, использование объема монтируется

mysql:
  image: mysql:latest
  container_name: mysql-container
  ports:
    - 3306:3306
  volumes:
    - ./dump.sql:/docker-entrypoint-initdb.d/dump.sql
  environment:
    MYSQL_ROOT_PASSWORD: secret
    MYSQL_DATABASE: name_db
    MYSQL_USER: user
    MYSQL_PASSWORD: password

, Это инициирует импорт sql-дампа во время запуска контейнера, видеть https://hub.docker.com/_/mysql / при "Инициализации нового экземпляра"

64
ответ дан 31 October 2019 в 13:04

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

Похожие вопросы: