Отключите EJB Scuduler в приложении репликации Docker Swarm - PullRequest
0 голосов
/ 26 декабря 2018

Я использую 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 в реплицируемом приложении?Можно ли передать некоторую переменную окружения в реплицируемое приложение?

1 Ответ

0 голосов
/ 27 декабря 2018

Вот какое-то обходное решение, может быть, кто-то найдет лучшее ...

при обслуживании вы можете передать переменную env

environment:
  - TASK_NAME={{.Task.Name}}

, где .Task.Name будет вашим stackName_serviceName.в моем случае это был номер для каждой реплики

yf_backend.1.....
yf_backend.2.....

, тогда из вашего JAVA-приложения вы можете получить переменную env и проверить количество реплик.Оставьте его включенным для 1, а для остальных отключенным.Как то так:

public boolean isEnvVariableEnableScheduler() {
    final String envSchedulerTaskEnvVeriable = System.getenv("TASK_NAME");
    return envSchedulerTaskEnvVeriable == null || envSchedulerTaskEnvVeriable.contains("yf_backend.1");

}
...