У меня есть контейнер Docker с MariaDB и внутри файла Docker для изображения. Я скопировал файл SQL в местоположение в контейнере:
FROM mariadb
RUN mkdir /adhoc_scripts
COPY bootup.sql /adhoc_scripts
После того, как контейнер развернулся, я могу ввести оболочку в контейнер и подтвердить, что файл sql существует в указанном месте:
$ docker exec -it my_mariadb_container bash
root@6e3f4b9abe17:/# ls -lt /adhoc_scripts/
total 4
-rw-r--r-- 1 root root 1839 Apr 10 18:35 bootup.sql
Однако, когда я выхожу из контейнера и пытаюсь вызвать следующую команду:
docker exec -it my_mariadb_container bash \
mysql mydb -u root -prootpass \
< /adhoc_scripts/bootup.sql
Я получаю эту ошибку:
-bash: /adhoc_scripts/bootup.sql: No such file or directory
Что я делаю неправильно?
EDIT1: Я также попытался изменить разрешения /adhoc-scripts
на 777, но это не помогло.
Это связано с тем, что оператор <
работает на всей команде docker exec...
вместо bash mysql...
part.
Сообщение об ошибке ясно: ваш bash (вне контейнера) пытается интерпретировать файл /adhoc_scripts/bootup.sql
.
Чтобы решить эту проблему, попробуйте следующее:
docker exec -it my_mariadb_container bash -c "mysql mydb -u root -prootpass < /adhoc_scripts/bootup.sql"