Apple silicon搭載のMacでSQL Serverを動かす
現在Apple siliconに対応したSQL Serverは現状ありませんが、Docker Desktop Version がRosettaをサポートしたことで、SQL Server Linuxを動作させることができるようになりました。
SQL Server Linuxを動かしてみたので、その際の手順になります。
Dockerを使ったSQL Server Linuxについては、Microsoftのページにも記載があるため、こちらを参考にしました。
learn.microsoft.com
今回はコンテナ起動時のパラメータを毎回入力しないようにするために、docker-composeを使用しました。
手順
1. Docker DesktopでRosettaを有効にする
Docker DesktopのSettingで「Use Rosetta for x86/amd64 emulation on Apple Silicon」にチェックを付け有効にします。
2. docker-compose.ymlを作成
docker-compose.ymlを下記内容で作成します。
version: '3' services: db: image: mcr.microsoft.com/mssql/server:2022-latest platform: 'linux/x86_64' ports: - '1433:1433' volumes: - './data:/var/opt/mssql/data' - './log:/var/opt/mssql/log' - './secrets:/var/opt/mssql/secrets' environment: - 'ACCEPT_EULA=Y' - 'MSSQL_SA_PASSWORD=${MSSQL_SA_PASSWORD}'
- 公開されているDockerイメージはx86_x64なため、platformを指定しています。
- コンテナを削除時にデータが消えないよう、volumesで保存先にホストのフォルダを指定しています。
- ${MSSQL_SA_PASSWORD}はSQL Server の既定のパスワード ポリシーに従ったパスワードに置き換えてください。
3. コンテナを起動
docker-composeコマンドで起動します。
$ docker-compose up -d
コンテナが起動しているかどうか確認します。
$ docker-compose ps -a
出力結果のSTATUSがUpとなっていれば起動しています。
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS mssql-db-1 mcr.microsoft.com/mssql/server:2022-latest "/opt/mssql/bin/perm…" db 11 seconds ago Up 9 seconds 0.0.0.0:1433->1433/tcp
4. 動作確認
コンテナへ接続後のデータベースの作成からデータの登録まではMicrosoftのサイトに記載の「データの作成とクエリ」のとおりのため、記載を省略します。
コンテナへ接続
$ docker-compose exec db bash
sqlcmdでSQL Serverへ接続
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P <パスワード>
データベースの作成からデータの登録までは、下記ページのとおりに実行します。
learn.microsoft.com
コンテナ外からの接続は、VS Codeの「SQL Server (mssql)
」を使用しました。
marketplace.visualstudio.com
コンテナ上で登録したデータが参照できました。
まとめ
まだプレビュー版ですが、Docker DesktopのRosettaを使用することでSQL Serverを使用することができました。
Apple siliconのMac上で開発する際に、SQL Serverも含めてローカル内で開発を完結させられるようになったのは良いのではと思います。