dockerfile을 이용해서 node.js 기반, express로 구현한 웹 서버를 docker에 올리는 방법을 테스트해보겠습니다.
먼저 전체적인 파일의 구조는 아래와 같습니다.
테스트한 운영체제는 window 10 환경입니다! 도커도 window 버전을 사용했습니다.
전체적인 소스는 아래 github에서 확인할 수 있습니다.
https://github.com/kimdongjang/dockerfile_nodejs_test1
1. express 설치하기
express를 설치하려면 먼저 node.js가 설치가 되어 있어야합니다!
# npm install -g express
2. 파일 작성
package.json
{
"dependencies": {
"express" : "*"
},
"scripts": {
"start":"node server/index.js"
}
}
server폴더 생성 후, server 폴더 안에 index.js 작성
const express = require('express');
const app = express();
const port = 8080;
app.get('/', (req, res) => {
res.send('there');
})
app.listen(port, () => {
console.log('Listeing on port 8080');
})
3. Dockerfile 작성
제일 중요한 Dockerfile입니다. Dockerfile은 최대한 간단하게 작성하였고, 사용된 옵션에 대해 이해가 가지 않는다면 이전 글을 참고해주시길 바랍니다.
Dockerfile
From node:alpine
WORKDIR /usr/app
COPY ./ /usr/app
RUN npm install
CMD ["npm", "start"]
4. Dockerfile build
이제 작성한 dockerfile을 빌드해서 도커에 이미지를 생성해보겠습니다.
# docker build -t nodejs_test .
여기서 nodejs_test는 생성하는 이미지의 이름을 의미합니다! 이미지 이름 뒤에 나오는 . 은 도커 이미지의 경로인데, 특정 경로에 이미지를 보관하고 싶으면 임의로 입력하셔도 됩니다.
5. docker run
이제 이미지를 컨테이너로 실행시키는 과정입니다.
# docker run -itd -p 8080:80 –name <컨테이너이름> <이미지이름>
추가적으로 컨테이너를 실행해서 서버를 운용할 때는 도커에서 포트포워딩을 설정해주어야 하는데, 아래와 같은 옵션으로 설정하면 됩니다.
# docker run -p <host port number>:<container port number>/<protocol>
1) host port number : 호스트 시스템에서 사용되는 포트 번호
2) container port number : 컨테이너 내에서 사용되는 포트 번호
3) protocol : 프로토콜 유형.
예를 들어 -p 8080:80의 옵션을 설정할 경우, 호스트 시스템의 8080번 포트로 유입되는 트래픽은 모두 도커 컨테이너의 80번 포트로 전달되게 됩니다.
만약 다수의 포트 매핑이 필요할 경우에는 다수의 -p 옵션을 동시에 적용할 수 있습니다!
6. 컨테이너 실행 확인
정상적으로 작동합니다!
localhost:8080 으로 접속하면 접속이 잘 되는 것을 확인할 수 있습니다.
'Backend&Devops > Docker' 카테고리의 다른 글
[Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D) (0) | 2022.05.06 |
---|---|
[Docker] Docker Compose 문법 정리 (0) | 2021.12.23 |
[Dockerfile] Dockerfile이란? Dockerfile 옵션 (1) | 2021.12.21 |
[Docker] 도커에 젠킨스 설치, 도커에 젠킨스 연동 (0) | 2021.12.14 |
[Docker] 도커 명령어 정리 (1) | 2021.12.09 |