AWS - 프로젝트 배포하기(프론트)
저번글에 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편으로