VScode를 이용해서 간단한 node 샘플 app.js을 생성한다.
먼저 node init을 통해 package.json을 생성한다. 사용하는 lib는 express, nodemon 이다.
{
"name": "nodeindocker",
"version": "1.0.0",
"description": "node express app in docker",
"main": "app.js",
"dependencies": {},
"devDependencies": {
"express": "^4.17.1",
"nodemon": "^1.19.4"
},
"scripts": {
"start": "node app.js"
},
"author": "leedoing",
"license": "ISC"
}
샘플 node 서버 스크립트를 구성한다.
const express = require('express');
const app = express();
app.get('/', (req, res)=>{
res.send('Hello from express app')
})
const port = process.env.PORT || 8080;
app.listen(port, () =>{
console.log(`App is listening on ${port}`)
});
다음은 아래와 같이 docker-compose.yml 파일을 이용하여 express 컨테이너 이미지를 구성한다.
version: '2.3'
services:
express:
build: ./
command: nodemon --inspect=0.0.0.0:5858 app.js
volumes:
- ./:/nodeapp
- /nodeapp/node_modules
ports:
- "3000:8080"
- "5858:5858"
(윈도우의 경우 nodemon -L --inspecct=0.0.0.0:5858 app.js)
그리고 Dockerfile을 이용해서 컨테이너에서 필요한 커맨드를 입력한다. (node package 관리 등)
FROM node:10.16-alpine
RUN mkdir /nodeapp
WORKDIR /nodeapp
RUN npm i npm@latest -g
RUN npm i nodemon@latest -g
COPY package.json package-lock.json* /nodeapp/
RUN npm install --no-optional && npm cache clean --force
COPY . /nodeapp
CMD ["node", "app.js"]
.dockerignore 파일은 아래와 같다. Dockerfile, docker-compose, node_modules을 넣어준다.
*Dockerfile*
*docker-compose*
node_modules
이제 터미널에서 docker-compose up을 입력한다. 그럼 아래와 같이 node app 서버가 로컬에서 구동된다.
PS D:\docker-test\nodeindocker> docker-compose up
Starting nodeindocker_express_1 ... done
Attaching to nodeindocker_express_1
express_1 | [nodemon] 1.19.4
express_1 | [nodemon] to restart at any time, enter `rs`
express_1 | [nodemon] watching dir(s): *.*
express_1 | [nodemon] watching extensions: js,mjs,json
express_1 | [nodemon] starting `node --inspect=0.0.0.0:5858 app.js`
express_1 | Debugger listening on ws://0.0.0.0:5858/763871be-fa5e-4d15-954e-0025cdc847ac
express_1 | For help, see: https://nodejs.org/en/docs/inspector
express_1 | App is listening on 8080
그럼 브라우저에서 포트포워딩 된 3000번 포트로 접속하면 App.js로 띄운 화면을 볼 수 있다.
VScoed의 DEBUG에서 Docker: Atthach to Node를 선택한다.
그리고 아래와 같이 launch.json 추가하면 app.js 파일이 변경될 시 app에 자동 반영된다.
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Docker: Attach to Node",
"remoteRoot": "/nodeapp",
"localRoot": "${workspaceRoot}",
"port": 5858,
"restart": true
}
]
}
'잡부생활 > Container' 카테고리의 다른 글
도커컴포즈로 워드프레스 구성하기 (0) | 2019.12.24 |
---|---|
도커컴포즈로 Apache, PHP, MySQL 환경 구성하기 (0) | 2019.12.24 |
도커컴포즈로 리액트 환경 구성하기 (2) | 2019.11.18 |