Dockerfile OpenApi 生成器

Dockerfile OpenApi Generator

我试图避免在我的 docker 图像中导入各种依赖项(通过 npm 或 java),以便我可以生成一个 swagger 客户端。

我正在使用 openapitools/openapi-generator-cli but when I try and use it, the command generate isn't found. Here are the docs

这是我正在尝试做的事情:

FROM openapitools/openapi-generator-cli
RUN generate

结果:

Step 1/2 : FROM openapitools/openapi-generator-cli
 ---> 62d78bf45d59
Step 2/2 : RUN generate
 ---> Running in accaf10464d5
/bin/sh: 1: generate: not found

但是,这没有问题:

docker run openapitools/openapi-generator-cli generate

我所说的“有效”是指我从 cli 得到了积极的反馈,说我缺少所需的参数。

作为 Docker 这部分的新手,我对 FROM 应该如何工作的理解不正确吗?我想我遇到了错误,因为 FROM 实际上 运行 容器,因此 generator 不存在。

但让我感到困惑的是,我对 dotnet 进行了完全相同的处理,而且效果非常好。

FROM mcr.microsoft.com/dotnet/aspnet:6.0-bullseye-slim
RUN dotnet

结果:

Step 1/2 : FROM mcr.microsoft.com/dotnet/aspnet:6.0-bullseye-slim
 ---> 32aef79fd915
Step 2/2 : RUN dotnet
 ---> Running in 1e6c04d30a82

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

docker run openapitools/openapi-generator-cli generate

之所以有效,是因为它在容器

内等效于bash /usr/local/bin/docker-entrypoint.sh generate

因为从 Dockerfile 中 /usr/local/bin/docker-entrypoint.sh 被设置为 ENTRYPOINT,为您检查 github 存储库中的 docker-entrypoint.sh 并掌握当您通过生成,或者简单地做

FROM openapitools/openapi-generator-cli
RUN bash /usr/local/bin/docker-entrypoint.sh generate