如何在Payara Micro中动态设置上下文根?



我正在为部署到多个环境的应用程序构建 docker 映像。对于其中一些环境,上下文根需要不同。

到目前为止,我使用 payara/server-full 作为基本映像,但我想切换到轻量级 payara/micro 映像。

在前者中,我能够使用以下方法设置上下文根:

${PAYARA_PATH}/generate_deploy_commands.sh --contextroot "${CONTEXT_ROOT}" 

这意味着我能够在使用环境变量启动 docker 容器时动态配置上下文根。

我未能为 payara 微型部署找到类似的选项。作为后备,我尝试创建一个玻璃鱼网.xml其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<context-root>__CONTEXT_ROOT__</context-root>
</glassfish-web-app>

在容器启动期间(在启动 payara micro 之前(,我用环境变量的值(例如 'api/v1'(替换了__CONTEXT_ROOT__,并将其添加到 var 文件的 WEB-INF 目录中。

似乎 payara micro 没有使用该配置文件的上下文根规范。应用程序仍根据".war"的文件名进行部署。我可以根据环境变量重命名".war",但这不允许任何"斜杠"/嵌套路径。或者有没有办法做到这一点?

我的想法用完了,在类似的问题和错误中找不到任何解决方案。感谢您的帮助。

我知道有点晚了,但根据这一点,你可以在glassfish-web.xml即进行"特殊"环境扩展。 如果你把它放进去:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN"
"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<context-root>${ENV=CONTEXT_ROOT}</context-root>
</glassfish-web-app>

这将扩展到您想要的上下文根。我用payara-micro 5.183进行了测试,但根据文档,从2017年5月中旬开始,您应该很好。

但是,如果你像我一样称呼你的战争ROOT.war,你会遇到问题。我真的不知道为什么,但这覆盖了glassfish-web.xml的上下文根,并将其放在根中。

好的,所以由于我似乎没有找到实现此目的的内置方法,因此我基本上复制了服务器完整 docker 映像的行为并且它起作用了。

详细地:

  1. 将generate_deploy_commands.sh脚本复制到我的构建文件夹
  2. 在生成期间将脚本添加到容器并使其可执行
  3. 添加了环境变量ENV POSTBOOT_COMMANDS postboot.txtENV CONTEXT_ROOT api
  4. 作为docker RUN的一部分运行${PAYARA_PATH}/generate_deploy_commands.sh --contextroot "${CONTEXT_ROOT}",但在实际启动payara之前
  5. 使用 --postbootcommandfile $POSTBOOT_COMMANDS 启动 payara。
  6. 现在我们可以在运行 docker 容器时使用 -e CONTEXT_ROOT=API/v1 设置上下文根

我希望这有助于其他人寻找解决方案。

你是对的,最近的Payara Micro 5.182不支持任何指定contextRoot的选项。它始终派生自 WAR 文件的名称。

使用 Payara Micro 5.182 将应用程序部署到自定义上下文根的唯一方法是在--postbootcommandfile中使用 asadmin deploy 命令部署应用程序,该命令允许指定所有部署属性,包括上下文根。有关用法的文档,请参阅 https://docs.payara.fish/documentation/payara-micro/asadmin/pre-and-post-boot-scripts.html。

现在可以通过使用 DEPLOY_PROPS --contextroot=/api 来实现。

请参阅此处使用 env 变量的位置。

相关内容

  • 没有找到相关文章

最新更新