[AWS EC2, Github Action, Docker, Node] CICD 배포하기(1) - Dockerfile 만들기
차근차근 따라하면 할 수 있습니다 화이팅
● 단계 링크
▶ CICD 구축하기(1) - Dockerfile 만들기
CICD 구축하기(2) - EC2 인스턴스 생성하기, 세팅하기
CICD 구축하기(3) - github repository 세팅
목표
- Dockerfile을 작성한다
- 이미지와 컨테이너를 생성한다
목차
1. Dockerfile 작성
2. 이미지, 컨테이너 만들기
3. 리포지토리에 푸시하기
[1. Dockerfile 작성]
1. Dockerfile, .dockerignore
- 도커파일의 기본 문법은 https://sangddongvoid.tistory.com/214 에서 확인 가능하다
- .dockerignore파일에 node_modules 기재
- 아래 사진과 같이 루트경로 바로 아래에 만들면 된다
2. Dockerfile 예시
- 빌드와 프로덕션을 분리해 구현했다
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm i
COPY . .
RUN npx prisma generate && npm run build
FROM node:22-alpine AS production
WORKDIR /app
COPY --from=build ./app/dist ./dist
COPY --from=build ./app/node_modules/.prisma ./node_modules/.prisma
COPY --from=build ./app/package*.json ./
RUN npm i --omit-dev
EXPOSE 3001
CMD [ "npm", "run", "start:prod" ]
[2. 이미지, 컨테이너 만들기]
- 잘 빌드되는지 확인하기 위해 이미지와 컨테이너를 로컬에서 먼저 만들어보기로 한다
1. 이미지 생성하기
- my-web-image라는 이름으로 이미지를 생성하기 위해 아래 명령어를 입력한다
docker build -t my-web-image .
- 잘 생성되었는지 확인하기 위해 아래 명령어를 입력해 확인한다
docker image ls
- 잘 만들어졌다
2. 컨테이너 생성하기
- 방금 생성한 이미지를 활용한다
- 컨테이너 이름은 my-web-container로 한다
- 서버 포트는 3001을 사용하고, 컨테이너 포트는 3000을 이용한다 (도커파일에서 EXPOSE가 3001이므로 서버포트는 3001)
- 환경변수가 많아 일일히 도커파일에 적지 않고 명령어를 통해 .env파일을 적용하기로 한다
- 아래의 명령어를 입력한다
docker run --name my-web-container -d -p 3001:3000 --env-file .env my-web-image
- 잘 만들어졌는지 확인하기 위해 아래의 명령어를 입력한다
docker container ls
- 잘 만들어졌다
[3. 리포지토리에 푸시하기]
- 최종적으로 배포되는 브랜치에 푸시 또는 머지하면 된다
- 필자의 경우 main이 default 브랜치이므로 main에 푸시했다
다음 글 링크 ↓