AWS EC2에 Spring Boot 배포하기
1. start.spring.io 에서 간단하게 프로젝트 셋팅을 해보자.
2. 인텔리제이에서 프로젝트를 오픈한다 .
3. AppController 파일을 생성하고 간단한 코드 작성
package com.example.SpringProjectForDeploy;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AppController {
@GetMapping("/")
public String home() {
return "Docker, World!";
}
}
4. Dockerfile 생성
FROM openjdk:17-jdk
COPY build/libs/*SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
5. 빌드
./gradlew clean build
6. 빌드한 이미지를 aws ecr에 올려보자.
aws에 접속해서 Elastic container registry에 들어간다.
=> 푸시 명령 보기를 클릭해서 인텔리제이 터미널에 명령어를 차례대로 입력한다.
7. 이미지가 생성됐다.
8. EC2에서 이 이미지를 다운받는다.
docker pull
'레포지토리 URI'오류 발생 시 로그인 명령어를 입력해준다.
9. 이미지 이름을 확인한다.
docker image ls
docker run -d -p 8080:8080 '이미지 이름'
이미지를 빌드한 환경과 이미지를 실행시키는 환경의 cpu 아키텍쳐가 동일해야 한다. 맥북 M1,M2,M3 를 사용하는 경우 이 에러가 발생할 수 있다.
10. 다시 인텔리제이로 돌아가서
빌드 후 로그인 명령어를 입력한다.
두번째 명령어를 입력할 때 --platform linux/amd64를 추가해준다.
docker build --platform linux/amd64 -t instagram-server .
11. 나머지 명령어도 입력하면 정상적으로 docker 가 실행되는 것을 볼 수 있다.
docker compose 사용해 배포하기
이전에 만든 이미지는 삭제하자.
docker rm -f 242
docker image rm -f 914 4bf
1. 폴더 생성
mkdir instagram-server
2. 생성한 폴더로 이동한 뒤 compose 파일 작성
vi compose.yml
services:
instgram-server:
image: image id
ports:
- 8080:8080
3. docker compose up -d --build
4. ip:8080 입력해서 접속해보자.
* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker 기본] AWS ECR(Elastic Container Registry) 사용해보기 (0) | 2024.07.10 |
---|---|
[Docker 기본] AWS ECR(Elastic Container Registry) 란? (0) | 2024.07.10 |
[Docker 실습] Ubuntu에서 Docker, Docker Compose 설치하기 (0) | 2024.07.10 |
[Docker 실습] Spring boot, MySQL 컨테이너 동시에 띄워보기 (0) | 2024.07.08 |
[Docker 실습] MySQL, Redis 컨테이너 동시에 띄워보기 (0) | 2024.07.08 |