0
1

More than 1 year has passed since last update.

dockerでnodeを立ち上げる

Last updated at Posted at 2023-01-10

Dockerに関しては業務である程度触ってはいるが、自分で立ち上げたことはなかったため、やってみることにした。
expressを利用したプロジェクトのディレクトリの作成から、Dockerfileを使ってdockerイメージを作成するところまで。

Dockerfileとは?

Dockerイメージを構築するために必要なコマンドを記述するファイル。

  • 「使用するnodeのバージョン」「Dockerイメージ内に作成するファイル」などのコマンドを記述する。
  • docker build --tag [name-tag] . ([name-tag]は任意のタグ名)を実行すると、Dockerfileに記述されたコマンドを上から1つずつ実行し、Docker イメージを作成してくれる。

手順

  1. プロジェクトのディレクトリを作成する。

  2. 作成したディレクトリ下にserver/src/index.tsを作成する。

  3. cd serverでディレクトリを移動した後、 npm init -y を実行して package.jsonを作成する。

  4. 2で作成したindex.tsに、以下を記述する。(こちら を参考にしました)

    index.ts
     const 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}`)
     })
    
  5. package.jsonに以下を追加する。

    package.json
    "scripts": {
     "start": "node src/index.ts"
    }
    
  6. yarn run startを実行し、ブラウザでhttp://localhost:3000/を確認する。「Hello World!」が表示されていれば成功で、一旦yarn run startは止めておきましょう。

    ここまでがexpressについて。ここからがdockerについて。
    この先は、こちらを参考にしました。

  7. docker desktopを起動する。

  8. serverディレクトリの直下にDockerfileファイルを作成する。(ファイル名を間違えると後でエラーが出るので注意)

  9. Dockerfileに以下を記述する。

    FROM node:18
    WORKDIR /app
    COPY package.json .
    COPY yarn.lock .
    RUN yarn install
    COPY . .
    CMD [ "node", "src/index.ts" ]
    

    nodeのバージョンとして指定できるタグは、こちらから参照できます。

  10. docker build --tag node-docker . を実行し、Dockerイメージをビルドする。
    冒頭でも説明した通り、node-dockerの部分については任意に設定できます。

  11. docker imagesを実行し、表示されるリストのREPOSITORIESの中に、今ビルドしたnode-dockerがあることを確認する。

  12. docker run --publish 3000:3000 node-dockerを実行し、portを公開する。

  13. 再びブラウザからhttp://localhost:3000/にアクセスし、「Hello World!」と表示されていれば成功です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1