Rails × Cloud Run で Cloud Storage をマウントする方法
- 最終更新日: 2025年5月9日(金)
- 公開日: 2025年5月14日(水)
こんにちは。デザイン・システム室の永野です。
今回は、Rails × Cloud Run で Cloud Storage をマウントする方法についてまとめてみました。
今後、Cloud Run のマウント先として Google Cloud Storage を選択したときの参考になれば幸いです。
構成について
Cloud Run にデプロイする Rails アプリケーションと Cloud Storage の構成は以下の通りです。
なお、データベースについては、PostgreSQL や MySQL ではなく、コストを抑えるために sqlite3
を採用しました。
ローカル環境で作成した Rails アプリケーションを Cloud Run にデプロイする手順については、こちらの記事を参考に行いました。

つまずいたポイント:マウントパスの設定
Cloud Storage をマウントした状態で Rails アプリケーションを Cloud Run 上で起動したところ、アプリ起動時に生成される SQLite ファイルが Cloud Storage に保存されないという問題に直面しました。
原因を調べたところ、Cloud Run におけるマウント先のパスと、config/database.yml
に記載した SQLite ファイルのパスが一致していなかったことが原因でした。
つまり、Cloud Storage 上に SQLite ファイルを保存するには、マウントパスと database.yml
に設定するパスを一致させる必要があるようです。
database.yml
の設定
作成した database.yml ファイルは下記の通りです。
# config/database.yml
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: /storage/production.sqlite3
production:
<<: *default
database: /storage/production.sqlite3
Cloud Run のマウント設定
また、Cloud Run にデプロイする際、Cloud Storage をボリュームとしてマウントすることができます。その際、適切なマウントパス(例:/storage
)を指定すれば、database.yml
に設定した SQLite ファイルの保存先として機能します。
今回指定したマウントパスは /storage
でした(下記画像参照)。

このように設定することで、Cloud Run にデプロイした Rails アプリケーションが起動時に生成する SQLite ファイルが、Cloud Storage 上のバケットに保存されるようになりました。
まとめ
今回は、Rails × Cloud Run 環境で Cloud Storage をマウントする方法についてご紹介しました。
もともと、Cloud Run でコンテナを起動する際にストレージをマウントするという発想はあまりありませんでした。
しかし、今回の取り組みを通じて、Cloud Storage のような外部ストレージをマウントしておくことで、コンテナが停止しても再起動時にデータを永続化できる仕組みを構築できることを学びました。
今後は、より柔軟で信頼性の高いアプリケーション構成を目指して、このようなストレージの活用方法も積極的に取り入れていきたいと思います。
現在デザイン・システム室では、新しいメンバーを募集しています。
少しでも興味を持たれた方は、ぜひご応募ください。
皆様からのご応募、心よりお待ちしております。
参考
https://cloud.google.com/ruby/rails/run
https://cloud.google.com/run/docs/configuring/services/cloud-storage-volume-mounts?hl=ja