WebLogi c in Docker: как автоматически запускать управляемые серверы - PullRequest
0 голосов
/ 23 января 2020

Я учусь Docker и создаю образ для Oracle WebLogi c 12.2.1.4 сервера.

Мое изображение готово, работает нормально. Он содержит

  • сервер администратора
  • два управляемых сервера

Когда я запускаю образ с docker run -d -p 7001:7001 --name WL oracle/weblogic-12.2.1.4.0:1.0, сервер администратора запускается автоматически, потому что я добавил Следующая строка в конце моего Dockerfile:

CMD /u01/oracle/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh

Но мне нужно запускать управляемые серверы вручную. Мне нужно войти в контейнер и запустить их вручную:

  1. docker exec -it WL /bin/bash
  2. ./startManagedWebLogic.sh MANAGED_SERVER_1 http://localhost:7001 &
  3. ./startManagedWebLogic.sh MANAGED_SERVER_2 http://localhost:7001 &

Это не то, что я хочу. Я хочу запускать управляемые серверы автоматически после запуска и запуска сервера администратора.

Я думал о создании нового сценария bash, скопировании его в образ и использовании его для загрузки администратора и управляемых серверов. , Например:

start-wls-domain. sh

#!/bin/bash

/u01/oracle/user_projects/domains/$DOMAIN_NAME/startWebLogic.sh &

# there are a more sophisticated way to check the status of the admin server but it is okay for test
sleep 60

./startManagedWebLogic.sh MANAGED_SERVER_1 http://localhost:7001 &
./startManagedWebLogic.sh MANAGED_SERVER_2 http://localhost:7001 &

Этот сценарий можно вызвать из Dockerfile с помощью команды CMD.

Но с этим решением я потерял способность видеть выходные данные в журнале Docker по умолчанию. docker logs WL -f ничего не отобразит. Другая проблема с этим решением bash заключается в том, что если этот сценарий завершится, контейнер перестанет работать. Нужен ли мне бесконечный l oop в конце этого сценария?

Если возможно, я бы хотел найти решение без start-wls-domain.sh.

Какой самый лучший и простой способ автоматически запускать управляемые серверы Weblogi c в контейнере Docker?

...