個人のRailsプロジェクトでDockerを使って環境構築をしていた際にハマったお話。
原因
- Rackのバージョンが上がって、ホストとポートを分割する挙動が変わりアンダースコアのホストがマッチしなくなった
Rackの挙動の変更点は以下の通り。
対策
- docker-composeのサービス名をハイフンで繋ぐよう修正する
経緯
元々以下のような構成でdocker-composeを使って環境を構築していました。
アプリ本体とwebpack-dev-serverを動かすアプリを分離する構成です。
services:
app:
<<: *app
command: ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]
environment:
WEBPACKER_DEV_SERVER_HOST: webpack_dev_server
ports:
- 3000:3000
depends_on:
- db
webpack_dev_server:
<<: *app
command: ["bin/webpack-dev-server"]
environment:
WEBPACKER_DEV_SERVER_HOST: 0.0.0.0
ports:
- 3035:3035
それから開発中にRackのバージョンをアップデートしたところ、以下のエラーが吐き出されてjsが参照できなくなりました。
#<SocketError: Failed to open TCP connection to webpack_dev_server:3035:80 (getaddrinfo: Name or service not known)>
今回は開発環境での出来事だったので特に問題はなかったのですが、みなさんもgemのアップデートの際にはくれぐれもご注意を…。