ロリポップ!マネージドクラウドでFastify

FastifyというオーバーヘッドがExpressに比べて小さいと言われているサーバーをロリポップ!マネージドクラウドで動かしたときのメモ。 www.fastify.io

Fastifyのサンプルで書かれているものを以下のところだけ書き換えた。

待機ポートの指定

f:id:hideack:20190706171540p:plain
ロリポップ!マネージドクラウド環境変数設定の画面

ホスト名の指定

サーバーをlistenさせるときの記述の第2引数で渡すbind先がデフォルトでは 127.0.0.1 になっているので、これを 0.0.0.0 で明示した。

fastify.listen(PORT, '0.0.0.0', function (err, address) {

上記2点を踏まえて以下の様に書いてデプロイすることで動かすことができた。最初、後者の指定に気づかず数度デプロイして躓いていたので、もしかしたら誰かの役に立つかもしれないのでメモとして残しておく。*2

const fastify = require('fastify')({
  logger: true
})

const PORT = process.env.PORT || 5000

// Declare a route
fastify.get('/ping', function (request, reply) {
  reply.send({"ping":"pong"});
});

// Run the server!
fastify.listen(PORT, '0.0.0.0', function (err, address) {
  if (err) {
    fastify.log.error(err)
    process.exit(1)
  }
  fastify.log.info(`server listening on ${address}`)
})

*1:ちなみにherokuだと環境変数PORTは自動的に割り当てられ、また立ち上げ毎にポート番号は変わる。

*2:もっとも、githubリポジトリのREADMEに「If you are running Fastify in a container (Docker, GCP, etc.), you may need to bind to 0.0.0.0.」とキチンと書いてあるのである