본문 바로가기

프로그래밍

Docker 개념과 기초 연습 3(node js 앱 만들기)

도커 이미지가 생성되는 순서는 1. 도커 파일이 작성된다. 도커 파일은 도커 이미지를 만들기 위한 설정들이 들어가 있는 파일이다. 그러면 2. 도커 클라이언트에서 도커 파일에 입력된 내용이 전달되고 3. 도커 서버에서는 도커 클라이언트에 전달된 작업들을 한다. 그 다음 4.이미지가 생성이 된다.

 

그러면 도커 파일들은 어떻게 만들까?

 

1. (FROM) 베이스 이미지를 선택한다. 만약 NODEJS 기반으로 프로젝트를 만들고 싶으면 베이스 이미지를 nodejs로 설정해준다.

2. (COPY) 복사할 파일들을 선택한다.

3. (RUN) 베이스 이미지 이외의 파일을 받기 위한 명령어를 쓴다.

4. (CMD) 컨테이너를 시작할 때 실행 될 명령어를 써준다.

FROM microsoft/nanoserver
COPY testfile.txt c:\\
RUN dir c:\

위에 명령어를 보면 microsoft/nanoserver을 갖고온다음에

testfile.txt 파일을 c:\\에 복사한다. 이 c:\\은 로컬 환경이 아니라 nanoserver의 c:\\이다.

그리고 dir c:\ 의 파일을 받는다.

 

그러면 Node JS 서버를 만들어서 도커 파일 이미지를 만들고 실행해보자

 

먼저 새 폴더를 만들고 npm 패키지를 실행해준다.

mkdir node_docker
npm init

node_docker 폴더 밑에 Dockerfile, index.js를 만든다.

 

dockerfile 

FROM node:10

COPY ./ ./

RUN npm install

CMD ["node", "index.js"]

 

index.js

const express = require('express');

//constants
const PORT = 8080;

//APP
const app = express();
app.get('/', (req, res) => {
    res.send("is server")
});

app.listen(PORT);
console.log("is server");

 

package.json 은 밑에 내용 부분을 추가, 교체한다.

  "scripts": {
    "start":"node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express":"4.17.1"
  },

 

 

도커 파일을 빌드

docker build -t mynode/nodejs ./

 

도커 파일을 런

docker run -p 5000:8080 mynode/nodejs

앞에 8080은 로컬 브라우저의 8080이고 뒤에 8080은 컨테이너 안의 8080이다. 브라우저의 8080을 컨테이너 안의 8080으로 연결을 하겠다 라는 말이다.

 

브라우저 접속

localhost:5000번으로 접속하면 잘 접속된다.

docs.docker.com/engine/reference/builder/

 

Dockerfile reference

 

docs.docker.com

위 링크는 도커 파일 레퍼런스이다.  부족한 부분은 도커 파일 레퍼런스를 보면 된다.

 

Docker 개념과 기초 연습 1(쥬피터 노트북 설치와 도커허브

Docker 개념과 기초 연습 2(도커 명령어)