본문 바로가기

IT/docker

[Docker] Spring Boot Docker 사용하기

이번 포스팅은 Spring Boot를 Dockerize 및 docker에서 실행하는 방법을 소개해주는 글입니다.

 

우선 Docker를 설치해주세요. 
https://docs.docker.com/get-docker/
 

Get Docker

 

docs.docker.com

 

1. Spring Boot Project 생성

https://start.spring.io/
위 경로에서 Spring Boot Project를 생성해줍니다.

 

2. pom.xml

    <dependencies>
...    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
...
    <dependencies>
간단한 HTTP 통신 테스트를 위해 spring-boot-starter-web 라이브러리를 추가해줍니다.

 

3. HomeController.java

package com.example.springbootdocker.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @GetMapping(value = "/")
    public String home() {
        return "Hello Docker !!";
    }
}
"/" 로 요청이 오면 "Hello Docker !!"를 반환하는 HomeController를 만들어줍니다.

 

3. Dockerfile 생성

Dockerfile은 도커 이미지를 생성할때 필요한 설정파일입니다. 다양한 설정 정보를 선언할 수 있습니다.

project 폴더 안에 Dockerfile을 생성해줍니다. (빈파일로 생성해주시면 됩니다.)

FROM openjdk:11-jre
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
FROM openjdk:11-jre 는 해당 도커 이미지를 컨테이너로 실행할 때, openjdk11-jre를 사용하겠다는 의미입니다. 
웹 애플리케이션을 실행하는데 jdk까지는 필요 없기 때문에 jre로 선언했습니다.

COPY target/*.jar app.jar 는 target안에 패키징된 jar파일을 app.jar라는 이미지파일로 복사한다는 의미입니다.

ENTRYPOINT ["java","-jar","app.jar"] 는 도커가 해당 이미지를 실행할때 사용하는 명령어를 명시합니다.
java -jar app.jar 라는 명령어가 사용되겠네요

 

4. docker build, run

우선 docker가 설치되어있어야 하며 docker가 실행되어있는지 확인하려면 터미널 창에 docker version을 입력해주세요.

위 프로젝트를 docker의 컨테이너에 실행하려면 다음과 같은 과정을 거쳐야합니다.
(명령어 입력은 해당 프로젝트 디렉터리 안에서 진행해주셔야합니다.)

 

1) project build

mvn package
jar 파일을 생성해줍니다.

 

2) docker build

docker build -t my-spring .
jar파일을 docker image로 build합니다.

 

3) docker image 확인

docker images

 

4) docker image 실행

docker run -p 8080:8080 my-spring
docker image를 실행하면 상태값을 가질 수 있는 독립적인 컨테이너가 생성됩니다.

docker 내부적으로 8080포트를 갖고 외부에서 해당 웹 애플리케이션에 접근할때도 8080포트로 하고 싶다면
8080:8080 이라고 적어주면 됩니다.

docker ps 를 입력하면 실행중인 컨테이너를 확인할 수 있습니다.

 

백그라운드로 실행하는 방법
docker run -d -p 8080:8080 my-spring

 

5) 테스트

브라우저에 http://localhost:8080/ 를 입력할 때 "Hello Docker !!" 라는 문구가 출력되면 테스트 성공입니다.

'IT > docker' 카테고리의 다른 글

[Docker] Docker 란?  (0) 2021.08.30