본문 바로가기
Docker

[AWS EC2, Github Action, Docker, Node] CICD 배포하기(1) - Dockerfile 만들기

by 상똥 2024. 8. 6.

 

차근차근 따라하면 할 수 있습니다 화이팅


● 단계 링크

CICD 구축하기(1) -  Dockerfile 만들기

CICD 구축하기(2) - EC2 인스턴스 생성하기, 세팅하기

CICD 구축하기(3) - github repository 세팅

CICD 구축하기(4) - workflow 작성하기


목표

- 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에 푸시했다


다음 글 링크 ↓

CICD 구축하기(2) - EC2 인스턴스 생성하기, 세팅하기

'Docker' 카테고리의 다른 글

[Docker] 도커파일 작성법 (Node.js)  (0) 2024.08.02
[Docker] 도커의 기본적인 사용법, 실습  (0) 2024.07.25
[Docker] 도커의 동작 원리  (0) 2024.07.25
[Docker] 도커 기초  (0) 2024.07.24