기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[Dockerfile] Dockerfile express 연동하기
Backend&Devops/Docker

[Dockerfile] Dockerfile express 연동하기

2021. 12. 21. 16:19
반응형

dockerfile을 이용해서 node.js 기반, express로 구현한 웹 서버를 docker에 올리는 방법을 테스트해보겠습니다.

먼저 전체적인 파일의 구조는 아래와 같습니다.

테스트한 운영체제는 window 10 환경입니다! 도커도 window 버전을 사용했습니다. 

 

전체적인 소스는 아래 github에서 확인할 수 있습니다.

https://github.com/kimdongjang/dockerfile_nodejs_test1

 

GitHub - kimdongjang/dockerfile_nodejs_test1

Contribute to kimdongjang/dockerfile_nodejs_test1 development by creating an account on GitHub.

github.com

 

 

 

 

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은 최대한 간단하게 작성하였고, 사용된 옵션에 대해 이해가 가지 않는다면 이전 글을 참고해주시길 바랍니다.

https://narup.tistory.com/204

 

[Dockerfile] Dockerfile이란? Dockerfile 옵션

Dockerfile은 인프라 구성을 효을적으로 관리하기 위한 파일로, 쉘 파일과 비슷한 dockerfile을 작성해서 해당 도커 이미지를 사용자의 환경에 맞춰서 운영할 수 있도록 합니다. 위 도커 파일을 build하

narup.tistory.com

 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
    'Backend&Devops/Docker' 카테고리의 다른 글
    • [Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D)
    • [Docker] Docker Compose 문법 정리
    • [Dockerfile] Dockerfile이란? Dockerfile 옵션
    • [Docker] 도커에 젠킨스 설치, 도커에 젠킨스 연동
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바