본문 바로가기
Programming

CI/CD #2 배포 구성하기 Dockerfile

by 개발자 염상진 2022. 12. 29.

 

 

 

 

 

이전글

CI/CD #1 배포 구성하기 Node.js 빌드

 

CI/CD 구성 Dockerfile 작성

 

이전 글에서는 기본적인 서버 프로그램 작성을 알아보았습니다.

이번 콘텐츠에서는 작성된 서버를 Dockerfile로 이미지화 하는 방법을 알아보겠습니다.

💡 Dockerfile이란?

도커를 통해 작성된 프로그램을 이미지화 하여 실행환경을 통일시켜주는 작업을 도와줍니다. Dockerfile을 통해 개발환경과 실행환경을 일치할 수 있도록 프로그램을 이미지라는 단위로 감싸서 배포 환경에 올릴 수 있습니다. 

배포 환경에서는 이미지를 다운로드 받아서 컨테이너를 실행할 수 있습니다. 만약 우분투 OS 환경에서 개발한 경우 Window에서 해당 프로그램을 실행하는 경우 환경변수가 안맞아 실행이 안되는 경우가 있었지만 도커를 통해 이 부분을 해결할 수 있습니다.

 

 

 

 

서버 프로그램 최상위 디렉토리에서 Dockerfile을 생성해줍니다.

$ touch Dockerfile

 

Dockerfile 내에 아래 코드를 입력해줍니다.

FROM node

COPY ./ ./

CMD [ "npm", "run", "start" ]
  • FROM node : 어떤 이미지에 코드를 올릴 지 결정합니다. 우리는 Express 서버를 다루기 때문에 node 이미지를 선택했습니다.
  • COPY ./ ./ : 현재 디렉토리(./) 파일을 최상위 디렉토리(./)에 복사합니다.
  • CMD [ "npm", "run", "start" ] : 이미지에서 해당 명령문을 실행합니다.

 

Dockerfile을 작성 한 후 로컬 환경에서 이미지를 빌드합니다.

⚠️ 주의사항

명령문 마지막에 점(.)을 꼭 찍어줘야 합니다. 
점(.)은 현재 디렉토리의 Dockerfile을 찾아서 빌드할 때 필요합니다.
$ sudo docker build --tag my-test-image:latest .
Sending build context to Docker daemon   6.05MB
Step 1/3 : FROM node
 ---> 548714e444f4
Step 2/3 : COPY ./ ./
 ---> 3721e510ac2b
Step 3/3 : CMD [ "npm", "run", "start" ]
 ---> Running in 0289cb10531f
Removing intermediate container 0289cb10531f
 ---> 89c6429fae7e
Successfully built 89c6429fae7e
Successfully tagged my-test-image:latest

 

 

 

 

 

 

Dockerfile로 이미지가 빌드가 완성되었습니다. 아래 명령어로 이미지를 확인합니다.

$ sudo docker images

 

이제 로컬 환경에서 빌드된 이미지를 실행합니다.

이미지를 실행하면 image -> container가 생성되고 프로그램이 작동합니다.

$ sudo docker run -p 9903:9902 my-test-image
  • -p 9903:9902는 포트 번호를 연결합니다. 로컬환경에서 9903으로 접속하면 이미지 내의 9902포트로 연결됩니다.

 

 

이제 서버 프로그램과 Dockerfile 작성까지 완료되었고, 기본적인 CI/CD를 위한 기본 작업이 완료되었습니다. 작성된 코드는 Github Repository를 생성하셔서 모두 push 해줍니다.

 

정리

 

이번 시간에는 작성된 서버 프로그램을 Docker로 이미지화 및 컨테이너 실행까지 진행했습니다. 

서버 프로그램을 도커로 이미지화 하여 배포 환경에 전달하는 방법은 실행환경에서 프로그램 이외 환경 구성 문제를 줄여주는 대표적인 방법입니다.

다음 콘텐츠에서는 Github Actions 설정 방법에 대해 알아봅니다.

 

🚀️ 도움이 되셨다면 구독좋아요 부탁드립니다 👍️

 

댓글