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!」と表示されていれば成功です。