간단하게 merci app의 ec2 서버를 하나 생성했다.
원래는 퇴근 후 여가시간에 merci 프로젝트를 개발하려고 하였으나 가끔 근무중에 일이 없어서 시간이 남는 경우가 생긴다.
내일은 해야할 일이 존재하나 일의 양이 많은 편은 아니라서 혹시 여유시간이 남을걸 대비해 ec2 서버를 하나 구축했다.(서버때문이라기보단 db때문에 ec2 서버를 구축했다.)
내 모든 aws 계정의 free tier 혜택은 아쉽게도 이미 만료된지 오래지만 또한번의 free tier 혜택을 이용하고 싶어 새로 이메일을 하나 파고 새 aws 계정을 만들었다.
free tier 혜택을 누릴 수 있는 인스턴스는 t2.micro뿐이므로 t2.micro 인스턴스를 선택하고 ec2 서버 하나를 만든다. 그렇게 따끈따끈한 t2.micro 인스턴스에 무사히 접속하면 이제 docker님의 마법이 시작된다.
db의 비중이 제법 큰 프로젝트라면 당연히 db를 따로 구축해야겠지만 merci는 나만의 편의성을 증진시킬 목적으로만 서비스되기 때문에(only 1 user) 그리고 지금은 완전 초창기라 db 비중이 크지 않을 것이므로 ec2 내에 docker로 db 이미지와 tomcat 이미지를 만들어 두개를 같이 돌리기로 결정하였다.
다음은 내가 친 명령어들이다.
일단 docker를 ec2 서버에 설치해야한다..
(도커 설치는 https://haengsin.tistory.com/128 블로그를 참조했습니다.)
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl status docker
sudo docker run hello-world
hello-world 이미지가 잘 동작하는걸 보니 도커가 성공적으로 설치되었다.
이제 도커가 설치됐으니 db 이미지를 먼저 만들어보자.
sudo docker pull postgres:14.1
sudo docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=(YOUR PASSWORD HERE) -d postgres
sudo docker exec -it (your created docker container id) bash
postgresql의 bash 창을 열어서는 merci라는 이름의 database를 하나 만들어주었다.
이제 dbeaver를 열어 한번 생성된 database에 접속해보자
아마 이렇게만하고나서 바로 database에 접속하려고 시도하면 접속이 안될 것이다.
도커에 무슨 문제가 있는 것이 아니라면 ec2 인바운드 설정을 안해줘서 접속이 안될 가능성이 높다.
ec2 보안그룹에서 인바운드 규칙에 postgresql 포트를 열어준다. (위의 경우 5432)
(이렇게하면 아마 잘 접속될 것이다..!)
이제 db도 잘 동작을 하니 톰캣 이미지를 하나 만들어보자.
sudo docker run --name merci-server -p 80:8080 tomcat:9.0
이 경우도 인바운드, 아웃바운드 설정을 빠뜨리면 안된다. (포트 80)