Madogiwa Blog

主に技術系の学習メモに使っていきます。

Vite Rubyでdocker-composeで立ち上げた時もHMRを動くようにするメモ📝

Vite Rubyを使っていたDockerで立ち上げた環境でHMRをしようと思いvite.config.tsserver.hosttrueにしてみたが、なぜかhostが変わらずハマったので解決方法をメモ📝

server.host サーバーがリッスンすべき IP アドレスを指定します。 0.0.0.0 もしくは true に設定すると、LAN やパブリックアドレスを含むすべてのアドレスをリッスンします。 https://ja.vitejs.dev/config/server-options#server-host

vite.config.tshostを指定しても変わらなかったのは、vite-plugin-railsserver.hostをデフォルトでlocalhostにしており、上書きされてしまいvite.config.tsの設定が反映されなかったっぽい😭

  "host": "localhost",

https://github.com/ElMassimo/vite_ruby/blob/vite-plugin-ruby%405.0.0/vite-plugin-ruby/default.vite.json#L15

const server: ServerOptions = { fs, host: config.host, https, port, strictPort: true }

https://github.com/ElMassimo/vite_ruby/blob/vite-plugin-ruby%405.0.0/vite-plugin-ruby/src/config.ts#L90

公式ガイドでVITE_RUBY_HOSTを設定する必要があると書かれていた・・・!

Making HMR work in Docker Compose# Using Vite.js with Docker Compose requires configuring VITE_RUBY_HOST in the services. https://vite-ruby.netlify.app/guide/troubleshooting.html#making-hmr-work-in-docker-compose

サンプルも載っていたので見てみたところdocker-composeで別のサービスとして立ち上げるサンプルになっていたが、

github.com

evilmartians.com

個人的には、docker-composeで管理するサービスを増やさずjsbundling-railsみたいにforemanで同時に立ち上げたかったので、 docker-compose.ymlRailsアプリケーションのサービスでVITE_RAILS_HOST0.0.0.0に設定し、port3036をhostにforwardするようにして解決した🆗

    ports:
      - "3000:3000"
+     - "3036:3036"
    environment:
+     VITE_RUBY_HOST: "0.0.0.0"