IBM Cloud Code Engine 用のシンプルな Hono サーバーを動かしたメモ
IBM Cloud Code Engine 用のシンプルな Hono サーバーを動かしたメモです。
この記事は IBM Cloud Advent Calendar 2025 の 22 日目の記事です。
背景
IBM Cloud Code Engine 用のシンプルな Node.js リポジトリを作ったメモ - 1ft-seabass.jp.MEMO
以前は、このような仕組みを作っていたのですが、いつも Express に頼ってしまうので今回は Hono も動くのかなーというところでやってみます。
今回は、ついつい以前の仕組みを使いがちな、私の Code Engine 力の整備として、
- Hono を使ってみる
- 最近の alpine バージョンを使ってみる
- 他の仕組みについては同じ
というフォーカスでやってみます。
Dockerfile の変更
FROM icr.io/codeengine/node:22-alpine
COPY package.json .
RUN npm install
RUN mkdir public
COPY public/ public/
COPY server.js .
EXPOSE 8080
CMD [ "node", "server.js" ]
今回は 22 にバージョンアップしてみました。
package.json
hono に関しては hono と @hono/node-server を入れました。
- hono
- フレームワーク本体
- ルーティング、ミドルウェアなどのコア機能
- @hono/node-server
- Node.js 用アダプター
- Node.js の http サーバーと Hono を接続
- 静的ファイル配信機能(serveStatic)も含む
となっています。
{
"name": "ibm-ce-simple-nodejs-hono-base",
"version": "1.0.0",
"description": "This is a simple Node.js Hono IBM Code Engine base repository.",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/1ft-seabass/ibm-ce-simple-nodejs-hono-base.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/1ft-seabass/ibm-ce-simple-nodejs-hono-base/issues"
},
"homepage": "https://github.com/1ft-seabass/ibm-ce-simple-nodejs-hono-base#readme",
"dependencies": {
"hono": "^4.0.0",
"@hono/node-server": "^1.0.0"
}
}
Hono サーバー
Hono サーバーはこうしました。Express で行っていたコードが移植できたはずです。
// Hono フレームワーク本体(Express の代わり)
const { Hono } = require('hono');
// Node.js でサーバーを起動するための関数
const { serve } = require('@hono/node-server');
// 静的ファイル配信用のミドルウェア
const { serveStatic } = require('@hono/node-server/serve-static');
// Hono アプリケーションの初期化(Express は関数呼び出し、Hono はクラス)
const app = new Hono();
// 静的ファイル配信の設定(public フォルダの内容を公開)
app.use('/*', serveStatic({ root: './public' }));
// API エンドポイントの例(c は Context オブジェクト、Express の req/res を統合したもの)
app.get('/api/hello', (c) => {
return c.json({ message: 'Hello from Hono!' });
});
// ポート設定(IBM Code Engine が PORT 環境変数を自動設定)
const port = process.env.PORT || 8080;
// サーバー起動(Hono は Web 標準の fetch API を使用)
serve({
fetch: app.fetch,
port: port,
}, (info) => {
console.log("server start!");
console.log(`app listening at http://localhost:${info.port}`);
});
Git リポジトリ
出来上がったリポジトリはこちらです!

1ft-seabass/ibm-ce-simple-nodejs-hono-base
Code Engine にアプリケーションで反映

リポジトリができたので Code Engine にこれをベースにコンテナイメージをビルドします。

エラーもなくうまくいきました!
アクセスしてみる

実際にアプリケーションの URL からアクセスしてみましょう!

無事 Hono サーバーが動くのを確認できました!