drexqq

[Docker] docker에 Node.js배포하기 ! 본문

ETC/docker

[Docker] docker에 Node.js배포하기 !

drexqq 2020. 12. 14. 15:08
728x90
반응형

전에 했던 게시글에서 이어지는 게시물이다.

 

한 달 동안 42서울 라피신과정을 진행하느라고 따로 개인적인 공부를 할 시간이 없어서 드디어 다시 시작하게 되었다.

 

일단 만들어둔 인스턴스에 putty를 사용하여 접속해 준 뒤에

 

sudo apt install nodejs
sudo apt install npm

위 두 명령어를 이용해서 ubuntu 18.04환경에 nodejs와 npm을 isntall해준다.

 

그 뒤에 디렉토리를 하나 만들어서 그 안에서 작업을 해 줄 계획이다.

 

만들어둔 디렉토리 안에 들어가서

 

npm init

명령어를 사용해 package.json파일을 하나 만들어 준다.

 

npm init명령어를 사용하게 되면 여러가지를 정할 수 있게 되는데 나는 그냥 전부다 엔터를 쳐서 넘어갔다.

 

그 뒤에 nodejs를 서버로 활용할 생각이니 express도 설치해 준다

 

npm install --save express

여기서 --saev옵션은

--save 옵션을 통해 설치된 Node 모듈은 package.json 파일 내의 dependencies 목록에 추가됩니다. 이후 app 디렉토리에서 npm install을 실행하면 종속 항목 목록 내의 모듈이 자동으로 설치됩니다.

 

이러한 기능을 해준다고 expressjs.com/ko/starter/installing.html

 

Express 설치

설치 Node.js가 이미 설치되었다고 가정한 상태에서, 애플리케이션을 보관할 디렉토리를 작성하고 그 디렉토리를 작업 디렉토리로 설정하십시오. $ mkdir myapp $ cd myapp npm init 명령을 이용하여 애플

expressjs.com

이곳에 나와있다.

 

명령어를 입력하게 되면 npm init을 통해 만든 package.json의 dependencies에 express가 추가되어 있는 걸 확인할 수 있다.

 

그 뒤에 node.js라던지 index.js라던지 js파일을 하나 생성해서 아래와 같이 입력해주고 저장해준다 !

위 코드는 exprses서버의 가장 기본적인 소스 코드다.

 

expressjs.com/ko/guide/routing.html

 

Express 라우팅

라우팅 라우팅은 애플리케이션 엔드 포인트(URI)의 정의, 그리고 URI가 클라이언트 요청에 응답하는 방식을 말합니다. 라우팅에 대한 소개는 기본 라우팅을 참조하십시오. 다음 코드는 매우 기본

expressjs.com

마찬가지로 expressjs.com에서 확인 할 수 있다.

 

모두 저장을 해준 뒤에 

 

node <yourFileName>

을 입력해 주면

 

my port is 3000 !! 이라는 텍스트가 터미널 창에 나타나게 되고

 

설치해둔 탄력적 IP에 포트번호 3000번으로 들어가게 되면 아무것도 없는 창에 Hello Node.js를 확인할 수 있다.

 

만약 설치해둔 탄력적 IP에 접속이 되지 않는 다면 aws에 들어가서 보안그룹에 포트번호를 열어주면 접속을 할 수 있게 된다.

 

이제 nodejs서버를 만들었으니 docker를 활용해볼 시간이다.

 

일단은 docker을 활용하기 위해선 DockerFile을 만들어 주어야 한다.

 

그러기 전에 일단 npm init으로 만든 package.json을 약간 수정해 줘야겠다.

 

그 전엔 node <yourFileName>으로 실행을 했더라면 이제는 npm start라는 명령어로 간단하게 시작할 수 있도록 바꿔보겠다.

 

일단 package.json을 들어가서 

 

이런식으로 scripts부분에 "start": "node <yourFileName>"을 입력해준다 !

 

그런 뒤에 Dockerfile이란 녀석을 만들어 준 뒤 아래와 같이 입력해준다.

1줄은 Docker Hub에 있는 node:12-alpine 이미지 사용하기 위해 입력한 것이다.

2줄은 이미지 안에 작업을 위한 디렉토리 설정을 위한 것이다.

3줄은 package.json을 해당 폴더로 복사하는 것이다.

4줄은 package.json안에 있는 모듈들을 설치하는 것이다.

5줄은 모든 파일을 작업을 위한 디렉토리로 복사해주는 것이다

6줄은 CMD는 도커가 실행될때 실행되는 명령어를 정의이다.

7줄은 3000번 포트로 실행이다.

 

여기서 주의할 점은 Dockerfile의 이름을 제일 앞 자리만 대문자로 해주고 해야 한다는 점이다 !

 

나도 DockerFile이라고 해뒀다가 삽질했다..

 

그리고 .dockerignore파일을 만들어서 node_module을 추가해준다.

 

.gitignore와 같은 역할을 하는 것 같다.

 

이제 빌드를 해줘야 한다. 빌드를 하는 명령어는

 

sudo docker build --tag docker-node-test .

나는 이런식으로 했다

 

하나씩 설명을 해보자면 docker build --tag [repository 이름]:[태그]  [dockerfile이 있는 경로] 이런식이 되겠다.

 

이제 docker images명령어로 확인해보면 방금 만든 image가 추가되어 있을 것이다.

 

도커이미지를 실행 시키려면

 

sudo docker run -p 3000:3000 docker-node-test

 

명령어를 입력하고 해당 IP 3000번 포트로 접속을 하게 되면 확인을 할 수 있다 !!

728x90
반응형
Comments