我正在学习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
但是我需要手动启动托管服务器。我需要登录到容器并手动启动它们:
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 &
可以使用CMD
命令从Dockerfile调用此脚本。
但是使用这种解决方案,我失去了查看默认Docker日志中输出的功能。 docker logs WL -f
将不显示任何内容。
此bash脚本解决方案的另一个问题是,如果该脚本完成,容器将停止运行。此脚本结尾是否需要无限循环?
如果可能的话,我希望没有start-wls-domain.sh
的解决方案。
在Docker容器中自动启动Weblogic托管服务器的最佳和最简便方法是什么?