Kōhei Yamamoto

GitHub ActionsでSQL Serverサービスコンテナの起動を待つ

GitHub ActionsでSQL Serverサービスコンテナ1の起動を待つには、次のようにワークフローの設定を書く。

jobs:
test:
runs-on: ubuntu-latest
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
env:
# 以下はmcr.microsoft.com/mssql/server自体の設定
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: ${{ secrets.MSSQL_SA_PASSWORD }}
# 以下はsqlcmdの設定
SQLCMDUSER: sa
SQLCMDPASSWORD: ${{ secrets.MSSQL_SA_PASSWORD }}
SQLCMDDBNAME: mydatabase
ports:
- 1433:1433
options: >-
--health-cmd="/opt/mssql-tools/bin/sqlcmd -Q 'SELECT 1'"
--health-interval=10s

結論としては、イメージに入っているsqlcmdを使い、DBに向けてSELECTできるかどうかでhealthyかどうかを判断する。

envの意味は次のとおり。

名前意味
ACCEPT_EULAこの値があるとライセンス条項に同意したことになる
MSSQL_SA_PASSWORD管理者(sa)のパスワード。強めのパスワードポリシーがある。必要に応じてsecretsに格納したものを使う
SQLCMDUSERsqlcmdが使うユーザー名。管理者で接続する
SQLCMDPASSWORDsqlcmdが使うパスワード
SQLCMDDBNAMEsqlcmdが接続するデータベース

options”Creating PostgreSQL service containers - GitHub Docs”に書いてあるような方法そのまま。

とする2

脚注

  1. https://hub.docker.com/r/microsoft/mssql-server を使う

  2. https://stackoverflow.com/questions/60539114/how-to-wait-for-mssql-in-docker-compose