gpt4 book ai didi

sql-server - Docker容器执行错误

转载 作者:行者123 更新时间:2023-12-02 19:16:36 25 4
gpt4 key购买 nike

我有一个构建SQL Server镜像的Dockerfile。我将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 exec -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

最佳答案

您在脚本顶部缺少解释器。当从bash或sh这样的shell运行该脚本时,它假定您要使用当前shell作为shell脚本运行它。但是,当您与操作系统执行程序一起运行时,没有 shell 会假设您要如何运行它。因此,您需要在脚本的第一行中执行以下操作:

#!/bin/sh
并确保这是使用Linux换行而不是Windows换行完成的,否则它将为您提供一个找不到的文件。

关于sql-server - Docker容器执行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63225039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com