AWS ec2 개발환경 및 애플리케이션 Dokerize

nunddu·2021년 7월 2일
0

AWS ec2 개발환경 구축 및 애플리케이션 Dokerize 방법을 개략적으로 정리하려고 합니다.

Dockerize하려고 하는 애플리케이션 개발 환경은 다음과 같습니다.

  • front-end : Vue.js
  • back-end : SpringBoot
  • DB : mysql

AWS ec2 instance 생성하기

AWS에서 ec2 instance를 생성하고, linux 환경을 사용하기 위한 필수적인 설정을 해줍니다. ec2를 운용하기 위해 필수적으로 키 페어 생성, 포트포워딩을 해줘야합니다. 그외 cpu, memory 등의 용량 할당을 필요에 맞게 설정합니다.

키 페어 생성


desktop에서 ec2에 접속하기 위해서는 ssh 프로토콜을 이용해야 하고, 이때 사용되는 key는 ec2 instance 생성 시 새로운 키 페어 쌍 or 기존 키 페어 쌍을 선택해서 적용할 수 있습니다. 키 페어 적용 시 해당 private key를 desktop의 안전한 경로에 저장합니다.
(private key는 보통 C:/Users/username/.ssh/ 경로에 보관합니다.)
instance 생성을 마치면 ec2는 public key를 유지하게 되고, 내 로컬에는 private key를 갖게 됩니다.

server와 client간의 ssh 통신 흐름

아래 그림은 ssh 프로토콜을 이용해 client와 server가 통신하는 흐름을 나타낸 것입니다.

ec2 접속

생성된 private key를 이용해 ec2에 ssh 프로토콜로 접속할 수 있습니다. ssh통신을 위해 사용하는 가장 대표적인 프로그램은 PuTTy.exeXshell입니다. 개인적으로는 Xshell을 추천합니다.
aws ec2 instance 정보에서 확인할 수 있는 DNS, port(ssh는 기본 22번 port 사용) 등을 입력하고 접속하면 됩니다.

⚠️ 일부 시설 wifi를 사용할 경우 22번 port를 사용할 수 없습니다.

포트포워딩

ec2 instance를 생성하면 기본적으로 22번 포트만 사용할 수 있게 세팅되지만
ec2 - 보안그룹 - 인바운드 규칙에서 사용하고자하는 포트를 개방할 수 있습니다. 22번 포트를 사용하지 못하는 경우를 대비해 22222번 포트를 포워딩합니다.

그외 애플케이션 동작을 위해 사용하는 포트를 미리 지정해놓으면 외부접속으로 인해 발생하는 문제를 사전에 차단할 수 있습니다. 저는 Vue는 8080번 포트, SpringBoot는 80번 포트, mysql은 3306포트를 사용했습니다.

  • Vue.js : 8080 port
  • SpringBoot : 80 port
  • mysql : 3306 port

Dokerize process

front-end, back-end를 database 등을 도커 컨테이너화하기 위해서는 다음과 같은 과정을 거쳐야합니다.

Source code clone
git pull [git repo url]로 저장소 clone

Libray install & bulid
npm install, yarn install, mvn package 등으로 빌드 실행

프로젝트 최상단에 Dockerize 파일 생성
front-end, back-end 각각 프로젝트 최상단에 Dockerize 파일을 생성하고 내용을 입력합니다.
Vuejs Dockerize file
SpringBoot Dockerize file

Docker Build
front-end, back-end 각각 프로젝트 최상단에서 docker build . -t [docker image name]으로 docker image 생성

Docker 컨테이너 실행
docker run -it -p 8000:8000 [docker image name]로 생성한 image 실행.
-p arguments는 ec2 instance의 port와 docker container 내부에서 사용하는 port를 연결한다는 의미입니다. [ec2 port]:[docker container port]

접속
ec2 DNS로 접속해서 프레임워크가 정상적으로 동작하는지 확인합니다.

Mysql Dump import

로컬PC에 있는 mysql dump 파일들을 ec2로 복사한 후 import하는 shell 명령을 수행합니다. 순서는 다음과 같습니다.

1. dump file export

mysql workbench에서 관련 dump 파일을 export합니다.

2. window to linux 파일 전송

window cmd에서 scp 명령을 이용해 dump 파일들을 전송합니다.

  • ex) scp -i "C:\Users\jaeyoung\.ssh\primarykeyPath\primarykey.pem" C:\Dump\*.sql ubuntu@[ip addr]:~\

3. dump file import

mysqldump 명령을 이용해 sql 파일을 데이터베이스에 반영합니다.

  • ex) mysqldump -uroot -p1234 databasename > dump.sql

Docker Compose

0개의 댓글