✨
Dockerを使用してホスト環境を汚さずにmssql-server-linuxを使う
TL;DR
- DBのためだけに開発環境にSQLServer入れるのは好ましくないのでDockerを使おう
- ローカル環境にはDocker Desktopとvisual studio codeのみインストール
- mssql-server-linuxのdocker-composeのサンプルが少ないので記事を書いた
参考にしたサイト
マイクロソフト公式リポジトリ内のコンテナサンプル
作成したサンプルリポジトリ
環境
- Windows10
- Docker Desktop 2.2.0.3
- docker-composeはDocker Desktopに同梱
- mssql-server-linux 2017-latest
- visual studio code 1.42.1[SQL Server (mssql)でDBに接続]
ファイル
\---mssql-server-linux-sample
| .gitignore
| db-init.sh
| db-init.sql
| docker-compose.yml
| Dockerfile
| entrypoint.sh
|
\---backup
dbo.members.csv
Dockerfile
FROM microsoft/mssql-server-linux:2017-latest
COPY . /usr/src/docker
WORKDIR /usr/src/docker
RUN chmod +x ./db-init.sh
CMD /bin/bash ./entrypoint.sh
docker-compose.yml
version: "3"
services:
db:
build: ./
environment:
SA_PASSWORD: "MssqlPass123"
ACCEPT_EULA: "Y"
MSSQL_AGENT_ENABLED: "true"
ports:
- "1433:1433"
container_name: db1
hostname: db1
volumes:
- ms-sqlserver-linux-sample-data:/var/opt/mssql
- ./backup:/backup
volumes:
ms-sqlserver-linux-sample-data:
driver: local
※、MSSQL_AGENT_ENABLEDをtrueにするとSQLServerが落ちないで起動し続ける
entrypoint.sh
#start SQL Server, start the script to create/setup the DB
./db-init.sh & /opt/mssql/bin/sqlservr
※、DB初期化スクリプトとSQLServer起動を実施
db-init.sh
#start SQL Server, start the script to create/setup the DB
#wait for the SQL Server to come up
sleep 10s
echo "running set up script"
#run the setup script to create the DB and the schema in the DB
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P MssqlPass123 -d master -i db-init.sql
db-init.sql
CREATE DATABASE testdb;
go
use testdb;
go
DROP TABLE IF EXISTS members;
GO
CREATE TABLE members(
id int identity(1,1) primary key,
name nvarchar(32),
birthday datetime
);
GO
BULK INSERT members
FROM '/usr/src/docker/backup/dbo.members.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
GO
※、DB作成、テーブル作成、データ投入を実施。データはvolumesに登録されている
docker-composeビルド
コンテナのビルドを実施
docker-compose build
docker-compose起動
ビルドしたコンテナをバックグラウンドで起動
docker-compose up -d
docker-compose終了
コンテナを初期化して終了
docker-compose down
DBへの接続
※、コンテナが起動中に以下の手順を実施
- SQL Server (mssql)をvisual studio codeにインストールすると、サイドバーにDBのアイコンが表示されるので選択
- COONNECTIONSにカーソルを合わせると「+」アイコンが出るので押下
- servername:localhost
- Database Name:testdb
- SQL Loginを選択
- ユーザ名:sa
- パスワード:MssqlPass123
- Save Password:No
- Display Name:任意の名前
これでDBに接続できるのでdbo.membersを選択してデータが登録されているか確認します。
以上
Discussion