Docker · Spring Boot · Kotlin · 微服务MyBatis+SpringMVC+SpringBootdocker&Jkenkis&maven

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

微信公众号

微信公众号
上一篇下一篇

猜你喜欢

热点阅读