ฉันต้องการเรียกใช้สคริปต์ sql บนการตั้งค่าคอนเทนเนอร์ MS SQL

ถ้าฉันทำทุกอย่างแยกกัน ทั้งหมดก็ใช้ได้ดี:

  1. เรียกใช้คอนเทนเนอร์ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password" -p 1434:1433 --name ms-sql -d mcr.microsoft.com/mssql/server:2019-latest

  2. เชื่อมต่อกับคอนเทนเนอร์ docker exec -it ms-sql "bash"

  3. เรียกใช้SQL /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Password' -Q 'create database TestDB12'

แต่ถ้าลองทำแบบเดียวกันตอนสร้างคอนเทนเนอร์

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password" -p 1434:1433 --name ms-sql -d mcr.microsoft.com/mssql/server:2019-latest sh -c "/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Password' -Q 'create database TestDB12'"

sqlcmd ไม่สามารถเข้าสู่ระบบด้วยข้อผิดพลาด

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2749.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
answer

การให้sh -c "/opt/mssql-tools/bin/sqlcmd ...คำสั่ง run เป็นการแทนที่คำสั่งที่เริ่มต้นเซิร์ฟเวอร์ SQL ในคอนเทนเนอร์ด้วยsqlcmdคำสั่ง

เซิร์ฟเวอร์ไม่เริ่มทำงานภายในคอนเทนเนอร์ คุณต้องเริ่มการทำงานก่อนและเรียกใช้คำสั่งของคุณหลังจากเสร็จสิ้นการเริ่มต้นระบบ