키페어가 있다면 선택해주고, 없거나 새로만들고 싶으면 새 키 페어 생성으로 생성하자. (생성 시 기본적으로 키페어 유형은 RSA, 여기서는 Mobax를 사용하므로 파일 형식은 pem 추천)
기존에 보안 그룹을 만들어 두지 않았다면 아래와 같이 SSH 트래픽허용 / HTTPS 트래픽 허용 / HTTP 트래픽 허용을 선택해주자.(22 / 443 / 80 인바운드 포트가 열린다.) (추후 다른 포트를 사용할 경우 보안그룹에서 포트 설정을 해줘야 된다는 점을 기억하자.)
용량은 10기가 이상 gp3를 이용하는 것을 추천한다. aws신규 가입자는 프리티어로 비용없이 사용가능 하기 때문에 30기가로 설정해도 무방하다.
모두 선택했다면 인스턴시작을 눌러주자.
모든 인스턴스 보기를 눌러 확인해보자. (늦게 뜨는 경우가 있으니 새로고침하거나 기다려보자.)
퍼블릭 IPv4 주소를 확인하자. (해당 아이피는 동적 아이피이다. 인스턴스를 중지하고 재실행하면 바뀔 수 있다. 바뀌지 않게 하려면 탄력적 IP를 사용하자.)
3. EC2 접속 및 도커 세팅하기
MobaXterm을 켜서 접속 세팅을 하자.
Session을 누른다.
SSH 클릭
Reomte host는 EC2서버의 퍼블릭 주소를 선택한다.
Specify username은 리눅스 서버의 기본유저명을 말한다. 우분투의 경우 ubuntu
포트는 22
Advanced SSH settings를 클릭하고 Use private key를 체크한다.
확장자 없이 파일을 하나 만들고 이름을 Dockerfile 로 만든다. (만들기 어렵다면, 예제 프로젝트 내부에 도커파일을 만들어 두었으니 사용하면된다.)
아래와 같이 내용을 입력해주자. (1번 Jar파일 제작에서 정해준 이름에 따라 아래 ARG부분을 적절히 수정해주자. )
아래에 설명이 있으니 참고하자.
# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
#FROM openjdk:8-alpine3.9
FROM openjdk:8-jre-alpine3.9
# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone
# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app
# 작업 파일을 변수화 하기
# ARG (변수명)=(파일명)
ARG JAR_FILE=springdatajpa_project*.jar
# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
COPY ${JAR_FILE} application.jar
# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
ENTRYPOINT ["java","-jar","application.jar"]
도커파일과 Jar 파일을 드래그하여 폴더에 넣어주자.
도커 배포 순서
1. 이미지 만들기 docker bulid ~
2. 컨테이너 만들기 docker create
3. 컨테이너 실행하기 docker start
(컨테이너 만들기와 실행하기를 동시에 할 경우 docker run을 사용한다.)
해당 프로젝트 디렉토리로 이동해보자.
cd /home/ubuntu/project/
프로젝트를 이용하여 이미지를 만들어보자.
docker build [옵션] [ -t 이미지 명] [도커파일 경로]
-t 는 이미지에 이름을 붙여준다는 뜻이다.
. 은 도커파일의 경로이다. 아까 도커파일 경로로 이동했기 때문에 . (현재경로)로 입력한다.