你们大多数人都记得,我在 Oracle WebLogic 服务器方面有一些历史。从 BEA 时代一路回来。我不想评论最近的发展或功能或标准支持,但有一件事是肯定的:它已经存在并且有机会以容器化方式运行它是许多客户会喜欢的。也许这是一件事,随着容器化领域的不断进步,这将对我们的行业产生真正的影响。我们实际上可以在一个共同的基础上管理异构的基础设施组件。如果我们手头有合适的工具。这对于 OpenShift 的操作方面来说是正确的,当然对于所有开发人员来说也是如此,他们会欣赏 Fabric8 可以为他们做些什么。
许可前言
这篇博文中发生的任何事情都只会发生在我本地的开发人员笔记本电脑上。我坚信,关于 Oracle 技术,这绝对包含在所谓的 OTN 免费开发人员许可协议 和 Oracle Java SE 二进制代码许可协议中 。
我非常确定,生产环境需要大量许可证。但我不是专家。所以,不要问我。如果您想使用 RHEL 7,请了解 Red Hat Subscriptions 。
好的,WebLogic - 你的图像在哪里?
不在那里。我假设出于许可原因。但是,Bruno 在将相关的 Dockerfiles 和脚本推送到 官方 Oracle GitHub 帐户方面做得很好。所以。在 Kubernetes 上运行 WebLogic 的第一步是用它实际构建一个 docker 镜像。去,
git clone https://github.com/oracle/docker
并导航到 OracleWebLogic 文件夹。事实上,您可以删除除此之外的所有其他内容。第一步是下载 WebLogic ZIP 安装程序和要使用的正确 JDK。
转至 Oracle 网站 ,接受 OTN 许可证(如果您愿意)并下载独立于平台的 ZIP 安装程序 (wls1213_dev_update2.zip)。
现在浏览到 JDK 下载网站 ,执行相同的许可操作并下载 8u51 JDK 作为 rpm (jdk-8u51-linux-x64.rpm)。将两者都放入 OracleWebLogic\dockerfiles\1.2.1.3 文件夹中。如果您自己在类似 Unix 的操作系统上运行,请随时查看 官方文档 并使用提供的脚本。这在 Windows 上对我不起作用,因此您将获得逐步演练。将 Dockerfile.developer 重命名为 Dockerfile 并删除所有其他文件。
git clone https://github.com/oracle/docker
现在您打开 Dockerfile 并更改一些内容。基于 RHEL 7:
git clone https://github.com/oracle/docker
并注释掉另一个基础,它就在那里......而且因为我们想要运行一个经过适当修补且可用的 Java 版本,我们将相应地更改环境变量
git clone https://github.com/oracle/docker
是时候建立我们的形象了。在开始之前,让我们重用 fabric8 vagrant 安装程序,我已经在 最后两篇博文 中使用了它。因此,首先使用 OpenShift 启动您的 vagrant 实例。现在是构建 WebLogic 映像的时候了。坐下来放松一下,因为这还需要几分钟。需要打扫卫生吗?这可能是正确的时间!
git clone https://github.com/oracle/docker
完毕?检查是否一切都在我们期望的位置:(docker images)
git clone https://github.com/oracle/docker
因为此映像仅包含服务器二进制文件,所以我们现在需要构建一个映像,其中包含已配置的 WLS 域。值得庆幸的是,samples\12c-domain 文件夹中还有一些脚本。因此,请检查 Dockerfile 和容器脚本中的所有脚本是否具有正确的 UNIX 行尾。有时,如果你在 Windows 上,Git 会把它们搞砸。如果您已经在那里,请确保根据您的需要更改一些端口。我必须将管理端口更改为 8011(在 Dockerfile 和 add-machine.py 脚本中执行此操作。我们要做的另一件事是在开发模式下运行实例。这使我们可以只复制我们的 Java EE 应用程序进入 ./autodeployment 文件夹并在启动时部署它。您只需将以下行中的属性从 prod 更改为 dev:
git clone https://github.com/oracle/docker
现在,您已准备好继续构建开发域映像:
git clone https://github.com/oracle/docker
又喝了几杯咖啡后,我们准备好检查这张图片是否进入了我们的存储库(docker images)
git clone https://github.com/oracle/docker
在继续之前,一定要试一试,看看 Weblogic 实例是否出现。
git clone https://github.com/oracle/docker
如果成功了,您今天就可以构建您的第三个映像了。其中将包含您的应用程序。
NetBeans 和 Fabric8 - 将 WebLogic 带入希腊天堂
启动 NetBeans 并根据您选择的 maven 原型创建一个漂亮、简单且精简的 Java EE 6 项目。将所有 fabric8 和 docker-maven 插件依赖项添加到其中,就像我之前在 本系列的第一篇博文 中向您展示的那样。让我们根据需要调整属性,并将图像命名为:myfear/weblogic-test:latest。最重要的是,您必须正确地将容器端口映射到 Kubernetes 服务:
git clone https://github.com/oracle/docker
不要忘记使用 Java EE 6 作为依赖项,并将 docker-maven 插件中的用户和部署基础更改为:
git clone https://github.com/oracle/docker
是时候构建第三个也是最后一个 docker 镜像了:
git clone https://github.com/oracle/docker
如果正确完成,我们将使用 Fabric8 工具将所有内容部署到 OpenShift:
git clone https://github.com/oracle/docker
并且不要忘记将主机名映射添加到您的主机文件中。
git clone https://github.com/oracle/docker
对 http://myfear-weblogic-test.vagrant.f8/sample 的请求显示了您等待几分钟后的应用程序(至少,我不得不这样做;看起来我的笔记本电脑速度不够快。)。
一些进一步的评论
这还没有完全准备好生产。 WLS 知道托管服务器和节点管理器,并且有一堆用于外部通信的端口需要打开。这基本上只是将一个小应用程序部署到 AdminServer 上。关于如何调整域脚本以满足您的需求,有一些白皮书和进一步的想法。出于显而易见的原因,我不想那样做。因此,将此视为概念证明。