【发布时间】:2019-01-14 21:49:38
【问题描述】:
我正在为部署到多个环境的应用程序构建 docker 映像。其中一些环境的上下文根需要不同。
到目前为止,我使用payara/server-full 作为基础镜像,但我想切换到轻量级的payara/micro 镜像。
在前者中,我可以使用以下方法设置上下文根:
${PAYARA_PATH}/generate_deploy_commands.sh --contextroot "${CONTEXT_ROOT}"
这意味着我能够在使用环境变量启动 docker 容器时动态配置上下文根。
我没有为 payara 微部署找到类似的选项。作为后备,我尝试使用以下内容创建 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>__CONTEXT_ROOT__</context-root>
</glassfish-web-app>
在容器启动期间(在启动 payara micro 之前),我将 __CONTEXT_ROOT__ 替换为环境变量的值(例如 'api/v1')并将其添加到 var 文件的 WEB-INF 目录中。
看来 payara micro 没有使用该配置文件的上下文根规范。该应用程序仍然基于“.war”的文件名进行部署。我可以根据环境变量重命名“.war”,但这不允许任何“斜杠”/嵌套路径。或者有没有办法做到这一点?
我的想法已经不多了,也没有在类似的问题和错误中找到任何解决方案。感谢您的帮助。
【问题讨论】:
标签: docker jakarta-ee glassfish payara-micro