Github ActionsでMySQLとRedisを使用したテストをする


# ワークフローのサービスを使ってMysqlとRedisを使う

CIでMySQLとRedisに依存したテストを実行するに当たって、それぞれのコンテナを立てたのでメモ

envにそれぞれ設定する変数を定義する。

ジョブをランナーマシン上で直接実行する場合は、ホストのポートとコンテナのポートをつなぐことを忘れずに

    services:
      mysql:
        image: mysql:8.0
        ports:
          - 3306:3306
        options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10
        env:
          MYSQL_DATABASE: db
          MYSQL_USER: db
          MYSQL_PASSWORD: db
          MYSQL_ROOT_PASSWORD: db
      redis:
        image: redis:5.0-alpine
        ports:
          - 6379:6379
        options: --health-cmd "redis-cli -h localhost ping" --health-interval 10s --health-timeout 5s --health-retries 15
        env:
          REDIS_HOST: redis
          REDIS_PORT: 6379
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# おまけ

今回の設定は、ジョブがランナーマシン上で直接実行されているが、コンテナ内でジョブを実行する場合はブリッジネットワークを使ってサービスコンテナをジョブに接続する。 サービスコンテナへは、ワークフロー中で設定したラベルを使ってアクセスできます。 サービスコンテナのホスト名は、自動的にラベル名にマップされます。 たとえばredisというラベルでサービスコンテナを作成したなら、そのサービスコンテナのホスト名はredisになります。

# ref