DockerにSQL Serverを追い出す件
追い出したい
僕のPCには開発用と称して
- PostgreSQL 9.6
- MySQL 8
- Microsoft SQL Server 2017 Developer
をセットアップしているんだが、ホスト環境にそのままセットアップしているとこういった不満が出てくる(という私見)。
- アップグレードは簡単にしたい
- DBMSはアプリと1対1対応させたい
- 開発していないときは、DBMSのプロセスを下げたい
こんなところか。
ということで、手始めにSQL ServerをDockerに追い出してみることにする。
SQL Server on Docker
いまどきのSQL ServerはLinux上でも動かせるエディションがリリースされているので、Microsoftも公式Dockerイメージを公開している。
今回はホスト環境にデータを永続化しておきたいので、Docker Hubの記載をもとにdocker-compose.yml
をかいてみた。
まだホスト環境でSQL Serverが稼働中なので、ホスト環境からの接続ポートを1433から14330に変更している。
version: '3'
services:
# Microsoft SQL Server 2017 Linux (Developer Edition)
db:
image: mcr.microsoft.com/mssql/server:2017-latest
container_name: mssql2017dev
environment:
ACCEPT_EULA: Y
# If you runs in production environment, you should change sa password.
SA_PASSWORD: P@ssw0rd2017
# If you have valid Product ID, set MSSQL_PID valiable.
# See : https://hub.docker.com/_/microsoft-mssql-server
#MSSQL_PID: Express
volumes:
- ./data/data:/var/opt/mssql/data
- ./data/log:/var/opt/mssql/log
ports:
- 14330:1433
docker-compose.yml
を置いているディレクトリで、PowerShellからこう叩くとDocker上にSQL Serverが立ち上がる。
PS> mkdir .\data\data
PS> mkdir .\data\log
PS> docker-compose up -d
ツールで接続する
立ち上がったら、ホスト環境のsqlcmd
で接続して動作確認。
PS> sqlcmd -S localhost,14330 -U sa -P P@ssw0rd2017
注意点としては、ポートの指定がよくあるコロン(:)ではなくカンマ(,)だということ。MSDNにはちゃんと書かれているけれど、これは初見殺しだよなぁ。
接続ができたら、今度はSQL Server Management Studioを使えるようにしてみる。接続ダイアログのサーバ名は、sqlcmd
の時同様の書き方でよい。
これでSQL ServerをDockerに追い出せたので、データ移行をこなせば追い出しが完了する見込み。
プロジェクト的なもの
GitHubにプロジェクト的なものを上げてます。
ご参考あれ。
最近のコメント