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 가 자체적으로 메모리 설정을 했었습니다.
이것이 문제가 되어, 디폴트로 활성화되어
컨테이너 메모리 제한을 적용받게 되었습니다.