Infra/Docker

[Docker] 도커에 Spring Boot 구축하기

당닝 2021. 11. 16. 16:06
728x90
목차
1. Spring Boot 코드 작성
2. jar 파일 생성
3. Dockerfile 만들기
4. 컨테이너 실행하기

 

 

 

1. Spring Boot 코드 작성

 

간단한 Hello World 코드를 구현했다. 소스코드는 다음과 같다.

package hello.hellospring;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class HelloSpringApplication {

	@RequestMapping("/")
	String home() {
		return "Hello World!";
	}

	public static void main(String[] args) {
		SpringApplication.run(HelloSpringApplication.class, args);
	}

}

 

 

 

2. jar 파일 생성

 

jar 파일은 여러 개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다.

jar 파일은 실제로 zip 파일 포맷으로 이루어진 압축 파일로서, 파일 확장자는 .jar이다. 

 

작성한 코드를 통해 jar 파일을 생성할 것이다.

 

 

Gradle > Tasks > build > bootJar을 클릭한다.

 

 

프로젝트 폴더 > build > libs에 jar 파일이 생성되었다.

 

 

 

3. Dockerfile 만들기

 

도커가 이해할 수 있는 dockerfile을 만들어야 한다. 

 

 

 

.jar 파일이 있는 곳에 Dockerfile을 생성하고 다음과 같이 입력한다. 확장자는 따로 없다.

FROM openjdk:11
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

 

  • FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정, java8로 코드를 작성했다면 11대신 8로 넣어줘야 합니다.)
  • ARG : 컨테이너 내에서 사용할 수 있는 변수를 지정할 수 있다.
  • COPY : 위에 선언했던 JAR_FILE 변수를 컨테이너의 app.jar로 복사한다.
  • ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행

 

cd 명령어를 통해 jar 파일이 있는 곳으로 터미널 위치를 옮긴다. (cd build/libs)

 

docker build -t springio/gs-spring-boot-docker .

터미널에 위와 같이 입력한다.

(docker build -t {이미지명} .)

 

 

docker images

빌드가 완료되었다면 다음 명령어를 터미널에 입력해 springio/gs-spring-boot-docker이 생성되었는지 확인한다.

 

 

 

4. 컨테이너 실행하기

 

docker run -d -p 5000:8080 springio/gs-spring-boot-docker

터미널에 다음과 같이 입력한다.

 

 

 

정상적으로 실행된다.

 

 

주소창에 localhost:5000을 입력해 접속하면 Hello World!가 잘 뜨는 것을 확인할 수 있다.

 

 

 

Docker Desktop을 통해 확인하면 다음과 같은 컨테이너가 생성된 것이 보인다.

 

 

 

컨테이너를 클릭해보면 같은 터미널 화면이 뜬다.

 

 

 

 

 

 

 

 

참고

 

Spring Boot with Docker

this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team

spring.io

 

728x90