代码之家  ›  专栏  ›  技术社区  ›  mwilson

Dockerfile OpenApi生成器

  •  0
  • mwilson  · 技术社区  · 2 年前

    我试图避免在docker映像中导入所有类型的依赖项(通过npm或java),以便生成一个招摇过市的客户端。

    我在用 openapitools/openapi-generator-cli 但当我尝试使用它时,命令 generate 找不到。这里是 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 你应该在这里工作吗?我想我犯了错误,因为 从…起 实际上并不运行容器,因此 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.
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   Def Soudani    2 年前

    docker run openapitools/openapi-generator-cli generate

    有效是因为它是等效的 bash /usr/local/bin/docker-entrypoint.sh generate 在容器内

    因为从Dockerfile /usr/local/bin/docker-entrypoint.sh 被设定为 ENTRYPOINT ,请查收 docker-entrypoint.sh 从github回购协议中,了解传递生成或简单执行时发生的事情的逻辑

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