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

Start Node manager in Weblogic (Docker) using script.

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

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

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

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

如果 真的 不起作用,那么您将不得不回退到 运行 在您的容器中安装一些初始化系统,通常是 supervisord .