-
Docker로 AWS EC2 배포하기SpringBoot 2023. 8. 2. 09:37
로컬 환경은 다음과 같습니다.
- Window11, Intellij, Spring Boot, Gradle
진행과정
- Dockerfile을 build해서 docker image파일을 생성
- docker image 파일을 dockerhub에 push
- AWS EC2에서 dockerhub에 존재하는 docker image 파일을 pull로 받아옴
- docker run명령어를 통해 docker image파일을 실행
스프링 프로젝트 생성
- 스프링 프로젝트 생성에 대해서는 생략하겠습니다.
dockerfile 생성
루트 폴더 아래 dockerfile을 생성하고, 위와 같이 생성하였습니다.
- FROM
- amazon corretto 17버전의 환경을 구성하였습니다.
- ARG
- JAR_FILE이라는 변수명에 build/libs/*.jar 표현식을 선언했다는 의미입니다.
- build/libs 경로는 gradle로 빌드했을 때 jar 파일이 생성되는 경로입니다.
- COPY
- 위에서 선언한 JAR_FILE을 app.jar로 복사합니다.
- ENTRYPOINT
- jar파일을 실행하는 명령어 입니다.
- 환경 설정을 분리해서 사용함으로 위와 같이 작성하였습니다.
gradle 빌드
터미널에 ./gradlew.bat build -x test로 빌드하면 build/libs 경로에 jar파일이 생성됩니다.
DockerHub에 Repository생성
dockerhub 사이트에 들어가서 회원가입을 하고 로그인을 합니다.
- Repositories를 생성합니다.
- 생성시에 visibillity는 public으로 합니다.
Docker Image build
docker build --build-arg DEPENDENCY=build/dependency -t {본인의 도커허브 ID/Repository} --platform linux/amd64 .
위 명령어를 사용해서 dockerfile을 docker image로 빌드합니다.
Docker Image push
생성한 DockerHub의 Repository를 확인하면 명령어가 나오는데 해당 명령어를 입력해줍니다.
만약 denied: requested access to the resource is denied 라는 문구가 나오면 로그인을 해주어야 합니다.
- docker 로그인 명령어는 docker login입니다.
AWS EC2
해당 명령은 aws에 실행된 인스턴스에서 진행됩니다.
도커 설치
- $ sudo yum install docker
도커 실행
- $ sudo systemctl start docker
도커 허브에 존재하는 이미지 파일 pull
- $ sudo docker pull {본인의 DockerHub이름/Repository }
도커 이미지를 통해 스프링 부트 애플리케이션 배포
- $ sudo docker run -p 8080:8080 {본인의 DockerHub이름/Repository }
- 백그라운드 실행하고 싶다면 -d 옵션을 추가
- $ sudo docker run -d -p 8080:8080 {본인의 DockerHub이름/Repository }
참조
https://zzang9ha.tistory.com/360
'SpringBoot' 카테고리의 다른 글
배열의 공변성 (0) 2025.02.13 Spring Boot에서 동시성 처리 문제 해결하기: 예약 승인 기능 개발기 (0) 2024.11.07 Ramdom vs SecureRandom vs ThreadLocalRandom (0) 2024.06.18 Dirty Cheking을 잘못 사용한 경우 (0) 2023.08.02 자바 스크래핑 (0) 2023.05.01