服务一键容器化启动

Dockerfile文件

将上传到服务器的jar包打成镜像.

FROM openjdk:8u302-jdk
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
RUN echo 'Asia/Shanghai'> /etc/timezone
ADD ./wx-develop.jar /wx-develop.jar
EXPOSE 8088
ENTRYPOINT ["java","-jar","wx-develop.jar","-Xms256m","-Xmx256m","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap"

upload.sh脚本

先打包jar包,再将dockerfile文件准备好.rsync增量上传

#!/bin/bash
JAR_FILE_NAME='wx-develop-0.0.1-SNAPSHOT.jar'
UPLOAD_CMD="
rsync -e 'ssh -p 32' -avp \
./dockerfile \
./deploy.sh \
../../../target/$JAR_FILE_NAME \
root@49.235.104.20:/app
"

mvn clean install -f ../../../pom.xml
if [ $? -ne 0 ];then
	echo "maven build failed...."
        exit 1
else
	echo "now start upload files inclue $JAR_FILE_NAME"
fi

if [ ! -e ./dockerfile ] || [ ! -e "../../../target/$JAR_FILE_NAME" ];then
	echo "dockerfile or jar $JAR_FILE_NAME not exists"
	exit 1
fi
eval $UPLOAD_CMD

deploy.sh

#!/bin/bash
#define colors
RED='\e[1;31m'   #红
GREEN='\e[1;32m' #绿
YELLOW='\e[1;33m' #黄
BLUE='\e[1;34m' #蓝
PINK='\e[1;35m' #粉红
GREEN='\e[0m' #清除颜色

JAR_FILE_NAME='wx-develop-0.0.1-SNAPSHOT.jar'
DEFAULT_TABEL="wx-develop:`data +%Y%m%d`"
CONTAINER_PORT='8088/tcp'
PORT='8082'

if [ ! -e ./dockerfile ] || [ ! -e "./$JAR_FILE_NAME" ];then
	echo -e "$RED dockerfile or jar $JAR_FILE_NAME not exists $RES"
	exit 1
fi

echo -e "$YELLOW now start to build $JAR_FILE_NAE$RES"

read -t 5 -p "now input container label which concat with ':',default is $DEFAULT_LABEL ->" label

if [[ -z $label ]]|| [[ $label != *:* ]];then
	echo -e "\n$BULE use default label $DEFAULT_LABEL $RES\n"
	label=$DEFAULT_LABEL
fi
echo -e "$GREEN now using the label: $label $RES"

#kill the server and remove container built before
CONTAINER_ID=$(docker ps |grep $CONTAINER_PORT)|awk '{print $1}')
IMAGE_ID=$(docker ps |grep $CONTAINER_PORT)|awk '{print $2}')

if [[ ! -z $CONTAINER_ID ]];then
	echo -e "$RED now stop container $CONTAINER_ID $RES"
	docker stop $CONTAINER_ID
	docker rm $CONTAINER_ID
fi

if [[ ! -z $IMAGE_ID ]];the
	echo -e "$RED now delete image $IMAGE_ID $RES"
	docker rmi $IMAGE_ID
fi

eval "docker build -t $label ."
echo -e "$GREEN successfully build $label $RES"

echo -e "$BLUE ------------------now run container $label ------------------------$RES"
docker run -d -p $PORT:$CONTAINER_PORT --name $(echo $label |cut -d: -f 1) $label
echo -e "$GREEN successfully run serve on port: $PORT $REs"



posted @ 2023-06-03 16:51  三分看七分练  阅读(17)  评论(0)    收藏  举报