-
도커에서 node 서버 실행시키기카테고리 없음 2020. 1. 28. 17:40
https://docs.docker.com/toolbox/toolbox_install_windows/
현재 DOCKER 최신버전은 WINDOW HOME 버전을 지원하지 않으므로 Docker toolbox를 설치하도록 한다.
※ 툴박스를 설치하면 자동으로 설치되는 것들 ※
- 도커 엔진이 이미지 및 컨테이너를 생성할 수 있도록 해주는 도커 클라이언트(Docker Client)
- 윈도우 터미널에서 사용하는 도커 엔진 명령어를 이용하게 해주는 도커 머신(Docker Machine)
- 도커 컴포즈(Docker Compose) 기능
- 도커 GUI 도구인 카이트메틱(Kitematic)
- 도커 명령어 입력이 가능한 도커 빠른시작 터미널(Docker QuickStart Shell)
- 오라클 VM VirtualBox
설치후 Docker QuickStartShell 을 클릭해서 진입하도록 한다.
- Docker 에 node 서버 동작 시키기
1. 폴더를 만들고 npm init 을통해 package.json 파일을 만들어본다 .
$ mkdir ./docker-node $ cd ./docker-node $ npm init $ npm install --save express
// package.json { "name": "docker-node", "version": "1.0.0", "description": "docker node test", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "seo", "license": "MIT", "dependencies": { "express": "^4.16.3" } }
2. node.js 서버 실행을 위한 index.js 파일을 만들어본다.
$ vi index.js
index.js
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('hello world'); }); //80번 포트를 사용 app.listen(80, () => { console.log('test listening on port 80'); });
3. 모듈파일을 복사하지 않기위한 dockerignore 파일을 만든다.
$ vi .dockerignore
node_modules/
4. Dockerfile을 만든다 .
(직접 도커이미지를 만들고자 한다면 Dockerfile을 사용한다.)
$ vi Dockerfile
FROM node:8 COPY . . RUN npm install EXPOSE 80 WORKDIR / CMD node index.js
FROM node:8 // 기반으로 할 이미지를 설정
COPY . . // 전부 복사
RUN npm install //RUN을 이용해서 명령어를 실행한다
EXPOSE 80 // 80번 포트를 열어 웹서버에 정상접근 하도록한다.
WORKDIR // 이후에 CMD 명령어가 실행될 경로를 지정
CMD node index.js // node 명령어를 이용해 2번에서 작성한 index.js 파일을 실행시켜 서버를 구동한다.
$ docker build --tag docker-node:dev .
위 명령어는 특정한 tag이름으로 이미지를 build하는 명령어이다.
docker-node 라는 이름으로 이미지를 만든다.
여기서 주의할 점은 . <- 온점이 들어가게 되는 데 온점대신 url 등 다양한 내용이 들어갈 수 있으나,
온점을 찍어서 마무리를 지어주도록한다.
$docker images
해당 명령어는 현재 docker machine 위에 생성된 이미지를 확인할 수 있다.
docker run --name docker-node-container -d -p 80:80 docker-node:dev
docker run --name (컨테이너 이름) -d -p 80:80 (이미지 이름):(버전 정보)
해당 명령어를 실행하면
-d 옵션은 데몬이다. 데이터베이스 서버나 계속해서 실행 되고 있어야하는 서비스에 주로 이용된다.
-p 옵션을 이용해 호스트 서버의 80번 포트와 도커서버의 80번 포트를 연결한다.
docker-machine ip
를 이용해 해당 도커머신의 ip를 확인후 들어가본다.
해당 node 서버가 잘 동작하는것을 확인 할 수 있다.