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

运行中的Docker容器是否可能不包含NodeJS应用程序的编译文件?

  •  -1
  • TwittorDrive  · 技术社区  · 8 月前

    我有一个由不同微服务组成的Node.js应用程序。每个微服务都是一个Node.js或NestJS应用程序 .js .ts 文件夹。每个这样的应用程序在应用程序的文件夹中都有自己的Dockerfile。这些文件通常包含构建步骤的类似行:

    dockerfile
    WORKDIR /app
    RUN npm run build && npm prune --production --force && rm -rf src
    

    例如,此代码属于“网关服务器”服务。如果我在正在运行的容器中启动一个终端shell,我可以在“app”文件夹中看到编译后的文件(只有.js和.js.map文件)。其他服务也是如此。 但是,我们的应用程序有一个标记为“sps”的微服务。“sps”应用程序的Dockerfile不包含任何“构建”指令。当我在容器中运行shell时,“app”文件夹由原始源文件组成- .ts .js 文件(原始源代码)。

    我有几个问题:

    Node.js应用程序容器怎么可能不包含编译文件?我尝试使用目录搜索和 find 命令,但什么也没找到。

    编译后的文件可能位于某个外部卷中,还是内置在RAM中?如果是这样,我如何找到他们的位置 Docker inspect <containerID> 帮助我?

    为什么有人会在没有编译文件的情况下使用这样的设置?

    1 回复  |  直到 8 月前
        1
  •  0
  •   Andrey    8 月前

    如果有类似ts节点的东西,您将看不到任何编译的文件,因为它会动态编译+运行它们,而不会发送到磁盘。查看package.json,了解应用程序是如何启动的。