[Docker] Spring Boot 구동시키기

임성채·2024년 7월 15일

Docker

목록 보기
1/3
post-thumbnail

해당 내용은 다른 블로그에서 참고하여 작성하였습니다.

Docker

호스팅 서비스를 이용하기 위해서는 특정한 서버 환경에 배포를 해야하기 때문에 그에 따른 설정을 맞춰줘야 합니다
하지만 매번 다른 웹서비스를 이용할 때 마다 설정을 해야하며, 서버마다 각각의 설정을 해줘야 하여 많은 자원 남이가 있습니다.
이런 다른 환경에서의 작업을 규격화하여 정의를 하기 위해 도커를 사용합니다.

Docker desktop

윈도우 환경은 Docker desktop만 설치하면 Docker 사용이 가능하다

프로젝트 구성

- 환경

JDK : 17
IDE : IntelliJ
Spring Boot : 3.1.5
Build Tool : Gradle
Docker : 26.1.4
라이브러리 : Spring Web

- 폴더 구성

- HelloController.java

@RestController
public class HelloController {
    @GetMapping("/")
    public String hello(){
        return "hello";
    }
}

- Dockerfile

# JDK 17 기반
FROM openjdk:17

# build할 jar 파일 변수 선언
ARG JAR_FILE=build/libs/*.jar

# build/libs에 있는 JAR파일을 Docker 이미지의 app.jar로 복사
COPY ${JAR_FILE} app.jar

# Docker 컨테이너가 실행되면 java -jar app.jar 명령어를 실행하여 Spring boot 실행
ENTRYPOINT ["java", "-jar", "app.jar"]

Docker 사용

- jar파일 생성

  • 터미널(CMD)

cd [프로젝트 경로]

./gradlew clean build

  • 인텔리제이
  • ./build/libs

- Test

Docker 실행 전 로컬에서 정상적으로 실행 가능한지 먼저 테스트를 해본다

  • Spring boot 내장 톰캣

  • java -jar

cd [프로젝트 경로] or [프로젝트 경로 + \build\libs\]

java -jar .\build\libs\docker_test-0.0.1-SNAPSHOT.jar

or

java -jar docker_test-0.0.1-SNAPSHOT.jar

기본 포트는 8080을 사용하지만 이미 8080을 사용하고 있을 시
다른포트를 사용하거나
8080포트를 죽이면 된다
1. netstat -a -o
2. 8080 포트의 PID 찾기
3. taskkill /f /pid [pid번호]

- Docker Hub

Docker 사용전에 Docker Hub에 Repositories를 만들었다.

저렇게 만들고 난 후 Docker desktop에는 자동으로 생성되어있는걸 확인할 수 있다.

- Docker 이미지 빌드

본격적으로 Docker 사용을 하기 위해 이미지를 빌드해준다

이미지 빌드 명령어
docker build -t [dockerID/dockerHubRepository이름] .

  • docker images
  • docker desktop

- Docker Hub에 이미지 Push

docker push [dockerID/dockerHubRepository이름]

  • Docker Hub
  • Docker desktop

- Docker Hub에서 이미지 가져와서 컨테이너 구동시키기

로컬에는 이미지가 없다는 가정하에 Hub에서 가져와 구동시켜보겠다.

만약 이미지가 있다면 제거하기
docker rmi [이미지ID or 이미지 이름]

docker run -p 8080:8080 도커허브ID/이미지이름

구동시키게 되면 Docker desktop에는 container에 이렇게 표시된다

결과

다음은 Docker에 MySQL을 사용해서 작성할 생각이다.

참고

https://velog.io/@dhk22/Docker-spring-boot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%8F%84%EC%BB%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EB%B9%8C%EB%93%9C

https://yooooonnf.tistory.com/5

0개의 댓글