서버

AWS - 프로젝트 배포하기(프론트)

heyheyhey 2022. 10. 25. 10:15
저번글에 AWS에 인스턴스를 만들어 봤습니다.
이제 AWS 환경에서 배포를 위해 도커 설치를 해보겠습니다.

 

도커란? 

- 도커는 컨테이너 기반의 가상화 플랫폼입니다.

- 독립된 환경을 만들어서 하드웨어를 효율적으로 활용할 수 있고, 개발 환경 (라이브러리,환경설정) 등이 분리되어 있어서 충돌을 방지할 수 있습니다.

 

도커 설치하기 

sudo apt-get install docker-ce docker-ce-cli containerd.io

설치 후 docker -v 를 이용해 설치가 되었는지 확인합니다.

 

 

환경을 다 세팅했다면 제 프로젝트를 도커를 이용해 올려야 합니다. 

저는 node.js 를 이용해 배포하기 보다 Nginx를 이용했습니다. 

Nginx 란

트래픽이 많은 웹사이트의 확장성을 위해 개발된 경량의 고성능 서버입니다.

적은 자원의 사용으로 높은 성능과 높은 동시성을 목표로 만들었습니다. 

 

Dockerfile 작성하기

FROM node:16.13.2 as build-stage
RUN mkdir /app
WORKDIR /app
EXPOSE 3000
RUN chmod -R 777 /app

COPY package*.json ./
RUN yarn install
COPY . .
RUN yarn build

FROM nginx:stable-alpine as production-stage

RUN rm /etc/nginx/conf.d/default.conf
COPY  ./nginx.conf /etc/nginx/conf.d

COPY --from=build-stage /app/build /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]

- 3000 번 포트를 이용해 배포를 할 것입니다.

nginx.conf

server {
    listen 3000;
    listen [::]:3000;
    server_name 13.209.81.39;
    location / {
      root /usr/share/nginx/html;
      index index.html;
      try_files $uri $uri/ /index.html;
    }
}

서버를 이용하지 않기 때문에 딱히 프록시와 관련된 내용은 없습니다. 

여기서 server_name 은 올릴 주소의 퍼블릭 IPv4 주소입니다. 

인스턴스에서 한가지 더 세팅해야 할 부분이 있습니다. 

보안 파트에서 인바운드 규칙, 아웃바운드 규칙이 있습니다. 

인바운드는 "외부에서 이 ip로 접근할 때 어떠한 포트로 접근하는 것을 허용하겠다" 를 의미하고 

아웃바운드는 "내부에서 외부로 어떠한 규칙을 갖는것만 내보내겠다" 를 의미하는 것 같습니다.

 

그래서 인바운드는 최소한으로 열고,

아웃바운드는 전부 열어두는 방식이 일반적입니다 ( 포트,프로토콜 전체 다 열려있다!) 

저희는 외부에서 3000번으로 접근할 것이기 때문에 인바운드 규칙에 추가를 해줍니다. 

보안그룹 밑의 파란색 id를 누르고  - 인바운드 규칙 편집 - 규칙 추가를 눌러 줍니다. 

유형: TCP , 포트는 3000번  소스 정보는 전체를 의미하는 (0.0.0.0) 를 선택하고 저장해줍니다 

 

도커를 사용하기 위한 준비를 마쳤습니다.

-> 2편으로