서론
웹에 대해 아무것도 모를 때는 로컬에서는 실행되는 걸 확인했는데, 이걸 다른 사람이 확인하려면 나랑 똑같이 인텔리제이를 설치해서 실행해봐야 되는 건가 하는 의문이 있었다. 똑같은 환경을 구축하여 실행해도 되지만 Docker로 image를 만들고 run하면 정말 쉽게 로컬에 서버를 구축할 수 있다.
프로젝트 Jar 파일 만들기
jar 파일은 여러 개의 클래스 파일들과 관련 리소스 및 메타 데이터를 하나의 파일로 모아서 배포를 위해 만들어진 소프트웨어 패키지 파일 포맷이다.
(jar은 zip으로 이루어진 압축 파일이다.)
대부분의 스프링부트 사용자들은 인텔리제이를 사용할 텐데, 오른쪽에 보면 Gradle이 보일 것이다.
눌러보면
Tasks -> build -> bootjar 이 보일 것이다. 클릭하자
그러면 프로젝트 폴더 -> build -> libs에 jar 파일이 만들어진다.
Docker 파일 만들기
위의 사진처럼 jar 파일이 있는 곳에 Dockerfile을 만든다. Dockerfile이 있어야 도커가 이를 토대로 설정을 해준다.
FROM openjdk:11
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
FROM : 기반이 되는 이미지를 의미하고, jdk 버전을 명시해주면 된다.
ARG : 컨테이너 내에서 사용할 수 있는 변수를 지정할 수 있다.
COPY : ARG의 JAR_FILE 변수를 컨테이너의 app.jar에 복사한다는 뜻이다.
ENTRYPOINT : 컨테이너가 시작됐을 떄 실행할 스크립트를 명시한다.
(Docker를 설치하고 DockerHub에 가입하는 과정은 생략하겠다. Docker desktop을 깔지 않아도 인텔리제이에 플러그인도 있으니 검색해보길 바란다ㅎ)
인텔리제이 하단의 터미널을 눌러서 jar 파일이 있는 곳으로 가보자.
(cd build/libs 명령어로 갈 수 있을 것이다.)
이제 이미지를 만들어보자. 내 도커 아이디와 레포 이름을 포함해서 만들면 된다.
docker build -t [도커허브ID/레포지토리 이름] .
(끝에 한 칸 띄고 점을 찍어줘야 된다는 것에 조심하자)
다 만들어졌으면 images를 확인해보자.
docker images
이런 식으로 잘 만들어진 것을 알 수 있다.
이제 만든 repository에 push 해보자.
docker push [도커 허브 ID/레포지토리명]
잘 올라간 것을 확인할 수 있다.
docker run -p 8080:8080 [도커 허브 ID/이미지 이름]
잘 실행되는 것을 확인할 수 있다.
'BE > Spring Boot' 카테고리의 다른 글
Jwt와 Interceptor 사용 시 CORS 에러가 발생하는 이유 (0) | 2023.06.09 |
---|---|
로그인 시 id가 없을 때 status code는 200? 404? (0) | 2023.03.31 |
REST API와 flutter sdk를 이용한 카카오 로그인의 차이점 (0) | 2022.07.07 |
의존관계 주입 (2) | 2022.03.20 |
싱글톤 방식의 주의점 (0) | 2022.03.20 |