update at 2021-01-21 11:27:13 by ehlxr

This commit is contained in:
2021-01-21 11:27:13 +08:00
parent e1235f4bb4
commit bb103f5cf5
10 changed files with 233 additions and 57 deletions

15
docker/Dockerfile Normal file
View File

@@ -0,0 +1,15 @@
FROM openjdk:8-jre-alpine
MAINTAINER ehlxr <ehlxr.me@gmail.com>
WORKDIR /opt
ARG SERVER_NAME
ENV SERVER_NAME=${SERVER_NAME}
COPY start.sh /opt/start.sh
COPY ${SERVER_NAME}*.jar /opt/
RUN chmod -R 755 /opt/
EXPOSE 16830 16831
ENTRYPOINT ["/opt/start.sh"]

55
docker/build.sh Executable file
View File

@@ -0,0 +1,55 @@
#!/bin/sh
set -e
echo "############## start ##############"
BUILD_DATE=`date +%Y-%m-%d:%H:%M:%S`
CURR_DIR=`basename $PWD`
if [[ ${CURR_DIR} != "docker" ]]; then
echo "############## must exec in docker dir ##############"
exit 2;
fi
cd ../
#SERVER_NAME=`awk '/<name>[^<]+<\/name>/{gsub(/<name>|<\/name>/,"",$1);print $1;exit;}' pom.xml`
#SERVER_NAME=$(basename `pwd`)
SERVER_NAME=${MODULE_PARMS}
SERVER_JAR=$PWD/${MODULE_PARMS}/target/${SERVER_NAME}*.jar
#if [ ! -n "ls ${SERVER_JAR} >/dev/null 2>&1" ]; then
if [[ "`echo ${SERVER_JAR}`" != "${SERVER_JAR}" ]]; then
echo exist ${SERVER_JAR} skip maven build.
else
mvn clean install -DskipTests
fi
cp ${SERVER_JAR} ./docker
cd docker
if [[ ${DOCKER_IMAGE_TAG} ]];then
image_tag=${DOCKER_IMAGE_TAG}
else
echo "############## DOCKER_IMAGE_TAG is null ! ##############"
# image_tag=$(git symbolic-ref --short -q HEAD)
image_tag=`date "+%Y%m%d_%H%M%S"`
fi
echo "############## image_tag is: ${image_tag} ##############"
base_url=docker.ehlxr.me
docker_url=${base_url}/ehlxr/${SERVER_NAME}:${image_tag}
docker build --build-arg SERVER_NAME=${SERVER_NAME} -f ./Dockerfile -t ${docker_url} .
# get user pwd from environment
echo "${DOCKER_REGISTRY_PWD}" | docker login --username ${DOCKER_REGISTRY_USER} --password-stdin ${base_url}
docker push ${docker_url}
rm ${SERVER_NAME}*.jar
echo "############## build & push finish: ${BUILD_DATE} ##############"
err=$?
if [[ "$err" -ne "0" ]]; then
echo "############## build error ! ##############"
exit 1
fi

33
docker/start.sh Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/sh
set -e
#HOSTNAME=`hostname | cut -c1-18`
LOGS_DIR="/data/logs"
GC_LOGS_DIR="/data/gc"
if [[ ! -d ${LOGS_DIR} ]]; then
mkdir -p ${LOGS_DIR}
fi
if [[ ! -d ${GC_LOGS_DIR} ]]; then
mkdir -p ${GC_LOGS_DIR}
fi
STDOUT_FILE=${LOGS_DIR}/${SERVER_NAME}.log
CURRENT=`date "+%Y%m%d%H%M%S"`
#JAVA_OPTS=" -Duser.timezone=\"Asia/Shanghai\" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF8"
#JAVA_MEM_OPTS=" -server -Xmx${XMX:-512m} -Xms${XMS:-128m} -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC \
# -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=${LargePageSize:-4m} \
# -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \
# -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:${GC_LOGS_DIR}/${SERVER_NAME}_${CURRENT}_gc.log \
# -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${GC_LOGS_DIR}/${SERVER_NAME}_${CURRENT}.hprof"
JAVA_MEM_OPTS=" -server -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:${GC_LOGS_DIR}/${SERVER_NAME}_${CURRENT}_gc.log \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${GC_LOGS_DIR}/${SERVER_NAME}_${CURRENT}.hprof"
echo "Starting the ${SERVER_NAME} ...\c"
chmod -R 755 ./${SERVER_NAME}*.jar
#java -jar ${JAVA_OPTS} ${JAVA_MEM_OPTS} ./${SERVER_NAME}*.jar > ${STDOUT_FILE} 2>&1
java -jar ${JAVA_MEM_OPTS} ./${SERVER_NAME}*.jar | tee -a ${STDOUT_FILE} 2>&1