【问题标题】:Start Node manager in Weblogic (Docker) using script.使用脚本在 Weblogic (Docker) 中启动节点管理器。
【发布时间】:2018-08-15 09:06:58
【问题描述】:

我尝试对 weblogic 服务器进行 docker 化。现在,在 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

【问题讨论】:

标签: docker weblogic nodemanager


【解决方案1】:

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

如果这是商业维护的图像,您可能会查看Oracle has intstructions on how to use it。 (通过点击,那里的样本都没有启动节点管理器;有必要吗?)

最佳实践通常是在 Docker 容器中仅运行一台服务器(理想情况下在前台并作为容器的主进程)。如果这可行并且没有共享的文件系统依赖项,您可以将除最后一个 CMD 之外的所有这些拆分为一个基本 Dockerfile,然后有两个额外的 Dockerfile,它们只有一个 FROM 行指向您主要构建的图像和一个请求的CMD

如果那真的不起作用,那么你将不得不在你的容器中运行一些初始化系统,通常是supervisord

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多