0
点赞
收藏
分享

微信扫一扫

制作java程序的docker镜像

Dockerfile

FROM 192.168.1.2/common/openjdk:1.8
MAINTAINER 运维@小兵
LABEL description="java"
ENV JAVA_OPT="-Xmx640m -Xms640m -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -Dfile.encoding=utf-8" \
SERVICE_PORT=1100 VERSION=

EXPOSE ${SERVICE_PORT}
WORKDIR /opt
COPY app.jar .
COPY run.sh .

RUN chmod +x run.sh && mkdir -p config
CMD ["bash", "run.sh"]

run.sh

便于调试的场景

#!/bin/bash

WORKDIR=$(cd `dirname $0`;pwd)
#便于k8s挂载configmap
[[ -f /tmp/config/application-dev.yml ]] && cp /tmp/config/application-dev.yml ${WORKDIR}/config/
cd ${WORKDIR}
java -Xbootclasspath/a:./config/ $JAVA_OPT -jar app.jar --server.port=${SERVICE_PORT} > /dev/stdout 2>&1 &
tail -f /dev/stdout

​生产环境​

参考文章:
​​​K8S容器应用优雅关闭-修复5003 Error​​

使用exec的方式能够实现K8S容器应用优雅关闭

系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。

#!/bin/bash

WORKDIR=$(cd `dirname $0`;pwd)
#便于k8s挂载configmap
[[ -f /tmp/config/application-dev.yml ]] && cp /tmp/config/application-dev.yml ${WORKDIR}/config/
cd ${WORKDIR}
exec java -Xbootclasspath/a:./config/ $JAVA_OPT -jar app.jar --server.port=${SERVICE_PORT}


举报

相关推荐

0 条评论