การกำหนด Size Docker - up1/soa_group2 GitHub Wiki

การกำหนด Size Docker

ปัญหาการ Down ของ Container ที่สร้างมาจาก image ของ Spring boot ที่พบเจอเกิดจากปัญหา memory ไม่พอที่จะทำงานพร้อมกันหลายๆ Container ได้

ซึ่งเราสามารถดูได้ว่า container นั้นมี process อะไรทำงานอยู่บ้าง โดยใช้คำสั่ง

docker exec {container's name} top -m

จะได้ผลลัพธ์ดังรูป

ซึ่งเราสามารถกำหนด Heap Size ของ java ได้โดยการกำหนด JAVA_OPTS ตอนรัน container แต่ต้องแก้ไขไฟล์ Dockerfile โดยการเพิ่มคำสั่ง exec เพื่อให้สามารถรับค่า JAVA_OPTS ได้โดยไม่ถูกมองว่าเป็น Spring-boot variable

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD {service name}.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 

จากนั้นทำการรัน container

docker run -d -e "JAVA_OPTS=-Xmx{heap size}" {spring-boot image}

ผลลัพธ์