AWS ec2 개발환경 구축 및 애플리케이션 Dokerize 방법을 개략적으로 정리하려고 합니다.
Dockerize하려고 하는 애플리케이션 개발 환경은 다음과 같습니다.
Vue.jsSpringBootmysql
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를 갖게 됩니다.
아래 그림은 ssh 프로토콜을 이용해 client와 server가 통신하는 흐름을 나타낸 것입니다.

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

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

그외 애플케이션 동작을 위해 사용하는 포트를 미리 지정해놓으면 외부접속으로 인해 발생하는 문제를 사전에 차단할 수 있습니다. 저는 Vue는 8080번 포트, SpringBoot는 80번 포트, mysql은 3306포트를 사용했습니다.
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로 접속해서 프레임워크가 정상적으로 동작하는지 확인합니다.
로컬PC에 있는 mysql dump 파일들을 ec2로 복사한 후 import하는 shell 명령을 수행합니다. 순서는 다음과 같습니다.
mysql workbench에서 관련 dump 파일을 export합니다.
window cmd에서 scp 명령을 이용해 dump 파일들을 전송합니다.
scp -i "C:\Users\jaeyoung\.ssh\primarykeyPath\primarykey.pem" C:\Dump\*.sql ubuntu@[ip addr]:~\mysqldump 명령을 이용해 sql 파일을 데이터베이스에 반영합니다.
mysqldump -uroot -p1234 databasename > dump.sql