[AWS] 고정 IP를 이용한 클라우드 서비스 배포
Updated:
👩🏻💻 Elastic Compute Cloud / Elastic IP/ Docker Compose를 이용하여 ec2에 애플리케이션을 배포합니다.
Docker Compose 설치 및 배포
EC2에 접속하여 도커 및 Git을 설치해 보자.
1. Git 설치
#Perform a quick update on your instance:
$ sudo yum update -y
#Install git in your EC2 instance
$ sudo yum install git -y
#Check git version
$ git version
2. 도커, 도커 컴포즈 설치 및 시작
docker client와 server(docker daemon)간 통신 방식은 기본적으로 unix domain socket(IPC socket)을 사용하며, 내부적으로 /var/run/docker.sock파일을 사용하여 통신한다. 따라서, 아래와 같이 설치 후 권한을 부여한다
//도커 설치
$ sudo yum install docker
$ docker -v
// 도커 컴포즈 설치
$ sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
// 도커 시작하기
$ sudo systemctl start docker
// 실행 권한 적용
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo chmod 666 /var/run/docker.sock
$ docker-compose -v
3. Docker Compose 파일이 존재하는 소스 내려받기
$ git clone [git web URL]
4. Docker 환경변수
로컬에서 개발할 때, DB 계정 정보나 외부에 노출되면 안되는 값들을 따로 제외하여 관리하였고 이를 도커 컨테이너를 실행할 때 전달해주어야 하는데 이때 .ENV 파일을 사용할 수 있다.
docker-compose를 사용할때 .env라는 파일에 환경변수를 사용하면 자동으로 참조하여 사용할 수 있다.
이를 동일하게 EC2에서도 docker-compose파일이 있는 위치에 아래와 같이 환경변수 값들을 추가해 주어서 docker-compose 실행시 해당 값들을 참조하여 컨테이너를 실행시킬 수 있게 해준다.
$ vi .env
SPRING_DATASOURCE_USERNAME=root
SPRING_DATASOURCE_PASSWORD=1234
.env 파일을 생성후 아래 명령어를 통해 값을 확인 가능하다.
$ docker-compose config
5. JDK 설치 및 jar 파일 생성
아래와 같이 Amazon에서 제공하는 OpenJDK인 Amazon Coretto를 다운받아 간편하게 설치할 수 있다.
# aws coreetto 다운로드
$ sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm
# jdk11 설치
$ sudo yum localinstall jdk11.rpm
// 테스트 케이스 제외하고, jar 파일 빌드만 진행
$ ./gradlew clean build -x test
만약 gradlew 명령어를 실행할 때 Permission 문제가 발생하는 경우, 아래 명령어를 실행해서 실행권한을 먼저 준 후 위 ./gradlew를 실행한다.
$ chmod +x ./gradlew
6. Docker 이미지 받고 Docker Compose 실행
$ docker-compose up --build
docker-compose를 이용해서 애플리케이션을 실행시킨다.
위에서 적용한 Elastic IP를 통해 접속하게 되면, 정상적으로 애플리케이션을 접속하는 것을 확인 할 수 있다.
reference
https://wonyong-jang.github.io/aws/2022/06/05/AWS-EC2-Elastic-IP.html