封装java基础镜像用于应用部署
国产化数据库:
github:https://github.com/taosdata/TDengine
website:http://tdengine.net/cn/documentation/administrator
需求:
1.java应用运行在docker中 使用openjdk为基础镜像 但镜像需要安装taos客户端 否则jdbc无法连接
2.解决中文乱码问题
3.统一时区为中国
封装DockerFile 作为新的java基础镜像
FROM openjdk:8
MAINTAINER younglinuxer younglinuxer@gamil.com
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN mkdir $JAVA_HOME/jre/lib/fonts
ADD FZKTJW.TTF $JAVA_HOME/jre/lib/fonts
COPY TDengine-client/ /TDengine-client
RUN cd /TDengine-client && bash install_client.sh
使用
1.将应用dockerfile基础镜像改为 FROM younglinuxer / java-td 2.注意涛思数据库默认使用域名连接需要更改容器的hosts或者指定能解析数据库地址的DNS服务器
app使用的Dockerfile
FROM younglinuxer/java-td
ENV APP_HOME /dfjx
WORKDIR $APP_HOME
ADD start.sh /bin/start
RUN chmod +x /bin/start
ADD *.jar $APP_HOME/APP_NAME.jar
HEALTHCHECK --interval=5s --timeout=2s --retries=12 \
CMD curl --silent --fail localhost:8080/health || exit 1
ENTRYPOINT ["/bin/bash","-c","start"]
docker内应用启动脚本
#!/bin/bash
function start(){
cd ${APP_HOME}
newFileName=`ls -rtl *.jar | grep ^[^d] | tail -n 1 | awk '{print $9}'`
countFileName=`ls -l| grep ^[^d] |grep "^-"|wc -l`
if [ $countFileName -gt 1 ]; then
`ls *.jar | grep -v $newFileName | xargs rm`
fi
begin_length=`expr index "$newFileName" .`
if [ $begin_length -gt 0 ]; then
ext_name=${newFileName:$begin_length:${#newFileName}}
if [ "$ext_name" = 'jar' ]; then
echo "Run Program $newFileName java_opts = $1"
java $1 -Duser.timezone=UTC+8 -Dfile.encoding=UTF-8 -Duser.language=en -Duser.country=US -jar $APP_HOME/$newFileName
fi
fi
}
java_opts="-Xms512m -Xmx1024m"
if [ "$JAVA_OPTS" ]; then
java_opts=$JAVA_OPTS
fi
start "$java_opts"
exit 0
容器内连接taos数据库