build_docker.sh 5.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/bin/bash
  2. # -p:允许后面跟一个字符串作为提示 -r:保证读入的是原始内容,不会发生任何转义
  3. read -r -p "请输入Dockedr镜像版本:" version
  4. echo "即将构建的 server 镜像:powerjob-server:$version"
  5. echo "即将构建的 agent 镜像:powerjob-agent:$version"
  6. read -r -p "任意键继续:"
  7. # 一键部署脚本,请勿挪动脚本
  8. cd `dirname $0`/../.. || exit
  9. read -r -p "是否进行maven构建(y/n):" needmvn
  10. if [ "$needmvn" = "y" ] || [ "$needmvn" = "Y" ]; then
  11. echo "================== 构建 jar =================="
  12. # mvn clean package -Pdev -DskipTests -U -e -pl powerjob-server,powerjob-worker-agent -am
  13. # -U:强制检查snapshot库 -pl:指定需要构建的模块,多模块逗号分割 -am:同时构建依赖模块,一般与pl连用 -Pxxx:指定使用的配置文件
  14. mvn clean package -Pdev -DskipTests -U -e
  15. echo "================== 拷贝 jar =================="
  16. /bin/cp -rf powerjob-server/powerjob-server-starter/target/*.jar powerjob-server/docker/powerjob-server.jar
  17. /bin/cp -rf powerjob-worker-agent/target/*.jar powerjob-worker-agent/powerjob-agent.jar
  18. ls -l powerjob-server/docker/powerjob-server.jar
  19. ls -l powerjob-worker-agent/powerjob-agent.jar
  20. fi
  21. echo "================== 关闭老应用 =================="
  22. docker stop powerjob-server
  23. docker stop powerjob-agent
  24. docker stop powerjob-agent2
  25. echo "================== 删除老容器 =================="
  26. docker container rm powerjob-server
  27. docker container rm powerjob-agent
  28. docker container rm powerjob-agent2
  29. read -r -p "是否重新构建镜像(y/n):" rebuild
  30. if [ "$rebuild" = "y" ] || [ "$rebuild" = "Y" ]; then
  31. echo "================== 删除旧镜像 =================="
  32. docker rmi -f tjqq/powerjob-server:$version
  33. docker rmi -f tjqq/powerjob-agent:$version
  34. echo "================== 构建 powerjob-server 镜像 =================="
  35. docker build -t tjqq/powerjob-server:$version powerjob-server/docker/. || exit
  36. echo "================== 构建 powerjob-agent 镜像 =================="
  37. docker build -t tjqq/powerjob-agent:$version powerjob-worker-agent/. || exit
  38. read -r -p "是否正式发布该镜像(y/n):" needrelease
  39. if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
  40. read -r -p "三思!请确保当前处于已发布的Master分支!(y/n):" needrelease
  41. if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
  42. echo "================== 正在推送 server 镜像到中央仓库 =================="
  43. docker push tjqq/powerjob-server:$version
  44. echo "================== 正在推送 agent 镜像到中央仓库 =================="
  45. docker push tjqq/powerjob-agent:$version
  46. fi
  47. fi
  48. fi
  49. read -r -p "是否启动 server & agent(y/n):" startup
  50. if [ "$startup" = "y" ] || [ "$startup" = "Y" ]; then
  51. # 启动应用(端口映射、数据路径挂载)
  52. ## -d:后台运行
  53. ## -p:指定端口映射,主机端口:容器端口
  54. ## --name:指定容器名称
  55. ## -v(--volume):挂载目录,宿主机目录:docker内目录,写入docker内路径的数据会被直接写到宿主机上,常用于日志文件
  56. ## --net=host:容器和宿主机共享网络(容器直接使用宿主机IP,性能最好,但网络隔离较差)
  57. echo "================== 准备启动 powerjob-server =================="
  58. docker run -d \
  59. --name powerjob-server \
  60. -p 7700:7700 -p 10086:10086 -p 5001:5005 -p 10001:10000 \
  61. -e JVMOPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10000 -Dcom.sun.management.jmxremote.rmi.port=10000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" \
  62. -e PARAMS="--spring.profiles.active=pre" \
  63. -e TZ="Asia/Shanghai" \
  64. -v ~/docker/powerjob-server:/root/powerjob-server -v ~/.m2:/root/.m2 \
  65. tjqq/powerjob-server:$version
  66. sleep 1
  67. # tail -f -n 1000 ~/docker/powerjob-server/logs/powerjob-server-application.log
  68. sleep 30
  69. echo "================== 准备启动 powerjob-client =================="
  70. serverIP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' powerjob-server)
  71. serverAddress="$serverIP:7700"
  72. echo "使用的Server地址:$serverAddress"
  73. docker run -d \
  74. --name powerjob-agent \
  75. -p 27777:27777 -p 5002:5005 -p 10002:10000 \
  76. -e JVMOPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10000 -Dcom.sun.management.jmxremote.rmi.port=10000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" \
  77. -e PARAMS="--app powerjob-agent-test --server $serverAddress" \
  78. -v ~/docker/powerjob-agent:/root \
  79. tjqq/powerjob-agent:$version
  80. docker run -d \
  81. --name powerjob-agent2 \
  82. -p 27778:27777 -p 5003:5005 -p 10003:10000 \
  83. -e JVMOPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" \
  84. -e PARAMS="--app powerjob-agent-test --server $serverAddress" \
  85. -v ~/docker/powerjob-agent2:/root \
  86. tjqq/powerjob-agent:$version
  87. tail -f -n 100 ~/docker/powerjob-agent/powerjob/logs/powerjob-agent-application.log
  88. fi