시작하기에 앞서
이번에 맨날 사용하던 Spring Boot, JPA , Spring Security 말고 무언가 기술적이나 재미를 통해 변화를 주고싶었다.
그래서 이번 개인프로젝트에서는 Dokcer를 활용하여 AWS에 배포하는 것까지 실행에 옮기고자 한다.
그러기 위해서는 첫번째로 Docker로 이미지를 배포하는 방법을 알아야했다.
거창하게 이미지를 만들어서 배포한다는 의도는 아니고, 일단은 실행이라도 해보고자 했다.
참고로 필자는 아래의 환경으로 테스트 프로젝트를 진행한다.
- Java 17
- Gradle
- Spring boot 3.2.2
프로젝트 생성
결론적으로는 위와 같은 프로젝트 구조가 나온다.
- DokcerFile
- 테스트를 위한 Controller
컨트롤러
도커 컨테이너를 실행시켜 localhost:8080/ 에 접근했을때 test라는 화면이 나오는지에 대해 간단하게 테스트 하기위해서 간결하게 작성했다.
Gradle Clean Build
먼저, 아래의 명령어로 프로젝트 빌드 자체를 다시 clean해준다.
./gradlew clean build
DockerFile 생성
인텔리제이를 사용중이라면 다음과 같은 DockerFile을 생성할 수 있게 표시된다.
FROM openjdk:17-oracle
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
DockerFile을 생성 한 후, 위와 같이 작성한다.
참고로 FROM 에서 openjdk:17-oracle을 사용한 이유는 Oracle에서 제공한 jdk는 자유롭게 이미지를 사용할 수 있기 때문이다.
그 이유는 아래를 참고하기를 바란다.
OpenJDK Java 17 docker image
We are upgrading our microservices in docker to use Java 17 and previously we used the base image openjdk:11-jre-slim. What is the corresponding image for Java 17? There doesn't seem to be a openjd...
stackoverflow.com
Docker 이미지 생성
그 다음, Docker 이미지를 생성한다.
docker build -t dockerimage .
위의 명령어를 입력하여 이미지를 생성한다.
Docker Container 실행
docker run dockerimage
위의 명령어를 입력하게 되면 우리가 Spring Boot 프로젝트를 실행하면 나오는 터미널의 내용과 동일하게 나타나는것을 볼 수 있다.
그러나, 위와 같은 명령어로 컨테이너를 실행하면 우리가 원하는 특정포트로 접근을 할 수가 없게 된다.
접근하기 위해서는 포트를 설정해주며 컨테이너를 실행해야 한다.
docker run -p 8080:8080 dockerimage
위의 명령어로 포트를 지정해주며 컨테이너를 실행시키면 8080포트로 접근할 수 있게된다.
docker run -p [host port] : [container port] [ image name ]
아래와 같이 성공적으로 localhost:8080 으로 접근할 수 있는것을 확인 할 수 있다.
마무리
간단하게 스프링부트 프로젝트를 Docker 이미지를 생성하고, 컨테이너를 실행시켜보았다.
다음에는 Docker를 활용하여 AWS에 배포해보는 시간을 가지고자 한다.
간단하게 진행해보았지만 뭔가 흥미진진한 기분이다 😊
참조 👍
Docker - 도커에 Spring Boot(Gradle) 구축하기
우리가 도커를 이해해야 하는 이유는 호스팅 서비스를 이용하기 위해서는 특정한 서버 환경에 배포를 해야하기 때문에 그에 따른 설정을 맞춰줘야 됩니다. 하지만 매번 다른 웹서비스를 이용할
yooooonnf.tistory.com
'BE > DevOps' 카테고리의 다른 글
[Github Action] Github Action을 사용하여 Spring Boot + Docker(Docker Compose) + AWS EC2 프로젝트 배포하기 (1) | 2024.02.03 |
---|