LoginSignup
16
1

More than 3 years have passed since last update.

fastifyをDockerで動かしてみてハマったポイント

Last updated at Posted at 2020-12-11

はじめに

node.jsでメジャーなWeb Framworkはexpressで長らく使っていましたが。
fastifyについての記事を多く見かける様になったの使ってみました。
その際にDockerで実行環境を構築した時にハマったポイントを記載します

実行環境

os: mac os X 10,14,6
node.js: v14.15.0
docker: v19.03.13

ハマったポイント

fastifyはデフォルトでリッスンするホストが127.0.0.1(localhost)でdocker環境で実行した場合にportをexposeしていてもapiエンドポイントに接続できない。
※ expressはデフォルトが0.0.0.0

127.0.0.1でもLocal環境での実行なら問題はありませんが、docker環境で実行すると問題が発生します。
それは、ホストのlocalhostとdockerのlocalhostは違うという事です。(別ネットワーク)
なので、コンテナをrunしてlocalhost:portでアクセスしても繋がりません。
なので別ホストから接続が出来るように0.0.0.0でリッスンしましょうという事です。

解決方法

expressと同じ仕様だろうと思わず、ちゃんとドキュメントを読みましょうという事でした。
引用

  • 対処前
=== 省略 ===
fastify.listen(3000, function (err, address) {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  fastify.log.info(`server listening on ${address}`)
})
  • 対処後
=== 省略 ===
fastify.listen(3000, '0.0.0.0', function (err, address) {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  fastify.log.info(`server listening on ${address}`)
})
  • express(参考)
app.listen(3000);
16
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
1