У меня есть беговые контейнеры. Поэтому мне нужно импортировать базы данных SQL и попробовать
docker-compose exec MYSQL_CONTAINERNAME mysql -uroot -p --database=MY_DB < /code/export_new.sql
Но у меня есть сообщение "docker-compose exec -i MYSQL_CONTAINER NAME mysql -uroot -p --database = MY_DB </code/export_new.sql" Если я использую "-i" или "-T" или "[ CN00] t "после команды"... exec "У меня есть сообщение:
Usage: exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
Options:
-d, --detach Detached mode: Run command in the background.
--privileged Give extended privileges to the process.
-u, --user USER Run the command as this user.
-T Disable pseudo-tty allocation. By default 'docker-compose exec'
allocates a TTY.
--index=index index of the container if there are multiple
instances of a service [default: 1]
-e, --env KEY=VAL Set environment variables (can be used multiple times,
not supported in API < 1.25)
-w, --workdir DIR Path to workdir directory for this command.
Как я могу импортировать свой "export_new.sql" в mysql, который помещен в контейнер?
Использование docker-compose exec
как это не помогло (не знаю почему), но вы можете использовать docker exec
. Вам просто нужно знать имя или идентификатор контейнера. Имя отображается во время docker-compose up
или вы можете узнать, используя docker-compose ps
.
Вот пример команды:
docker exec -i MYSQL_CONTAINERNAME mysql databasename < data.sql
Или вы можете комбинировать docker-compose ps
в нем, так что вам нужно знать только короткое имя (определенное в файле docker-compose.yml):
docker exec -i $(docker-compose ps -q MYSQL) mysql databasename < data.sql
Также обратите внимание, что у меня возникли проблемы с использованием вышеуказанных команд с флагом -p, чтобы он запрашивал пароль в интерактивном режиме, но он работал, когда я передавал пароль в начальной команде (например, mysql -uroot -pmypwd
).
Работал для меня с
docker-compose exec -T MYSQL_CONTAINERNAME mysql databasename < data.sql
Итак, сначала вам нужно подключиться к вашему запущенному экземпляру mysql. Вы можете сделать это с помощью этой команды:
docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
в этой команде измените строку some-mysql
с именем вашего фактического контейнера. Переменные соответствуют:
Затем вы сможете выполнять команды непосредственно на вашем экземпляре mysql, co будет достаточно ввести:
MY_DB < /code/export_new.sql
Для получения любых сведений об устранении неполадок или хорошего источника информации, пожалуйста, прочитайте здесь изображение mysql docker: https://hub.docker.com/_/mysql/