Quarkus Stylish 在容器镜像中不起作用 (Openshift / Docker)

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

提问人:Sjaak 提问时间:3/26/2021 最后编辑:Sjaak 更新时间:3/26/2021 访问量:375

问:

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

在 application.properties 中设置了以下属性

quarkus.swagger-ui.title=Title
quarkus.swagger-ui.filter=true
quarkus.swagger-ui.enable=true
quarkus.swagger-ui.always-include=true

我怀疑 Quarkus 在构建容器映像时没有获取任何额外的资源(在 META-INF 中)。

结构:

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

我们可以看到 /swagger-ui/style.css 是不同的。在 dev 中运行,构建过程会将 style.css 从品牌目录复制到 /swagger-ui。在构建映像时,这(显然)不会发生。

/swagger-ui/ 文件夹位于运行器 jar 的 META_INF 下。它包含错误的css(原始的)。在开发模式下运行 quarkus 确实会从不同的位置(可能是品牌位置并替换原始位置)提供此文件夹。

这显然是 maven 构建中的某个东西。

docker openshift openapi quarkus 时尚

评论

0赞 Edgar Domingues 3/26/2021
您如何构建 docker 映像?
0赞 Sjaak 3/26/2021
2 种方式:S2i (OpenShift) 或作为 docker 构建。
0赞 Sjaak 3/26/2021
它与图像的制作无关。这是运行器罐子没有在正确的位置放置样式表。
0赞 Sjaak 3/26/2021
看来我在做些什么..quarkus-maven-plugin 的 de config 中缺少 prepare

答:

1赞 Edgar Domingues 3/26/2021 #1

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

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

quarkus.swagger-ui.always-include=true

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

评论

0赞 Sjaak 3/26/2021
该变量设置为 true(否则我根本不会有 Swagger)。它是未应用的(并且在开发中)stylish
0赞 Sjaak 3/26/2021 #2

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>

在此之后,应用了样式。