Parcourir la source

[dev] support delivery jvm options to docker

tjq il y a 4 ans
Parent
commit
eec6fea025

+ 17 - 3
others/script/build_docker.sh

@@ -62,7 +62,8 @@ if [ "$startup" = "y" ] || [  "$startup" = "Y" ]; then
   echo "================== 准备启动 powerjob-server =================="
   docker run -d \
          --name powerjob-server \
-         -p 7700:7700 -p 10086:10086 \
+         -p 7700:7700 -p 10086:10086 -p 5001:5005 -p 10001:10000 \
+         -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" \
          -e PARAMS="--spring.profiles.active=pre" \
          -v ~/docker/powerjob-server:/root/powerjob-server -v ~/.m2:/root/.m2 \
          tjqq/powerjob-server:$version
@@ -74,8 +75,21 @@ if [ "$startup" = "y" ] || [  "$startup" = "Y" ]; then
   serverIP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' powerjob-server)
   serverAddress="$serverIP:7700"
   echo "使用的Server地址:$serverAddress"
-  docker run -d -e PARAMS="--app powerjob-agent-test --server $serverAddress" -p 27777:27777 --name powerjob-agent -v ~/docker/powerjob-agent:/root tjqq/powerjob-agent:$version
-  docker run -d -e PARAMS="--app powerjob-agent-test --server $serverAddress" -p 27778:27777 --name powerjob-agent2 -v ~/docker/powerjob-agent2:/root tjqq/powerjob-agent:$version
+  docker run -d \
+         --name powerjob-agent \
+         -p 27777:27777 -p 5002:5005 -p 10002:10000 \
+         -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" \
+         -e PARAMS="--app powerjob-agent-test --server $serverAddress" \
+         -v ~/docker/powerjob-agent:/root \
+         tjqq/powerjob-agent:$version
+
+  docker run -d \
+         --name powerjob-agent2 \
+         -p 27778:27777 -p 5003:5005 -p 10003:10000 \
+         -e JVMOPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" \
+         -e PARAMS="--app powerjob-agent-test --server $serverAddress" \
+         -v ~/docker/powerjob-agent2:/root \
+         tjqq/powerjob-agent:$version
 
   tail -f -n 100 ~/docker/powerjob-agent/powerjob/logs/powerjob-agent-application.log
 fi

+ 18 - 3
others/script/jenkins_auto_build.sh

@@ -24,7 +24,8 @@ echo "================== 准备启动 powerjob-server =================="
 docker run -d \
        --restart=always \
        --name powerjob-server \
-       -p 7700:7700 -p 10086:10086 \
+       -p 7700:7700 -p 10086:10086 -p 5001:5005 -p 10001:10000 \
+       -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" \
        -e PARAMS="--spring.profiles.active=product --spring.datasource.core.jdbc-url=jdbc:mysql://124.70.67.79:3306/powerjob-product?useUnicode=true&characterEncoding=UTF-8 --spring.data.mongodb.uri=mongodb://124.70.67.79:27017/powerjob-product" \
        -v ~/docker/powerjob-server:/root/powerjob-server -v ~/.m2:/root/.m2 \
        tjqq/powerjob-server:latest
@@ -34,6 +35,20 @@ echo "================== 准备启动 powerjob-agent =================="
 serverIP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' powerjob-server)
 serverAddress="$serverIP:7700"
 echo "使用的Server地址:$serverAddress"
-docker run -d --restart=always -e PARAMS="--app powerjob-agent-test --server $serverAddress" -p 27777:27777 --name powerjob-agent -v ~/docker/powerjob-agent:/root tjqq/powerjob-agent:latest
-docker run -d --restart=always -e PARAMS="--app powerjob-agent-test --server $serverAddress" -p 27778:27777 --name powerjob-agent2 -v ~/docker/powerjob-agent2:/root tjqq/powerjob-agent:latest
+
+docker run -d \
+       --name powerjob-agent \
+       -p 27777:27777 -p 5002:5005 -p 10002:10000 \
+       -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" \
+       -e PARAMS="--app powerjob-agent-test --server $serverAddress" \
+       -v ~/docker/powerjob-agent:/root \
+       tjqq/powerjob-agent:$version
+
+docker run -d \
+       --name powerjob-agent2 \
+       -p 27778:27777 -p 5003:5005 -p 10003:10000 \
+       -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" \
+       -e PARAMS="--app powerjob-agent-test --server $serverAddress" \
+       -v ~/docker/powerjob-agent2:/root \
+       tjqq/powerjob-agent:$version
 

+ 3 - 2
powerjob-server/docker/Dockerfile

@@ -17,8 +17,9 @@ RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 
 # 设置其他环境变量
 ENV APP_NAME=powerjob-server
-# 传递 SpringBoot 启动参数
+# 传递 SpringBoot 启动参数 和 JVM参数
 ENV PARAMS=""
+ENV JVMOPTIONS=""
 # 将应用 jar 包拷入 docker
 COPY powerjob-server.jar /powerjob-server.jar
 # 暴露端口(HTTP + AKKA)
@@ -28,4 +29,4 @@ RUN mkdir -p /root/powerjob-server
 # 挂载数据卷,将文件直接输出到宿主机(注意,此处挂载的是匿名卷,即在宿主机位置随机)
 VOLUME /root/powerjob-server
 # 启动应用
-ENTRYPOINT ["sh","-c","java -jar /powerjob-server.jar $PARAMS"]
+ENTRYPOINT ["sh","-c","java $JVMOPTIONS -jar /powerjob-server.jar $PARAMS"]

+ 3 - 4
powerjob-worker-agent/Dockerfile

@@ -1,12 +1,11 @@
 # 为了便于使用 arthas,agent 也使用 jdk 而不是 jre
 FROM adoptopenjdk:8-jdk-hotspot
 MAINTAINER tengjiqi@gmail.com
-# 设置时区
-ENV TZ=Asia/Shanghai
-RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 
 ENV APP_NAME=powerjob-worker-agent
+# 传递 SpringBoot 启动参数 和 JVM参数
 ENV PARAMS=""
+ENV JVMOPTIONS=""
 
 COPY powerjob-agent.jar /powerjob-agent.jar
 # 暴露端口(AKKA-Client)
@@ -14,4 +13,4 @@ EXPOSE 27777
 # 挂载数据卷,将文件直接输出到宿主机(注意,此处挂载的是匿名卷,即在宿主机位置随机)
 VOLUME /root
 # 启动应用
-ENTRYPOINT ["sh","-c","java -jar /powerjob-agent.jar $PARAMS"]
+ENTRYPOINT ["sh","-c","java $JVMOPTIONS -jar /powerjob-agent.jar $PARAMS"]