0
0

More than 3 years have passed since last update.

Docker ComposeでNode.jsの環境構築

Posted at

動機

Create React Appを少し遠回りしてはじめようをローカル環境を汚さずに実践したかっため、タイトルのような環境構築を目指しました。

最終的なディレクトリ構成

最終的なディレクトリ構成
node-docker/
    |--docker-compose.yml
    |--node/
        |--app/

docker-compose.yml

Docker Compose 概要
Compose とは、複数のコンテナを定義し実行する Docker アプリケーションのためのツールです。

まずプロジェクトフォルダnode-dockerを作成し、そこにdockercompose.ymlファイルを作成します。

現在のディレクトリ構成
node-docker/
    |--docker-compose.yml
docker-compose.yml
version: '3'
services:
  node:
    image: node:14.9.0-alpine3.10
    container_name: node
    volumes:
      - ./node/app:/app
    tty: true
    ports:
      - 3000:3000
version

docker-compose.ymlのファイルフォーマットのバージョン

services

各コンテナをサービスとして定義できます。

node

サービス名

image

コンテナを実行時に元となるイメージを指定します。
イメージが存在していなければ、ComposeはDocker Hubからpull(取得)を試みます。
Dockerfileからイメージを作成する場合は、例えばnodeディレクトリの下にDockerfileを作成し、以下のように指定します。
build: ./node

container_name

デフォルトで生成される名前の代わりに、カスタム・コンテナ名を指定します。なお、デフォルトだとnode-docker_node_1という名前になります。

volumes

ローカルのパス(左)とコンテナのパス(右)を共有します。

tty

端末を起動するかどうかを指定しています。(多分)

ports

ポートを公開します。ホストとポートを指定(ホスト:コンテナ)するか、コンテナのポートのみ指定します(ホスト側のポートはランダムに選ばれます)。
exposeはポートを露出し、リンクされたサービス間でのみアクセス可能になります。

コンテナの作成と起動

ここまでで必要なファイルが揃ったので、コンテナの作成と起動を行っていきます。
Dockerfileからイメージを作成する場合は、Docker-compose buildする必要がありますが、今回は既にビルドされたイメージをリモートから取得するので必要ありません。
作業はdocker-compose.ymlが置いてあるディレクトリ上で行います。

terminal
$ docker-compose up -d

dオプションにより、バックグラウンドで起動することができます。

nodeコンテナに入る

以上でnode環境は整いましたが、node環境はコンテナ上にあるため、作業はその上でする必要があります。
そのために、起動中のコンテナ内で指定したコマンドを実行できるexecコマンドを利用して、コンテナ上でシェル、端末を起動します。

terminal
$ docker-compose exec node sh

コンテナ内のディレクトリ構成は以下のようになっていて、docker-compose.ymlで指定したためコンテナでのappディレクトリとローカルのnode/appディレクトリは対応しています。

コンテナ内のディレクトリ構成
/
    |--app
    |--bin
    |--dev
    |--home
    |--lib
    |--media
    |--mnt
    |--opt
    |--proc
    |--root
    |--run
    |--sbin
    |--srv
    |--sys
    |--tmp
    |--usr
    |--var

作業は、ローカルと共有できているappディレクトリでした方が良いと思います。

参考

Compose file version 3 reference
Compose ファイル・リファレンス
Docker Compose - docker-compose.yml リファレンス
【初心者向け】Dockerで手軽にNode.js開発環境構築 (2)

0
0
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
0