Docker中的WebLogic:如何自动启动托管服务器

时间:2020-01-23 09:23:59

标签: bash docker dockerfile weblogic weblogic12c

我正在学习Docker,并为Oracle WebLogic 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 &

可以使用CMD命令从Dockerfile调用此脚本。

但是使用这种解决方案,我失去了查看默认Docker日志中输出的功能。 docker logs WL -f将不显示任何内容。 此bash脚本解决方案的另一个问题是,如果该脚本完成,容器将停止运行。此脚本结尾是否需要无限循环?

如果可能的话,我希望没有start-wls-domain.sh的解决方案。

在Docker容器中自动启动Weblogic托管服务器的最佳和最简便方法是什么?

0 个答案:

没有答案