Skip to content

Commit

Permalink
feat(scaffold): supplement start-code.sh
Browse files Browse the repository at this point in the history
  • Loading branch information
taccisum committed Jul 10, 2019
1 parent fb5527e commit dbe3f27
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 0 deletions.
18 changes: 18 additions & 0 deletions generators/app/handler/direct_th.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
'use strict';

const AbstractTemplateHandler = require('yo-power-generator').AbstractTemplateHandler;
const fileUtils = require('yo-power-generator').FileUtils;

class DirectTemplateHandler extends AbstractTemplateHandler {
_handle0 () {
this.generator.fs.write(
this.generator.destinationPath(fileUtils.tmplToFileName(this.tmpl)),
this.generator.fs.read(this.generator.templatePath(this.tmpl))
)
}
}

module.exports = {
key: 'direct',
cls: DirectTemplateHandler
};
5 changes: 5 additions & 0 deletions generators/app/templates/.tmpl.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM openjdk:8

WORKDIR /home

COPY ./target/app.jar /home
30 changes: 30 additions & 0 deletions generators/app/templates/common.tmpl_direct.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
bold=$(tput bold)
underline=$(tput sgr 0 1)
reset=$(tput sgr0)

red=$(tput setaf 1)
green=$(tput setaf 76)
white=$(tput setaf 7)
tan=$(tput setaf 202)
blue=$(tput setaf 25)

underline() { printf "${underline}${bold}%s${reset}\n" "$@"
}
h1() { printf "\n${underline}${bold}${blue}%s${reset}\n" "$@"
}
h2() { printf "\n${underline}${bold}${white}%s${reset}\n" "$@"
}
debug() { printf "${white}%s${reset}\n" "$@"
}
info() { printf "${white}➜ %s${reset}\n" "$@"
}
success() { printf "${green}✔ %s${reset}\n" "$@"
}
error() { printf "${red}✖ %s${reset}\n" "$@"
}
warn() { printf "${tan}➜ %s${reset}\n" "$@"
}
bold() { printf "${bold}%s${reset}\n" "$@"
}
note() { printf "\n${underline}${bold}${blue}Note:${reset} ${blue}%s${reset}\n" "$@"
}
100 changes: 100 additions & 0 deletions generators/app/templates/start-code.tmpl.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#!/bin/bash
cd `dirname $0`

source ./common.sh

#----------------- 参数提取 start -----------------#
output_log=
build=
port=8080

while getopts lbp: opt
do
case $opt in
l)
output_log=true
;;
b)
build=true
;;
p)
port=$OPTARG
;;
?)
error "Usage: %s: [-b] [-l] [-p] args\n" $0
exit 2
;;
esac
done
#----------------- 参数提取 end -----------------#

#----------------- 启动逻辑 start -----------------#
project_name='${artifactId}'

img_mvn="maven:3.3.3-jdk-8" # docker image of maven
m2_cache=~/.m2 # the local maven cache dir
proj_home=$PWD # the project root dir
img_output=$project_name # output image tag
container_name=$img_output # container name

h1 '准备启动应用'$project_name'(基于Docker)'

if [ ! -z $build ];then
h2 '准备构建项目'

if which mvn ; then
info '使用本地maven构建项目'
mvn clean package
else
info '使用maven镜像['$img_mvn']构建项目'
docker run --rm \
-v $m2_cache:/root/.m2 \
-v $proj_home:/usr/src/mymaven \
-w /usr/src/mymaven \
$img_mvn mvn clean package
fi
if [ $? -eq 0 ];then
success '项目构建成功'
else
error '项目构建失败'
exit 1
fi

h2 '准备构建Docker镜像'

sudo mv $proj_home/$project_name-provider/target/$project_name-*.jar $proj_home/$project_name-provider/target/app.jar
docker build --rm -t $img_output .
if [ $? -eq 0 ];then
success '镜像构建成功'
else
error '镜像构建失败'
exit 2
fi
fi

info '删除已存在的容器' && docker rm -f $container_name

info '准备启动docker容器'

docker run \
--name $container_name \
--restart=on-failure:5 \
--privileged \
-p $port:8080 \
-v $PWD/logs:/home/logs \
-d $img_output \
java -jar app.jar

if [ $? -eq 0 ];then
success '容器启动成功'
else
error '容器启动失败'
exit 3
fi

if [ ! -z $output_log ];then
note '以下是docker容器启动输出,你可以通过ctrl-c中止它,这并不会导致容器停止'
docker logs -f $container_name
fi

#----------------- 启动逻辑 end -----------------#

0 comments on commit dbe3f27

Please sign in to comment.