DockerでNode.js環境を構築する

2023年6月5日

Dockerを来月から使用することになったので、勉強がてらNode.jsの環境を作成していこうと思う。

とりあえずVargrantでLinux環境を構築する

Vargrantファイルを用意します。git と vscode と GNOME をインストールしておきます。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.provision "docker"

  config.vm.network "private_network", ip: "192.168.95.10"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.cpus = 2
    vb.memory = "2048"
  end

  config.vm.provision "shell", inline: <<-SHELL
    # vscode install
    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
    yum check-update
    sudo yum install code

    # git install
    sudo yum -y install git
    
    # GNOME install
    sudo yum -y groupinstall "GNOME Desktop"
    sudo yum -y epel-release
    sudo systemctl set-default graphical.target
    systemctl get-default
    sudo shutdown -r now
  SHELL
end

vagrant up で起動します。

Dockerfile を作成して起動を行う

Dockerfileを任意のフォルダに作成します。

$ touch Dockerfile

同一パス上にリポジトリをクローンしておきます。

$ git clone リポジトリのパス

Dockderfileを作成します。

# 元イメージ
FROM centos:centos7

# nodejs npm パッケージをインストールします
RUN yum install -y epel-release
RUN yum install -y nodejs npm

# 今回起動するWebアプリケーションをコピーします
COPY /weblog /weblog
# weblogに移動して必要なパッケージをインストールします
RUN cd /weblog; npm install

# ポートを割り当てます
EXPOSE 8080

# docker run する際のコマンドを設定します
WORKDIR /weblog
CMD ["node", "app.js"]

作成したので、Docker イメージを作成します。

$ docker build -t {イメージ名} .

docker images を実行してイメージ一覧を確認します。

$ docker images

イメージが作成できたので、起動します。

$ docker run -p 8080:3000 -d  {イメージ名} 

実際に起動しているか確認します。

$ docker ps
起動されているのが確認できます

対象のIPアドレスにブラウザから接続してみます。

Webサイトが構築されていることがわかります

その他(削除や停止等)

コンテナの停止

$ docker stop [コンテナID]

コンテナの削除

$ docker rm [コンテナID]
# 一括
$ docker rm `docker ps -a -q` 

イメージの削除

$ docker rmi [イメージID]

コンテナにログイン(コマンドライン操作できる)

$ docker run -it [イメージ名] /bin/bash

DockerでNode.js環境を構築することができました。