Docker

SpringBoot + docker 를 통한 서버 실행(1)

힙합비둘기 2024. 9. 24. 02:25

 

이번엔 도커를 통해 간단한 스프링 부트 프로젝트를 생성해서 도커를 통해
프로젝트를 실행시켜 보도록 하겠습니다.

일단 도커란 쉽게 설명 하자면 어떠한 프로젝트를 그 어떤 툴이나 프로그램을 깔지 않고 오로지

도커만으로 프로젝트를 실행시킬 수 있는 컨테이너 기반 가상화 플랫폼 입니다.

 

일단 도커로 서버를 실행시키기 위해 프로젝트를 하나 만들어주겠습니다.

 

https://github.com/TAEWOOKK/backjun.git

 

이 프로젝트에 대한 간단한 설명을 드리자면 일단

 

MainController

@RestController
public class MainController {

    @GetMapping("/")
    public String Main() {

        return "Hello World2";    }
}

 

yml 파일 

 

server:
  port: 8081

 

 

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.4'
    id 'io.spring.dependency-management' version '1.1.6'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

bootJar {
    archiveFileName = 'docker_test.jar'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
    useJUnitPlatform()
}

 

 

이런식으로 간단하게 서버를 만들어 보았다.

이제 이 서버를 도커가 원할하게 읽을 수 있게 Dockerfile 을 생성해준다.

 

Dockerfile

# Dockerfile
FROM openjdk:21-jdk
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} ./docker_test.jar
EXPOSE 8081
ENTRYPOINT ["java", "-jar", "/docker_test.jar"]

 

 

의미

FROM openjdk:21-jdk

- Docker 이미지를 생성할 때 사용할 기본 이미지를 지정합니다.

 

ARG JAR_FILE=build/libs/*.jar

- Docker 빌드에서 사용할 수 있는 변수를 정의합니다.

 

COPY ${JAR_FILE} ./docker_test.jar

- 호스트 시스템의 파일을 Docker 이미지로 복사합니다.

 

EXPOSE 8081

- 컨테이너가 사용할 포트를 지정합니다.(문서상의 의미만을 가짐)

 

ENTRYPOINT ["java", "-jar", "/docker_test.jar"]

- 컨테이너가 시작될 때 실행할 명령을 지정합니다.

 

이렇게 Dockerfile 을 생성해 줬다면 이제 bootJar 를 통해 jar 파일을 생성해 주면 됩니다.

 

 

그렇게 Build Succesful 이 뜬다면 사진의 위치에 성공적으로 .jar 파일이 생성된 걸 확인 하실 수 있습니다.

 

 

이 다음 편에서 Docker Desktop을 설치하고 도커이미지 등록 후 서버를 실행해보도록 하겠습니다!

반응형

'Docker' 카테고리의 다른 글

SpringBoot + docker 를 통한 서버 실행(3)  (0) 2024.09.26
SpringBoot + docker 를 통한 서버 실행(2)  (1) 2024.09.24