LoginSignup
1
0

More than 3 years have passed since last update.

[Node.js]docker-compose upで気楽に開発環境構築

Posted at

前提

  • 筆者はMac環境(試してないがWindowsでも動くと思う)
  • dockerコマンドが使える状態
  • npmコマンドが使える状態
  • nodeコマンドが使える状態
  • Dockerの基本的知識(イメージやコンテナの概念)を有する

対象

  • 環境構築を手っ取り早くしたい人
  • Node.jsをdockerで動かしたい人

環境

bash
$ docker -v
Docker version 20.10.2, build 2291f61

$ npm -v
6.14.5

$ node -v
v13.11.0

$ pwd
~/{project_name}

ファイル構成

project
{project_name}
 ├─ node_modules
 |   └─ ...
 ├─ src
 |   └─ index.js
 └─ docker-compose.yml
 └─ Dockerfile
 └─ package.json
 └─ package-lock.json

node_modulesの中身は割愛

Dockerfileの設定

基本的にはこちらの公式ドキュメント通りにやれば良いが、楽に開発したいたので修正する

{project_name}/Dockerfile
FROM node:12

# アプリケーションディレクトリを作成する
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Dockerfileが置かれているディレクトリ以下をコピー
ADD . /usr/src/app

# アプリケーションの依存関係をインストールする
COPY package*.json /usr/src/app
RUN npm install
# 本番用にコードを作成している場合
# RUN npm install --only=production

# アプリケーションのソースをバンドルする
COPY . /usr/src/app
  • FROM node:1212の部分はこちらを参考に自身の好きなバージョンで!
  • WORKDIR /usr/src/app:dockerコンテナの作業ディレクトリを指定
    (変更する場合はDockerfileと後に紹介するdocker-compose.ymlに書かれた/usr/src/appを全て変更する必要あり)

docker-compose.ymlの設定

{project_name}/docker-compose.yml
version: '3'
services:
  app:
    build: .
    command: bash -c 'node src/index.js'
    image: node_test
    volumes: .:/usr/src/app
    ports: "8080:8080"
    tty: true
  • command: bash -c 'node src/index.js'docker-compose upコマンドでコンテナ起動の際に呼ばれるコマンド
  • image: node_test:image名は任意で変更(分かりやすいプロジェクト名とか)
  • volumes: .:/usr/src/app:ローカルのファイルとdockerコンテナ内のファイルを同期させる
  • ports: "8080:8080":ローカルとコンテナ両方とも8080番ポートを使用
  • tty: truedocker-compose upでコンテナが終了しないようにする

(index.jsの設定)

基本的に自身の環境による
以下はこちらの雛形

'use strict';
const express = require('express');

// Constants
const PORT = 8080;
const HOST = '0.0.0.0';

// App
const app = express();
app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

起動

bash
$ docker-compose up

Have fun !!

※ イメージができてない場合、コンテナ起動までに時間がかかる

参考文献

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