programming javascript

Dockerイメージビルド時にNode.jsをインストールするようにします。

参考ページ

環境

  • Windows 10 64ビット
  • Ubuntu 22.04.3 LTS (WSLで起動している)
  • Docker Engine 26.0.0
  • Amazon Linux 2023(DockerコンテナのOS)

インストールの流れ

  1. Node.jsインストール用のスクリプトを作成する。
  2. Dockerイメージビルド時にNode.jsをインストールする。
  3. インストールの確認をする。

1. Node.jsインストール用のスクリプトを作成する

Node.jsをインストールするためのスクリプトを作成します。

nvm(Node Version Manager)を使ってNode.jsをインストールするスクリプトを作成します。
このページを参考にスクリプトを作ります。
今回は install-node.sh という名前で保存しています。

install-node.sh :

#!/bin/bash

set -euxo pipefail

# nvmのインストーラーを取得してbashコマンドで実行する
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# nvmを読み込む
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Node.jsのバージョンを指定できるようにする
# 第1引数でバージョンを指定できるようにする
VERSION=$1
# Node.jsをインストールする
nvm install $VERSION

2. Dockerイメージビルド時にNode.jsをインストールする

Dockerイメージビルド時にNode.jsをインストールするようにします。

上記のスクリプト(install-node.sh)をイメージビルド時に実行するようにします。
Dockerfile を作成します。install-node.sh と同じ場所に作成しています。

Dockerfile :

# 今回はAmazon Linux 2023を使用する
FROM amazonlinux:2023

# nvmのインストールに必要なのでtarとgzipをインストールする
# 任意のバージョンを指定する
RUN yum -y install tar-1.34 gzip-1.12

# .bashrcを作成する
# nvmインストール時に自動で.bashrcにnvmを読み込む処理を書いてくれる
# これをすることでbash起動時に自動でnvmが読み込まれるようになる
RUN touch /root/.bashrc
# install-node.shを任意の場所にコピーする
COPY install-node.sh /tmp/install-node.sh
# install-node.shを実行する
# Node.jsのバージョンを引数として指定する
RUN /tmp/install-node.sh 20.14.0

3. インストールの確認をする

Node.jsがインストールされているか確認します。

Dockerfile と同じ場所で以下を実行します。

$ docker build . -t installed_node
$ docker run -it --rm --name node_verification installed_node bash

上記のコマンドで、installed_node という名前のDockerイメージをビルドし、node_verification という名前のDockerコンテナを起動して接続しています。

コンテナ内で以下を実行します。

# node -v
v20.14.0
# npm -v
10.7.0

Node.js、npm(Node Package Manager)のバージョンが表示され、Node.jsがインストールされていることを確認できました。