💡 준비사항
1. 실습용 데이터 서버가 하나라서 deleteAll()이 들어가는 테스트 코드는 주석처리하였다.
2..mvn이하,.idea이하,target이하,hello.iml,help.md를 제외한 나머지를 git에 올린다. (🚫에러)
3. 서버에 올리기 전에 로컬에서 packaging 테스트, 그리고 테스트코드, 환경변수, 디렉토리 등이 로컬과 분리되어 있는지 확인한다.
[순서]
1. EC2 인스턴스 생성 & Docker 설치
2. Maven 설치하기
3. git clone & maven packaging
4. 도커 빌드 & 실행
5. 확인하기
이전 블로그 포스팅 참고
[AWS, Docker] aws ec2 instance에 docker 설치하기
나머지 설정은 동일하며, 보안 그룹에서 8080포트를 열어 준다.
Ubuntu에서는 패키지 설치를 위해서 보편적으로 apt (Advance Packaging Tools) 명령어를 사용한다. apt는 기존의 apt-get, apt-cache 등의 통합으로 나온 패키지 매니징 툴이다.
apt update
apt install maven
apt update : 설치 가능한 패키지 리스트를 최신화apt upgrade : 실제 업데이트apt install : 패키지 설치apt remove : 패키지 삭제루트 또는 적당한 디렉토리에 프로젝트 깃을 클론한다.
git clone https://github.com/coastby/springboot-hospital-api.git
도커 컨테이너를 빌드하기 위해서는 .jar 파일이 있어야 한다.
프로젝트를 패키징하면 (maven을 빌드하면) target 폴더 안에 .jar 파일이 생성된다.
vim Dockerfile
아래 내용 작성하기
FROM openjdk:11-jdk-slim
VOLUME /tmp
ADD /target/*.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
그냥 mvn package를 하게되면 현재 프로젝트의 테스트코드는 독립적이지 않아 서버 상에서 통과하지 못하여 빌드를 실패한다. 참고 - 🚫에러
그래서 임시방편으로 테스트를 스킵하고 메이븐을 빌드한다.
mvn -DskipTests=true package
#프로젝트 폴더의 root directory 에서 실행
docker build -t springboot-jdbc-template .

생성되었는지 확인한다.
docker images #실행되기 전 확인가능
docker ps #실행된 후 확인가능 (run을 해야 실행된다.)


-p 8080:8080 : 호스트의 포트를 사용하기 위해 포트포워딩을 해주어야 한다.-e : yml 파일에는 로컬로 데이터소스 url이 설정되어 있어서 환경변수 데이터베이스가 있는 서버의 주소를 넘겨준다.docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql://[ec2도메인주소]:3306/likelion -e SPRING_PROFILES_ACTIVE=aws springboot-jdbc-template
SPRING_PROFILES_ACTIVE미니 프로젝트가 아닌 이상 대부분 기업용 서비스는 개발 (dev), 테스트 (test), 운영 (prod) 등으로 구동 환경을 세분화하여 서비스를 관리한다. 이런 식별 키워드를 Profile이라고 부른다. Profile을 저장함으로서 데이터베이스 접속 계정 및 옵션, 리소스, 로그 관리 정책 등을 profile 단위로 구분하여 효과적으로 관리할 수 있다. 스프링 부트는 직관적이고 편리한 profile 관리 방법을 제공한다.
SPRING_PROFILES_ACTIVE이다.application-{profile}.properties # 파일명 형식
application-dev.properties # 예시)
http://[DNS주소]:8080/swagger-ui/