이전글
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 설정 방법에 대해 알아봅니다.
🚀️ 도움이 되셨다면 구독과 좋아요 부탁드립니다 👍️
'Programming' 카테고리의 다른 글
CI/CD #4 배포 구성하기 AWS EC2 [최종] (0) | 2022.12.29 |
---|---|
CI/CD #3 배포 구성하기 Github Actions (0) | 2022.12.29 |
CI/CD #1 배포 구성하기 Node.js 빌드 (0) | 2022.12.29 |
React build blank 페이지 뜰 때 해결법 (0) | 2022.12.27 |
ios 앱 개발 공부 순서 (0) | 2022.12.23 |
댓글