У меня есть файл Dockerfile, который создает образ сервера SQL. Я копирую сценарий создания таблицы SQL в изображение и execs.sh
, который вызывает этот сценарий SQL, используя docker exec -it "execs.sh"
.
Я вижу, что он выдает ошибку, если я вызываю execs.sh
используя "docker exec -it"
, но если я помещаю оболочку в контейнер и запускаю execs.sh
, он работает. Что я делаю не так?
Dockerfile:
FROM microsoft/mssql-server-linux
COPY create_tables.sql .
COPY execs.sh .
# set environment variables
ENV MSSQL_SA_PASSWORD=P@ssw0rd
ENV ACCEPT_EULA=Y
execs. sh содержимое (вызывается из docker exe c -it):
echo "Executing SQL scripts"
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'P@ssw0rd' -i ./create_tables.sql
Скрипт сборки контейнера, его запуск и выполнение команд:
docker build -t mssql_test .
docker run -p 1433:1433 --name mssql2 -d mssql_test
docker exec -it mssql2 "/execs.sh"
docker exec -it mssql2 "ls"
Вывод:
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process
caused "exec format error": unknown
bin create_tables.sql execs.sh lib mnt root srv usr
boot dev home lib64 opt run sys var
etc install.sh media proc sbin tmp