DevcontainerとCI設定でValkeyイメージをバージョン9に更新
Railsの開発環境とCI環境で使用される Valkey(Redisの代替実装)のDockerイメージがバージョン8から9に更新されました。この変更により、開発者は最新のValkeyの機能と改善を利用できるようになります。
背景
Railsプロジェクトでは、開発環境の一貫性を保つために devcontainer とCI環境でValkeyのDockerイメージを使用しています。#56769 は、ValkeyのDockerイメージを最新のバージョン9にアップグレードするものです。
変更対象は、実際に使用される設定ファイルだけでなく、プロジェクト生成時のテンプレートファイルやテストケースも含まれており、今後生成されるRailsプロジェクトでも最新バージョンが使用されるようになります。
技術的な変更
8つのファイルでValkeyイメージのバージョン指定が valkey/valkey:8 から valkey/valkey:9 に更新されました。変更対象は以下の3つのカテゴリに分類されます。
devcontainer設定:
redis:
image: valkey/valkey:9
restart: unless-stopped
volumes:
- redis-data:/data
.devcontainer/compose.yaml と railties/lib/rails/generators/rails/devcontainer/templates/devcontainer/compose.yaml.tt で、devcontainer環境のValkeyイメージが更新されています。
CI設定:
services:
redis:
image: valkey/valkey:9
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
GitHub Actionsの設定ファイル(github/ci.yml.tt)では、コメントアウトされたRedisサービスの定義内でバージョンが更新されています。プロジェクトテンプレートとプラグインテンプレートの両方が対象です。
デプロイ設定とテスト:
-
config/deploy.yml.tt: Kamalデプロイ設定のコメント内でバージョンが更新 -
railties/test/fixtures/.devcontainer/compose.yaml: テスト用のdevcontainer設定でバージョンが更新 -
railties/test/generators/app_generator_test.rbとdevcontainer_generator_test.rb: テストケースの期待値がvalkey/valkey:9に更新
すべての変更は設定ファイルとテンプレート内のバージョン番号の置換であり、サービスの起動オプションやポート設定に変更はありません。
設計判断
既存の設定構造を維持したまま、バージョン番号のみを更新する方式が採用されました。
Diffを見ると、イメージタグのみが変更され、ヘルスチェックコマンド(redis-cli ping)やポート設定(6379)、再起動ポリシー(unless-stopped)などの設定パラメータはすべて維持されています。この変更により、既存の設定を変えることなくバージョンアップが実現されています。
テストケースの期待値も同時に更新されており、CI/CDパイプラインでの検証が継続的に行われる設計になっています。コメントアウトされたCI設定も更新対象に含めることで、開発者がRedisサービスを有効化する際に最新バージョンが使用される仕組みになっています。
まとめ
本PRは、Rails開発環境全体でValkeyイメージを最新バージョンに統一した変更です。設定構造を変えずにバージョンタグのみを更新することで、既存のプロジェクトへの影響を最小限に抑えながら最新版への移行を実現し、今後生成されるプロジェクトでも最新バージョンが使用されるようにしています。