Node.jsの開発環境をDockerコンテナに構築する
前回の開発用コンテナの作り方に不足があったので、Node.js(とExpress)の練習を兼ねて覚え書きを残しておきます。
環境
ホスト
- OS: Windows 10 Home 21H1
- VSCode: 1.65.2
リモート
- OS: Windows 10 Pro 21H2
- WSLディストリビューション: Ubuntu 20.04.3 LTS (Focal Fossa)
- Docker Engine: 20.10.14
コンテナを構築する
GitHubからサンプルプロジェクトをリモートマシンにダウンロードします。
zipファイルを展開し、展開されたフォルダをWSL内に配置してからリネームします。
VSCodeのコマンドパレットから、「Remote-Containers: Open Folder in Container…」でプロジェクトフォルダを開きます。
コンテナが構築されました。
ターミナルに表示されている通り、何かキーを押して一度ターミナルを閉じます。
サーバを起動する
ターミナルを起動します。
カレントディレクトリは/workspaces/プロジェクトフォルダ
です。
以下のコマンドでプログラムを実行し、サーバを起動します。
node server.js
ホストマシン側のWebブラウザから表示するため、ポートフォワーディングの設定を行います。
「ポート」パネルから「ポートの追加」をクリックして、3000と入力します。すると、自動的に設定が追加されました。
ローカルアドレスをマウスオーバーして表示された真ん中のアイコンから、Webブラウザで開くことができます。
HTMLファイルを表示する
サンプルコードを少し変更して、HTMLファイルを表示してみます。
プロジェクトフォルダ直下にHTMLファイルを追加します。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
server.js
の17行目あたりを下記のように変更します。
send()
の代わりにsendFile()
を使用して、表示したいHTMLファイルを指定します。
app.get('/', (req, res) => {
// res.send('Hello remote world!\n');
res.sendFile(__dirname + "/statics/jsmind.html");
});
コンソールからCtrl C
でサーバを停止し、node server.js
で再度起動します。
HTMLファイルの内容が表示できました。