在 docker 集群复制应用程序中禁用 EJB Scuduler
Disable EJB Scuduler in docker swarm replication app
我正在使用 docker swarm 来部署我的应用程序。
我正在使用 payara
图片 (payara/server-full:4.181).
Docker 版本 18.03.1-ce
,构建 9ee9f40
version: "3"
services:
backend:
container_name: backend
restart: always
build: ./../yf-services
image: 127.0.0.1:5000/yf-services
entrypoint: "/opt/payara41/bin/startInForeground.sh --passwordfile=/opt/pwdfile -d --postbootcommandfile glassfish/domains/domain1"
deploy:
mode: replicated
replicas: 2
networks:
- nginx-proxy
networks:
nginx-proxy:
是否可以在复制的应用程序中禁用 EJB
调度程序?
是否可以将一些环境变量传递给复制的应用程序?
这里有一些解决方法,也许有人会找到更好的...
在服务中你可以传递环境变量
environment:
- TASK_NAME={{.Task.Name}}
其中 .Task.Name 将是您的 stackName_serviceName.number
在我的例子中是针对每个副本
yf_backend.1.....
yf_backend.2.....
然后从您的 JAVA 应用程序中您可以获得环境变量并检查多个副本。
将其启用 1,其余禁用。
像这样:
public boolean isEnvVariableEnableScheduler() {
final String envSchedulerTaskEnvVeriable = System.getenv("TASK_NAME");
return envSchedulerTaskEnvVeriable == null || envSchedulerTaskEnvVeriable.contains("yf_backend.1");
}
我正在使用 docker swarm 来部署我的应用程序。
我正在使用 payara
图片 (payara/server-full:4.181).
Docker 版本 18.03.1-ce
,构建 9ee9f40
version: "3"
services:
backend:
container_name: backend
restart: always
build: ./../yf-services
image: 127.0.0.1:5000/yf-services
entrypoint: "/opt/payara41/bin/startInForeground.sh --passwordfile=/opt/pwdfile -d --postbootcommandfile glassfish/domains/domain1"
deploy:
mode: replicated
replicas: 2
networks:
- nginx-proxy
networks:
nginx-proxy:
是否可以在复制的应用程序中禁用 EJB
调度程序?
是否可以将一些环境变量传递给复制的应用程序?
这里有一些解决方法,也许有人会找到更好的...
在服务中你可以传递环境变量
environment:
- TASK_NAME={{.Task.Name}}
其中 .Task.Name 将是您的 stackName_serviceName.number 在我的例子中是针对每个副本
yf_backend.1.....
yf_backend.2.....
然后从您的 JAVA 应用程序中您可以获得环境变量并检查多个副本。 将其启用 1,其余禁用。 像这样:
public boolean isEnvVariableEnableScheduler() {
final String envSchedulerTaskEnvVeriable = System.getenv("TASK_NAME");
return envSchedulerTaskEnvVeriable == null || envSchedulerTaskEnvVeriable.contains("yf_backend.1");
}