Docker部署java程序限制内存
2018-11-12 本文已影响6人
褪色的记忆1994
我们在使用docker来部署java程序的时候常常会发现内存占有很大的问题,使用docker stats查询发现java程序占用了7、8百兆的内存。
第一步是寻找合适的java docker镜像
我这里选用的openjdk:8-jre-alpine
,这个镜像只有80M多一点,非常适合做镜像。更重要的是,根据openjdk的官方介绍,这个镜像的jvm支持cpu与内存的限制,开启内存限制只需要如以下方式运行jar包 :java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap ...
以下是docker
构建文件Dockerfile
FROM openjdk:8-jre-alpine
ADD docker-limit-memory.jar app.jar
ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
这个docker
编排文件docker-compose.yml
version: "2.3"
services:
docker-limit-memory:
image: docker-limit-memory
container_name: docker-limit-memory
ports:
- 8081:8081
restart: always
logging:
driver: "json-file"
options:
max-size: "10k"
max-file: "10"
mem_limit: 400m
github项目地址:https://github.com/xvjialing-springboot/docker-limit-memory
测试
1.将项目克隆下来后
2.先运行mvn clean package -Dmaven.test.skip=true
来构建docker镜像
3.构建完成后运行docker-compose up -d
后台运行docker镜像
个人博客:https://blog.xvjialing.xyz
github主页:https://github.com/xvjialing
微信公众号
![](https://img.haomeiwen.com/i3804491/1136ea5d14d234a9.jpg)