Bir Docker kabında çalışmak istediğim bir hizmeti uygulayan bir Spring Boot uygulaması var.Bir Docker kapsayıcısında JVM bellek tüketimi sınırı
spring-boot-docker:
ports:
- "80:80"
expose:
- "80"
image: my-repo/spring-boot-docker:0.1.0-SNAPSHOT
container_name: spring-boot-docker
environment:
JAVA_OPTS: '-Xmx64m'
: Görüntü ben bu şekilde başlatmak için
Docker Compose kullanmak Docker aktarıldıktan sonra Sonra
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
: Ben buna benzer bir DockerFile oluşturmak önermek resmi Spring docs ait kılavuz izlediyseniz
Burada, bellek ayırmayı sınırlayan JAVA_OPTS
değişken var, ancak, docker stats spring-boot-docker
çalıştırdığımda, kap tarafından alınan bellek aşırı (JVM tarafından alınan toplam belleğin 64M'den çok daha fazla olabileceğini anlıyorum, ancak bu dava tamamen sınırsızdır).
Ayrıca, mem_limit
param ile denedim, ancak bu uygulama dikkat çekecek şekilde yavaşlatır.
_exec_'den _shell_ for 'ENTRYPOINT' seçeneğine geçiş, {'CMD', komut satırı argümanları} işlevinin devre dışı bırakılmasının yan etkisine de sahip olduğundan, kapsayıcınızın çalıştırılması gibi --spring.profiles.active = prodüksiyon 'profili görmezden gelecektir. –
qerub