0. 환경
- Spring Boot 3.xx
- Java 17
- JDK corretto17
1. 스프링 부트 프로젝트
1) TestController 생성
참고: build.gradle 의존성은 다음과 같다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-devtools'
}
2. Docker 파일
1) Docker 파일 생성
루트 프로젝트 하위에 Docker 파일을 생성한다.
2) Docker File 작성
FROM amazoncorretto:17
ARG JAR_FILE_PATH=./build/libs/*.jar
COPY $JAR_FILE_PATH app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
• FROM amazoncorretto:17
- Amazon Corretto 17 환경
• ARG JAR_FILE_PATH=./build/libs/*.jar
- ARG 명령어를 사용하여 JAR_FILE_PATH 라는 변수를 선언하고 값 설정
• COPY $JAR_FILE_PATH app.jar
- COPY 명령어를 사용하여 지정한 경로의 JAR 파일을 app.jar라는 이름으로 복사
• EXPOSE 8080
- 8080 포트를 열 것임을 명시
• ENTRYPOINT ["java", "-jar", "app.jar"]
- ENTRYPOINT 명령어를 사용하여 컨테이너가 시작될 때 실행할 명령어 지정
- 컨테이너가 시작될 때 복사된 app.jar 파일이 자동으로 실행
3) gradle 빌드
프로젝트 내의 Git Bash 터미널을 열어서 다음 명령을 입력한다.
./gradlew build
빌드가 완료되면 루트 폴더 하위의 build/libs 경로에 .jar 파일이 생성된 것을 확인할 수 있다.
3. Docker 허브(링크)
1) Docker 설치 및 실행
2) 허브에 이미지 업로드
프로젝트의 Git Bash 터미널에 다음 명령어를 순서대로 입력한다.
//이미지 빌드
docker build -t 도커ID/허브Repo이름
//도커 로그인
docker login
//이미지 업로드
docker push 도커ID/허브Repo이름
모두 완료되면 이미지가 업로드 된 것을 확인 할 수 있다.
4. AWS EC2 배포
1) EC2에 도커 설치
//업데이트
sudo yum update -y
//도커 설치
sudo yum install docker -y
//버전 확인
docker -v
//도커 실행
sudo service docker start
//도커 그룹에 사용자 추가
sudo usermod -aG docker ec2-user
//도커 관련 권한
sudo chmod 666 /var/run/docker.sock
도커 그룹에 사용자를 추가했다면, 다음에 접속할 때는 sudo 없이 명령어를 입력할 수 있다. (ex: docker run hello-world)
2) 이미지 가져오기
//이미지 가져오기
sudo docker pull dockerID/허브Repo이름
3) 도커 이미지로 컨테이너 실행 (배포)
//컨테이너 실행
sudo docker run -p 8080:8080 dockerID/허브Repo이름
다음과 같이 애플리케이션이 실행된다.
4) 주소창에 http://{퍼블릭IPv4}:8080 입력
정상적으로 배포된 것을 확인할 수 있다.
'DevOps' 카테고리의 다른 글
[DevOps] 윈도우 ElasticSearch 8.x 다운로드 및 키바나 연동 (0) | 2024.07.28 |
---|---|
[Docker] Github Actions, Docker, AWS EC2 사용한 CI/CD (Spring Boot) (0) | 2023.09.15 |
[Docker] Docker Hub에 도커 이미지 업로드 (0) | 2023.05.22 |
[Jenkins] Jenkins와 깃허브 연동 (0) | 2023.05.08 |
[JenKins] JenKins 설치 (0) | 2023.05.08 |