목차 열기
티스토리 뷰
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
반응형
'Server > Docker' 카테고리의 다른 글
[Docker] MySQL 실행 (0) | 2021.02.17 |
---|---|
[Docker] Node.js 이미지 제작 후 실행 (0) | 2021.02.16 |
[Docker error] Nextcloud 업로드 오류 / request entity too large (0) | 2021.02.04 |
[Docker] vim 설치 오류 (0) | 2021.02.04 |
[Docker] Nextcloud 실행 (0) | 2021.02.04 |
[Docker] MariaDB 실행 (0) | 2021.02.04 |
[Docker] 도커 구성 / 명령어 / Configuration (0) | 2021.01.31 |
댓글