現在Pythonでプログラミング開発などをしているのですが、MS SQLをデータベースとして使う必要がありました。
もちろん開発PCにMS SQL Experssなどをインストールしてもいいのですが、開発PC内の環境をクリーンにしたかったためDockerコンテナでMS SQL(Linux版)を構築しました。
今回は1つのコンテナだけですが、Docker-composeでファイルとしていつでもテストなどで使いたい時だけコンテナ起動して簡単に使えるようにしてます。
試した環境
- Windows10 Pro バージョン1909
- CPU:Intel Core i7-2600K
- メモリ:24GB
- ディスク:240GB (SSD)
Docker for Windowsのインストール
DockerをWindowsにインストールします。インストールされていない方は方法は以下をご参照下さい。
Docker-composeの準備
作業用のディレクトリ(今回はC:\Docker\mssql-linux)を作成してdocker-compose.ymlを配置します。

設定値などの詳細はこちらの公式を確認してください。

今回は2017をインストールしていますが、2019も使えます。
version: '3'
services:
mssql:
image: microsoft/mssql-server-linux:2017-latest
environment:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: P@ssw0rd
volumes:
- ./mssql-volume:/var/opt/mssql/
ports:
- "1433:1433"
Dockerコンテナの作成
docker-composeの準備ができたらPowerShellコンソールまたはコマンドプロンプトを立ち上げてから、作業用ディレクトリへ移動してdocker-composeコマンドからコンテナを構築します。
コンテナが立ち上がっているのも確認します。簡単ですね!!!
PS C:\Users\user> cd C:\Docker\mssql-linux
PS C:\Docker\mssql-linux> docker-compose up -d
Creating network "mssql-linux_default" with the default driver
Pulling mssql (microsoft/mssql-server-linux:2017-latest)...
2017-latest: Pulling from microsoft/mssql-server-linux
59ab41dd721a: Pull complete 57da90bec92c: Pull complete 06fe57530625: Pull complete 5a6315cba1ff: Pull complete 739f58768b3f: Pull complete 0b751601bca3: Pull complete bcf04a22644a: Pull complete 6b5009e4f470: Pull complete a9dca2f6722a: Pull complete Digest: sha256:9b700672670bb3db4b212e8aef841ca79eb2fce7d5975a5ce35b7129a9b90ec0
Status: Downloaded newer image for microsoft/mssql-server-linux:2017-latest
Creating mssql-linux_mssql_1 ... done
PS C:\Docker\mssql-linux> docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------
mssql-linux_mssql_1 /opt/mssql/bin/sqlservr Up 0.0.0.0:1433->1433/tcp
動作確認
それでは最後にSQLが正しく動作しているかを確認したいと思います。
もちろんSQL ServerのMagementStudioなどで接続するのがベストではありますが、今回は簡単にVSCodeの拡張機能を利用して接続確認をしたいと思います。
VSCodeの拡張機能から「SQL Server (mssql)」をインストールします。

インストールが終わったら、Add Conncttionをクリックすると上の窓に必要な項目を入力していくダイヤログが出てきますので進めていきます。

まずは接続先のサーバ名です。localhostだけと入力します。ポートがデフォルトの1433以外の場合にはlocalhost:XXXXでポート指定して下さい。

Databaseはまだ作ってないので入力せずにEnterでOKです。

SQL loginを選択します。

ユーザーは「sa」を入力します。

パスワードを入力します。今回はdocker-compose.ymlで指定した「P@ssw0rd」です。

パスワードを記憶するかになります。どちらでもOKです。

接続の名称を入力します。わかりやすい名前を付けてください。

接続に成功するとCONNECTIONSの下に表示されます。
確認のためにデフォルトで作成されているDatabaseのTableを適当に表示してみます。

まとめ
今回はMS SQLサーバをDockerコンテナで簡単に作成しました。
MSSQLサーバを開発PCにインストールするのは結構時間がかかってしまいますが、コンテナであれば5分くらいで構築できてしまいます。めちゃくちゃ便利ですね。
Dockerに関しては早めに使えるようになっておきたいですね。
Dockerのオススメ勉強方法
私がオススメするDocker初心者向けの最初に購入すべき書籍は「さわって学ぶクラウドインフラ docker基礎からのコンテナ構築」です。
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築

本書ではDockerの基本的な概念などの座学ももちろんありますが、実際に、Dockerのインストール方法やWebサーバーをコンテナで構築するハンズオンを通じて学習することができるため、特に初心者の方はは分かりやすい内容となっています。
今回は以上となります。
コメント