使用脚本在Weblogic(Docker)中启动节点管理器。

时间:2018-08-15 09:06:58

标签: docker weblogic nodemanager

我尝试对Weblogic服务器进行dockerize。现在在docker容器中启动服务器后,我面临启动节点管理器的问题。我的docker文件如下。

FROM oracle/weblogic:12.1.3-generic

ENV JAVA_OPTIONS="${JAVA_OPTIONS} - 
Dweblogic.nodemanager.SecureListener=false" \
ADMIN_PORT="7001" \
ADMIN_HOST="localhost"

USER oracle
COPY dockerfiles/keyStore/keystore_ss.jks /u01/oracle/keystore/
COPY dockerfiles/patch/* /u01/oracle/patch/
COPY dockerfiles/local_domainScripts /u01/oracle/local_domainScripts/
COPY dockerfiles/scripts/* /u01/oracle/
COPY dockerfiles/applicationFiles/ /u01/oracle/applicationFiles/

USER root
RUN yum install -y procps
RUN chmod +x startWeblogic.sh

USER oracle

RUN /u01/oracle/wlst /u01/oracle/local_domainScripts/config.py

RUN nohup bash -c "/u01/oracle/user_projects/domains/local_domain/bin/startNodeManager.sh &" && sleep 4

CMD ["/u01/oracle/user_projects/domains/local_domain/startWebLogic.sh"]

这将创建weblogic服务器实例。我要在启动此服务器后启动节点管理器。

运行命令:

docker run -d --name wls_local_domain --network=host --hostname localhost -p 7001:7001 test-docker:0-SNAPSHOT

在容器内执行 ./ startNodeManager.sh 时,将启动节点管理器。要启动节点管理器,需要首先启动weblogic服务器。

我想使用bash脚本。我尝试了这个,但没有帮助 github link

1 个答案:

答案 0 :(得分:1)

您不能(有用)RUN后台进程。该Dockerfile命令启动执行RUN命令的中间容器,保存其文件系统,然后退出;到下一个Dockerfile命令执行时,不再有任何进程在运行。

如果这是商业维护的图像,则可以检查是否为Oracle has intstructions on how to use it。 (通过单击,那里的所有示例都没有启动节点管理器;是否有必要?)

最佳实践通常是在Docker容器中仅运行一台服务器(最好是在前台运行,并作为该容器的主进程)。如果那行得通并且没有共享的文件系统依赖性,则可以将除最后一个CMD之外的所有其他内容拆分为一个基本的Dockerfile,然后再添加两个仅带有FROM行指向您的Dockerfile大部分是内置图片和请求的CMD

如果真的无法正常工作,那么您将不得不转而在容器中运行某些初始化系统,通常是supervisord