Spring Boot App 도커라이징

By | 2021년 8월 8일
Table of Contents

Spring Boot App 도커라이징

참조

참조

참조

왜 hello world app 이 수백메가 메모리가 필요할까?

스프링 부트 실행을 위한 최소 메모리

Spring Boot 가 구동하기 위해서는 최소 75~100M 의 메모리가 요구됩니다.

Docker 메모리 용량 제한

docker run -m 75MB -p 8080:8080 -e JAVA_OPTS="-Xmx30M -Xms30M"

-m 또는 --memory 옵션을 이용해 사용가능한 최대 메모리를 제한할 수 있습니다.

nomad 에서의 설정

memory_hard_limit 을 이용하여 docker 에 메모리 제한 설정을 전달할 수 있습니다.
단위는 MB 입니다.

job "hello" {
  datacenters = ["dc1"]
  group "echo" {
    count = 1
    task "server" {
      driver = "docker"
      # user = "nobody"
      config {
        image = "hashicorp/http-echo:latest"
        args = [
          "-listen", ":8080",
          "-text", "Hello and welcome to ${NOMAD_IP_http} running on port 8080",
        ]
        memory_hard_limit = 4000
      }

      resources {
        memory = 1000
        network {
          port "http" {
            static = 8080
          }
        }
      }
    }
  }
}

UseContainerSupport

참조

JDK 10 부터 도입되었고(디폴트는 활성화),
JDK 1.8.0_191 부터 JDK8 버전에도 적용된 옵션입니다.

위 옵션이 있기 전에는 컨테이너의 메모리 제한을 무시하고,
JDK 가 자체적으로 메모리 설정을 했었습니다.

이것이 문제가 되어, 디폴트로 활성화되어
컨테이너 메모리 제한을 적용받게 되었습니다.

답글 남기기