概要
SQLServer 2017 on LinuxのDocker版をdocker-composeでさくっと作ってみました
MSから提供されているイメージでは初期データ投入できなかったので、初期データ投入機能を追加しときました
テスト環境が欲しい方の参考になれば幸いです
元ネタ:https://docs.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker
前提
こちらのリポジトリをベース説明していきます
ソース
docker-composeファイルはざっとこんな感じです
環境変数はcommon.envで管理し、初期データ投入はstart-up.shで行っています
初期データはinit-data配下の.sqlファイルを名前順にロードしていきます
docker-compose.yml
version: "3.5"
services:
sqlserver:
image: microsoft/mssql-server-linux:2017-latest
container_name: sqlserver
hostname: sqlserver
ports:
- 1433:1433
volumes:
- ./init-data:/init-data
- ./start-up.sh:/start-up.sh
- mssql-db:/var/opt/mssql
env_file:
- common.env
command: "sh -c '/start-up.sh & /opt/mssql/bin/sqlservr;'"
volumes:
mssql-db:
driver: local
start-up.sh
# !/bin/bash
wait_time=15s
# wait for SQL Server to come up
echo importing data will start in $wait_time...
sleep $wait_time
echo importing data...
for filepath in "/init-data/*.sql"
do
echo "import: " $filepath
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "$MSSQL_SA_PASSWORD" -i $filepath
done
common.env
TZ=Asia/Tokyo
# 使用許諾契約書の同意
ACCEPT_EULA=Y
# DBパスワード
MSSQL_SA_PASSWORD=4iF5uTjJ8vJG0YGL
データの永続化
mssql-dbボリュームで永続化しているので、そのボリュームを削除するか、ボリューム名を変えて対応するとよいでしょう