목차 열기

티스토리 뷰

728x90
반응형

빌어먹을 nodemon 적용하다가 한나절 날아갔다. Node.js를 버려야하나 심각하게 고민하며 파일 수정 중 갑자기 됐다!

(..?)

 

Docker에서 Node.js를 설치하는 공식 문서 이후의 과정이다.

[Server/Docker] - [Docker] Node.js 설치

해당 글과의 차이점은 docker-compose.yml과 nodemon을 사용한다는 점이다.

docker-compose.yml은 docker run -v 옵션이 적용되지 않는 것 같아서(호스트와 도커 컨테이너 내부 동기화) 사용한다.

 

 

사용 환경 목적

서버와 작업 클라이언트는 같은 네트워크에 있다.

서버: 우분투 -- Docker -- Node.js

클라이언트: 윈도우10 -- VS Code(ftp-sync) -- SSH 연결

 

클라이언트 VS Code에서 작업 후, 저장하면 (아래에서는 server.js만) ftp-sync로 원격 서버에 파일을 업로드한 뒤, nodemon이 저장사항을 발견하여 서버를 재시작한다.

 

 

프로젝트 구성

/data/[프로젝트 이름]/app
.
├── Dockerfile
├── docker-compose.yml
├── node_modules
│   ├── ...
├── package-lock.json
├── package.json
└── server.js

 

Dockerfile

FROM node:14
  
# 앱 디렉터리 생성
WORKDIR /data/[프로젝트 이름]/app

# 앱 의존성 설치
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해
# 와일드카드를 사용
COPY package*.json ./

RUN npm install
# 프로덕션을 위한 코드를 빌드하는 경우
# RUN npm ci --only=production

RUN npm install -g nodemon

# 앱 소스 추가
COPY . .

EXPOSE 8080
CMD [ "nodemon", "-L", "server.js" ]

 

docker-compose.yml

version: '2.3'
services:
  express:
    build: ./
    container_name: express
    volumes:
      - ./:/data/[프로젝트 이름]/app
      - ./node_modules
    ports:
      - "49160:8080"

 

package.json

{
        "name": "docker_web_app",
        "version": "1.0.0",
        "description": "Node.js on Docker",
        "author": "First Last <first.last@example.com>",
        "main": "server.js",
        "scripts": {
                "start": "nodemon server.js"
        },
        "dependencies": {
                "express": "^4.16.1"
        }
}

 

server.js

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

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

const app = express();
app.get('/', (req, res) => {
   res.send(`Hello Nodemon Editwww${HOST}eee`);
});

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

 

Docker Compose로 빌드

프로젝트 디렉토리에서 해당 명령어를 입력한다. (/data/[app]/app 에서 실행)

docker-compose up -d --build

같은 포트를 사용 중이거나 기타 등등 충돌이 있으면 멈추는 듯하다.... SSH 연결 종료 후, 다시 시도한다.

Ctrl + C가 먹히지 않는다.

 

728x90
반응형
댓글
글 보관함
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total
Today
Yesterday