Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9013

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

$
0
0

前提

  • 筆者は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/appRUN 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';constexpress=require('express');// ConstantsconstPORT=8080;constHOST='0.0.0.0';// Appconstapp=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 !!

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

参考文献


Viewing all articles
Browse latest Browse all 9013

Trending Articles