Quarkus Stylish 不适用于容器镜像 (Openshift / Docker)

Quarkus Stylish not working in container images (Openshift / Docker)

我们正在更新文档并为生成的页面添加品牌。我们使用了此处描述的输入 (https://quarkus.io/blog/stylish-api/)。然而,出于某种原因,样式在本地工作(当在开发模式下启动 Quarkus 时)但在容器技术中不 运行 它(我们尝试了 OpenShift 和 Docker 图像。没有 css应用后,没有更改徽标。不适用于登录页面,也不适用于生成的 swagger 页面。 是否有一些设置/我们需要额外做的事情才能让它工作?

在 application.properties

中设置了以下属性
quarkus.swagger-ui.title=Title
quarkus.swagger-ui.filter=true
quarkus.swagger-ui.enable=true
quarkus.swagger-ui.always-include=true

我怀疑 none 的额外资源(在 META-INF 中)在构建容器镜像时被 Quarkus 获取。ui

结构:

\resources
  \META-INF
   application.properties
     beans.xml
     \branding
        logo.png
        style.css
     \resources
        favicon.ico
        index.html

我们可以看到/swagger-ui/style.css是不一样的。 运行 在开发中,build 进程将 style.css 从品牌目录复制到 /swagger-ui。这确实(显然)不会在 bui 加载图像时发生。

/swagger-ui/ 文件夹位于 runner jar 中的 META_INF 下。它包含错误的css(原来的那个)。 运行 开发模式下的 quarkus 显然确实从不同的位置(可能是品牌位置并替换了原来的位置)提供此文件夹。

这显然是 maven build 中的一些东西。

默认情况下,Swagger UI 仅在 Quarkus 以开发或测试模式启动时可用。

如果您也想让它在生产中可用,您可以在 application.properties 中包含以下配置:

quarkus.swagger-ui.always-include=true

https://quarkus.io/guides/openapi-swaggerui#use-swagger-ui-for-development

quarkus-maven-plugin 需要一个额外的目标(准备),以便在正确的位置包含 css。

            <plugin>
                <groupId>io.quarkus</groupId>
                <artifactId>quarkus-maven-plugin</artifactId>
                <version>${quarkus-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare</goal>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

在此之后应用了样式。