エキサイト株式会社の中です。
SQL Serverをローカル環境に用意するのにハマったことを記載します。
ユースケース
- SQL Serverを使ったローカル開発をしたい。
- test環境のデータを、ローカル環境に復元したい。
題材
1のみの場合、手順通りにやればSQL Serverを使ったローカル開発をすることできます。
しかし、2のtest環境のデータをローカル環境に復元するとき、エラーは出ることがあります。
理由は、docker-composeのvolumes mountの際、rootユーザになってしまうからです。
それを回避するためにdocker volumeを使いましょう。
docker volume --rm で明示的に削除しない限り、消えることはありません。
以下に、docker-compose.yamlの記載例を表示します。
入力例
docker-compose -f docker-compose-sqlserver.yml up -d
出力例
mcr.microsoft.com/mssql/server:2017-latest "/opt/mssql/bin/nonr…" 4 days ago Up 47 hours 0.0.0.0:1433->1433/tcp tool_sqlserver_1
条件
- testデータは、既存のtest用DBサーバーからエクスポートする
コード例
version: "3.7" services: sqlserver: image: mcr.microsoft.com/mssql/server:2017-latest ports: - 1433:1433 environment: ACCEPT_EULA: "Y" SA_PASSWORD: "abc%ABC%123" volumes: - "sqlserver-data:/var/opt/mssql/data" - "sqlserver-log:/var/opt/mssql/log" - "sqlserver-secrets:/var/opt/mssql/secrets" volumes: sqlserver-data: driver: local sqlserver-log: driver: local sqlserver-secrets: driver: local