参考:
前言
官方的镜像虽然可以直接用,但是实际使用的,需要使用中文的utf-8,时区等需要设置
实例
用到了JDK包,和skywalking需要提前准备,或者直接from 官方的skywalking包做改动即可
JAVA_TOOL_OPTIONS : java默认会获取该环境参数运行
### Dockerfile
FROM centos:7
MAINTAINER zewei XXXXXX@s.cn
WORKDIR /usr/local/docker
ADD openlogic-openjdk-8u262-b10-linux-x64.tar.gz /usr/local/docker
COPY skywalking /skywalking
COPY run.sh /home/ways/
ENV JAVA_HOME=/usr/local/docker/openlogic-openjdk-8u262-b10-linux-64
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
ENV LANG=zh_CN.UTF-8
ENV AGENT_HOME=/skywalking
ENV JAVA_TOOL_OPTIONS='-javaagent:/skywalking/agent/skywalking-agent.jar -XX:MaxRAMFraction=1 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/logs'
ENV JAVA_VERSION=jdk-8u262-b10
ENV JAVA_JAR_PATH=/home/target/app.jar
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone \
&& yum -y install kde-l10n-Chinese \
&& yum -y reinstall glibc-common \
&& localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 \
&& echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf \
&& source /etc/locale.conf \
&& yum clean all
ENV LC_ALL zh_CN.utf8
WORKDIR /home/
#CMD ["/bin/sh","/home/ways/run.sh"]
CMD ["/bin/sh"]
## run.sh
if [ "${EXTRA_JAVA_OPTS}" ]; then
export JAVA_OPTS="${JAVA_OPTS} ${EXTRA_JAVA_OPTS}"
fi
if [ "${EXTRA_JAVA_TOOL_OPTIONS}" ]; then
export JAVA_TOOL_OPTIONS="${JAVA_TOOL_OPTIONS} ${EXTRA_JAVA_TOOL_OPTIONS}"
fi
echo '======================='
echo "jvm运行相关参数,添加ENV: EXTRA_JAVA_TOOL_OPTIONS 可附加参数"
echo JAVA_TOOL_OPTIONS=${JAVA_TOOL_OPTIONS}
echo "jar包运行相关参数 添加ENV: EXTRA_JAVA_OPTS 可附加参数"
echo JAVA_OPTS=${JAVA_OPTS}
echo "执行jar包路径"
echo JAVA_JAR_PATH=${JAVA_JAR_PATH}
echo '======================='
echo java ${JAVA_TOOL_OPTIONS} -XshowSettings:vm -jar ${JAVA_JAR_PATH} ${JAVA_OPTS}
java ${JAVA_TOOL_OPTIONS} -XshowSettings:vm -jar ${JAVA_JAR_PATH} ${JAVA_OPTS}