Dockerに関しては業務である程度触ってはいるが、自分で立ち上げたことはなかったため、やってみることにした。
expressを利用したプロジェクトのディレクトリの作成から、Dockerfileを使ってdockerイメージを作成するところまで。
Dockerfileとは?
Dockerイメージを構築するために必要なコマンドを記述するファイル。
- 「使用するnodeのバージョン」「Dockerイメージ内に作成するファイル」などのコマンドを記述する。
-
docker build --tag [name-tag] .([name-tag]は任意のタグ名)を実行すると、Dockerfileに記述されたコマンドを上から1つずつ実行し、Docker イメージを作成してくれる。
手順
-
プロジェクトのディレクトリを作成する。
-
作成したディレクトリ下に
server/src/index.tsを作成する。 -
cd serverでディレクトリを移動した後、npm init -yを実行してpackage.jsonを作成する。 -
2で作成した
index.tsに、以下を記述する。(こちら を参考にしました)index.tsconst express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) }) -
package.jsonに以下を追加する。package.json"scripts": { "start": "node src/index.ts" } -
yarn run startを実行し、ブラウザでhttp://localhost:3000/を確認する。「Hello World!」が表示されていれば成功で、一旦yarn run startは止めておきましょう。ここまでがexpressについて。ここからがdockerについて。
この先は、こちらを参考にしました。 -
docker desktopを起動する。
-
serverディレクトリの直下にDockerfileファイルを作成する。(ファイル名を間違えると後でエラーが出るので注意) -
Dockerfileに以下を記述する。FROM node:18 WORKDIR /app COPY package.json . COPY yarn.lock . RUN yarn install COPY . . CMD [ "node", "src/index.ts" ]nodeのバージョンとして指定できるタグは、こちらから参照できます。
-
docker build --tag node-docker .を実行し、Dockerイメージをビルドする。
冒頭でも説明した通り、node-dockerの部分については任意に設定できます。 -
docker imagesを実行し、表示されるリストのREPOSITORIESの中に、今ビルドしたnode-dockerがあることを確認する。 -
docker run --publish 3000:3000 node-dockerを実行し、portを公開する。 -
再びブラウザから
http://localhost:3000/にアクセスし、「Hello World!」と表示されていれば成功です。