build_docker.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/bin/bash
  2. # -p:允许后面跟一个字符串作为提示 -r:保证读入的是原始内容,不会发生任何转义
  3. read -r -p "请输入Dockedr镜像版本:" version
  4. echo "即将构建的 server 镜像:oms-server:$version"
  5. echo "即将构建的 agent 镜像:oms-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 -DskipTests -Pdev -U -e
  13. echo "================== 拷贝 jar =================="
  14. /bin/cp -rf oh-my-scheduler-server/target/*.jar oh-my-scheduler-server/oms-server.jar
  15. /bin/cp -rf oh-my-scheduler-worker-agent/target/*.jar oh-my-scheduler-worker-agent/oms-agent.jar
  16. ls -l oh-my-scheduler-server/oms-server.jar
  17. ls -l oh-my-scheduler-worker-agent/oms-agent.jar
  18. fi
  19. echo "================== 关闭老应用 =================="
  20. docker stop oms-server
  21. docker stop oms-agent
  22. docker stop oms-agent2
  23. echo "================== 删除老容器 =================="
  24. docker container rm oms-server
  25. docker container rm oms-agent
  26. docker container rm oms-agent2
  27. read -r -p "是否重新构建镜像(y/n):" rebuild
  28. if [ "$rebuild" = "y" ] || [ "$rebuild" = "Y" ]; then
  29. echo "================== 删除旧镜像 =================="
  30. docker rmi -f tjqq/oms-server:$version
  31. docker rmi -f tjqq/oms-agent:$version
  32. echo "================== 构建 oms-server 镜像 =================="
  33. docker build -t tjqq/oms-server:$version oh-my-scheduler-server/. || exit
  34. echo "================== 构建 oms-agent 镜像 =================="
  35. docker build -t tjqq/oms-agent:$version oh-my-scheduler-worker-agent/. || exit
  36. read -r -p "是否正式发布该镜像(y/n):" needrelease
  37. if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
  38. read -r -p "三思!请确保当前处于已发布的Master分支!(y/n):" needrelease
  39. if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
  40. echo "================== 正在推送 server 镜像到中央仓库 =================="
  41. docker push tjqq/oms-server:$version
  42. echo "================== 正在推送 agent 镜像到中央仓库 =================="
  43. docker push tjqq/oms-agent:$version
  44. fi
  45. fi
  46. fi
  47. read -r -p "是否启动 server & agent(y/n):" startup
  48. if [ "$startup" = "y" ] || [ "$startup" = "Y" ]; then
  49. # 启动应用(端口映射、数据路径挂载)
  50. ## -d:后台运行
  51. ## -p:指定端口映射,主机端口:容器端口
  52. ## --name:指定容器名称
  53. ## -v(--volume):挂载目录,宿主机目录:docker内目录,写入docker内路径的数据会被直接写到宿主机上,常用于日志文件
  54. ## --net=host:容器和宿主机共享网络(容器直接使用宿主机IP,性能最好,但网络隔离较差)
  55. echo "================== 准备启动 oms-server =================="
  56. docker run -d -e PARAMS="--spring.profiles.active=pre" -p 7700:7700 -p 10086:10086 --name oms-server -v ~/docker/oms-server:/root/oms-server tjqq/oms-server:$version
  57. sleep 1
  58. # tail -f -n 1000 ~/docker/oms-server/logs/oms-server-application.log
  59. sleep 30
  60. echo "================== 准备启动 oms-client =================="
  61. serverIP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' oms-server)
  62. serverAddress="$serverIP:7700"
  63. echo "使用的Server地址:$serverAddress"
  64. docker run -d -e PARAMS="--app oms-agent-test --server $serverAddress" -p 27777:27777 --name oms-agent -v ~/docker/oms-agent:/root tjqq/oms-agent:$version
  65. docker run -d -e PARAMS="--app oms-agent-test --server $serverAddress" -p 27778:27777 --name oms-agent2 -v ~/docker/oms-agent2:/root tjqq/oms-agent:$version
  66. tail -f -n 100 ~/docker/oms-agent/oms/logs/oms-agent-application.log
  67. fi