Implementación estable de proyectos Java

Implementar usando un script de shell

El sistema de ventanas tiene un archivo bat que puede ejecutar scripts. En Linux, puede usar shell para ejecutar scripts.

declaración de shell

Primero, registremos brevemente el significado de la declaración del shell:

  1. $# representa el número de parámetros;
  2. -lt (menor que) menor que -gt (mayor que) mayor que -eq (igual) igual -ne (distinto de) no igual -ge (mayor o igual) mayor o igual -le (menor o igual) menor o igual;
  3. salida de cadena de eco, se pueden omitir las comillas;
  4. $0 es el nombre del script de shell escrito, $1 es el primer parámetro que pasa el script, 2 se pasa en el segundo parámetro del script, 2 se pasa en el segundo parámetro del script,2 El script pasa el segundo parámetro, $ es el número de ID del proceso actual cuando el script se está ejecutando, $! es el último número de ID del proceso que se ejecuta en segundo plano;
  5. set -e puede evitar el problema de que la operación falla y continúa ejecutándose. El código que aparece después de "set -e", una vez que el valor de retorno es distinto de cero, todo el script se cerrará inmediatamente. Cuando se encuentra set +e después esta oración Si el valor de retorno es distinto de cero, continuará ejecutándose. Cuando set -e encuentre un valor de retorno distinto de cero después de esta oración, saldrá directamente;
  6. salida 0: es un comando de salida normal, salida 1: es un comando de salida anormal, echo $? Obtiene el resultado de la ejecución del último comando, si es 0, es ejecución normal, si no es 0, la ejecución tiene un excepción;
  7. {} Llaves, el usuario ejecuta el comando, el último comando en {} debe usar punto y coma, hay un espacio antes del primer comando y el corchete izquierdo, y los comandos están separados por;
  8. () Paréntesis, colección de comandos, los comandos entre paréntesis se ejecutarán en el subshell, la sustitución del comando $ (cmd) es equivalente a cmd, ejecute el cmd entre paréntesis e inicialice la matriz de datos = (abcd)
  9. (()) Los paréntesis dobles, comandos para operaciones con números enteros, no pueden operar con decimales (números de coma flotante) o cadenas
  10. function(){} - representa una función
  11. if [-f /-z]; luego ejecuta el contenido fi -f es verdadero si existe y es un archivo normal; -z es verdadero si la longitud de la cadena es cero; -n es verdadero si se juzga que la cadena no está vacía
  12. $(cd dirname $0;pwd) muestra el directorio donde se encuentra el script ejecutado y lo muestra con una ruta absoluta; pwd muestra el directorio donde se encuentra el comando actual y lo muestra con una ruta absoluta; Nota: 1. Al comparar en En el shell, el resultado es 0
    significa
    verdadero, 1 representa falso.
    2. Los comparadores como -eq y -ne solo se pueden usar para comparaciones digitales, y los caracteres se convertirán primero en números y luego se compararán.

Comandos comunes de Docker

docker  info/version #docker环境信息
docker ps # 查看运行的容器信息
docker ps -a # 所有容器信息
docker search xx #查找镜像
docker pull xx #拉取镜像
docker rmi -f 镜像ID/name #删除本地镜像
docker logs -f 容器ID #跟踪实时日志
docker top 容器ID # 查看容器中进程信息
docker inspect 容器ID/name #获取容器/镜像的元数据 -f :指定返回值的模板文件-s :显示总的文件大小--type :为指定类型返回JSON
docker inspect --format '{
    
    {.LogPath}}' 容器ID #查看某容器的日志地址
docker build #构建镜像
docker run #启动镜像
docker system prune #清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
docker system prune -a #命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉

Implementación de script de implementación de shell simple

# 编译打包过程
set -e
cd /xx/xx # 进入项目目录
git checkout xxx #切换分支
git pull #拉取最新代码
cd /xx/xx/xx #进入项目具体模块
mvn clean install -Dmaven.test.skip=true #使用maven 打包
propid=`ps -aux|grep xx.jar |grep -v grep| awk ' {print $2}
#ps -ef/aux |grep java就是通过管道的方式,将ps命令查询出来的进程信息内容筛选出与jar进程相关的数据
#-v 参数,作用是反转查找,即过滤出除了grep的其他数据
#  awk ' {
    
    print $2} awk对每行处理 print打印对应第二行的数据 也就是 xx.jar的pid
if[-n "${proid}"]; then
	echo "存在进程: ${propid}"
	kill -9 ${
    
    proid}
	echo "杀死进程:${propid}"
eles
	echo "进程不存在"
fi
#生成docker镜像
set -e
cd /xxx/xxx # 找到DockerFile所存在的目录
docker build -t x source/xx/
# -f :指定要使用的Dockerfile路径 -t name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签
# 后面部分为Dockerfile路径
set +e
#关闭名为x的容器
docker kill x
#删除停止的容器
docker rm x
set -e
docker run --name x -d -it --net="host" \
	 -v /home/xx.properties:/opt/xx/application-admin.properties \
	 -v /opt/files:/opt/files \
	 -v /opt/logs:/opt/logs \
	 -v /home:/home \
	 --security-opt label:disable \
	  x
# -v 给容器挂载存储卷,挂载到容器的某个目录
# -d 指定容器运行于前台还是后台,默认为 false
# -i 打开 STDIN,用于控制台交互
# -t 分配 tty 设备,该可以支持终端登录,默认为 false
# -name 指定容器名字,后续可以通过名字进行容器管理,links 特性需要使用名字
# –net=“hose” 容器使用主机网络
#  --security-opt label:disable 关闭容器的标签限制

Supongo que te gusta

Origin blog.csdn.net/qq_36488864/article/details/129746316
Recomendado
Clasificación