本記事を書いた動機
先日、立ち寄った書店にて次の書籍を購入した。
『C#ユーザーのためのWebアプリ開発パターン』(伊藤 稔 著/大田 一希 著/小山 崇 著/辻本 海成 著/久野 太三 著/赤間 信幸 著/赤間 信幸 監修/井上 章 著/井上 章 監修)(インプレス)
現在、手を動かしながら読み進めているところだが、序盤で詰まる箇所に遭遇した。
挫折者を一人でも減らすため、著作権に触れない範囲で解決方法を共有することにした。
この書籍(以下、本書とする)は、事前に準備した SQL Server をDBとして利用し、C#のBlazorをハンズオン形式で効率良く学べる構成となっている。
裏を返せば、最初に SQL Server を立てなければハンズオン形式で学ぶことが出来ないとも言える。
本書では付録として SQL Server の構築方法が複数紹介されている。
そのうちのひとつである「カスタムDockerイメージを作成・利用する」構築方法に関して、いくつか詰まってしまったポイントがあった。
具体的には、本書記載のGitリポジトリ内にあるDockerfileが私の環境では動作しなかった。
環境
Windows 11 Pro: 22H2
Docker Desktop: v4.32.0
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.9.6
修正点1:
コピーするファイルの拡張子がDockerfileの記述と一致していないため、ファイルの拡張子を .sql
から .txt
に変更する。もしくはDockerfileを書き換えることで一致させる。
修正点2:
sqlcmdが格納されているディレクトリが存在しないのでDockerfileを修正する。
修正前:/opt/mssql-tools/bin/sqlcmd
修正後:/opt/mssql-tools18/bin/sqlcmd
修正点3:
sqlcmdでサーバー証明書を信頼する(Trust Server Certificate)オプションを追加する。(-C
)
修正前だと以下のようなエラーが吐かれる。
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate].
修正後のコマンドは以下のようになる。
/opt/mssql-tools18/bin/sqlcmd -C -S127.0.0.1 ...
その他
なお、SQL Serverを利用する上で、環境変数としてSA_PASSWORDの使用は非推奨となっているため、公式ドキュメントを参考に、MSSQL_SA_PASSWORDを設定して利用した方がよいだろう。