SQL Server on Linux for Docker を使っていて次のようなエラーに遭遇しました。
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..
悲しい…。
SQL Serverを起動して、初期DBやテーブルを作成したいと思って、次のようなDockerfileを書きました。
FROM mcr.microsoft.com/mssql/server:2017-latest
RUN sqlcmd -Q ‘CREATE Database test’ -E
EXPOSE 1433
これ原因がわからなくて、ムッシュに教えてもらいました。
単純な話で、「RUN」でコマンドを実行するタイミングでは、まだSQL Serverが起動してないのです。
起動してないのに、コマンド実行しようとしても動作しませんよね。
IgniteのBRK0417「Inside SQL Server Containers」でも言及されていましたね。
なので対応方法もセッションで紹介されている方法でOKです。