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