AWS ec2 개발환경 구축 및 애플리케이션 Dokerize 방법을 개략적으로 정리하려고 합니다.
Dockerize하려고 하는 애플리케이션 개발 환경은 다음과 같습니다.
Vue.js
SpringBoot
mysql
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