Я учусь 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
Но мне нужно запускать управляемые серверы вручную. Мне нужно войти в контейнер и запустить их вручную:
docker exec -it WL /bin/bash
./startManagedWebLogic.sh MANAGED_SERVER_1 http://localhost:7001 &
./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?