如何在 docker 容器中运行 npm 命令?

2023-12-27

我正在尝试在 docker 容器内以开发模式运行角度应用程序,但是当我使用 docker-compose build 运行它时,它可以正常工作,但是当我尝试放置容器时,我收到以下错误:



ERROR: for sypgod  Cannot start service sypgod: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"npm\": executable file not found in $PATH

真正的问题是它无法识别命令 npmserve,但为什么?

设置如下:

Docker 容器(Nginx 反向代理 -> Angular 在端口 4000 中运行)

我知道有更好的部署方法,但目前出于某些个人原因我需要此设置

Dockerfile:


FROM node:10.9 


COPY package.json package-lock.json ./

RUN npm ci && mkdir /angular && mv ./node_modules ./angular

WORKDIR /angular

RUN npm install -g @angular/cli 

COPY . . 


FROM nginx:alpine
COPY toborFront.conf /etc/nginx/conf.d/
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]
CMD ["npm", "serve", "--port 4000"]

Nginx服务器站点

server{
    listen 80;
    server_name sypgod;


    location / {
            proxy_read_timeout 5m;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://localhost:4000/;


    }

}


Docker Compose 文件(我遇到问题的重要部分)

 sypgod: # The name of the service
        container_name: sypgod  # Container name
        build: 
            context: ../angular
            dockerfile: Dockerfile # Location of our Dockerfile



最终运行的图像是这样的:

FROM nginx:alpine
COPY toborFront.conf /etc/nginx/conf.d/
EXPOSE 8080
CMD ["npm", "serve", "--port 4000"]

第一阶段没有任何效果(你可以COPY --from=...文件),如果有多个CMDs,只有最后一个有效果。因为你正在简单地运行它nginx图片,没有npm命令,导致您看到的错误。

我建议在主机上使用 Node 作为实时开发环境。当您构建并测试了应用程序并希望部署它时,请在合适的情况下使用 Docker。在您的 Dockerfile 中,运行ng build在将应用程序编译为静态文件的第一阶段,添加COPY --from=...在第二阶段将构建的应用程序放入Nginx镜像中,并删除所有CMD lines (nginx有适当的默认值CMD)。 @VikramJakhar 的answer https://stackoverflow.com/a/60074429/10008173有一个更完整的 Dockerfile 显示了这一点。

看起来您可能正在尝试在 Docker 中运行 Nginx 和 Angular 开发服务器。如果这是您的目标,您需要在两个单独的容器中运行它们。去做这个:

  • 将此 Dockerfile 分成两部分。放在CMD ["npm", "serve"]第一个(仅限 Angular)Dockerfile 末尾的行。
  • 添加第二个块docker-compose.yml文件来运行第二个容器。后端npm serve容器不需要发布ports:.
  • 将 Nginx 配置中后端服务器的主机名更改为localhost另一个容器的 Docker Compose 名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 docker 容器中运行 npm 命令? 的相关文章

  • 拖动元素时是否禁用 mousemove 事件?

    我试图通过在拖动元素时观察文档上的 mousemove 事件来移动元素 使用 html5 拖放 我在文档的父元素上添加了一个 mousemove 侦听器 每当我移动鼠标时都会触发该监听器 但是一旦我开始拖动另一个子元素 我就不再看到 mou
  • 如何在Angular2中正确使用依赖注入(DI)?

    我一直在试图弄清楚 DI 依赖注入在 Angular2 中是如何工作的 每次当我尝试将服务 或类注入我的组件时 我都会遇到很多问题 从不同的谷歌搜索文章中 我需要使用providers 在组件配置中 或者有时我需要使用 Inject 在我的
  • 如何让Angular2绑定innerHTML中的组件

    我想创建一个组件myApp它将把控制器上的属性中的 HTML 嵌入到其模板中 但是 其中一些 HTML 可能包含其他组件选择器 import InfoComponent from Component selector myApp templ
  • 有人在node/socket.io 中成功实现了动态命名空间吗?

    含义 用户对应用程序进行身份验证 gt 应用程序设置socket io连接的命名空间 http www socketioserver com NAMESPACE 并且节点服务器相应地响应无需针对特定名称空间进行硬编码 到那个特定的命名空间
  • 如何使用 Angular 2 修改 ng-bootstrap 轮播的 CSS

    最近 我尝试修改 ng bootstrap carousel 组件中的 carousel item 类 但是 我发现我需要在元数据中添加 encapsulation ViewEncapsulation None 使用此解决方案还会更改其他轮
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • 如何在 Node-Red 中的 oneditsave 之后在下拉列表中显示先前选择的值(动态)?

    我有一个自定义节点 其中包含两个彼此独立的下拉菜单 因此 第二个下拉列表值会根据第一个下拉列表中选择的值发生变化 我现在尝试的是 用户拖动我的自定义节点 iotinput 从两个拖放中选择值 按下并单击 完成 他再次拖动另一个自定义节点 i
  • aspnetcore 出现角度错误 NodeInitationException:节点调用在 60000 毫秒后超时

    我在用着yo generator aspnetcore spa一旦我运行应用程序 我就遇到了问题 处理请求时发生未处理的异常 NodeIncationException 节点调用在 60000 毫秒后超时 您可以通过设置更改超时持续时间 N
  • 如何在 Google Translate Node.js 代码中设置 API KEY

    我正在尝试创建一个使用 Google Translate API 的 Node js 代码 我从以下代码中得到了谷歌文档 https cloud google com translate docs translating text 但是当我
  • NPM lockfiles/shrinkwrap 获取附加到“已解析”URL 上的随机“dl”参数

    我们公司使用 Artifactory 存储库来存储内部发布的包并作为 NPM 注册表的代理 有时 resolvedlockfiles shrinkwrap 文件中的字段与预期一致 包含我们内部存储库的 URL 但有时它们会显示为类似这样的内
  • D3、TS 和 Angular 2

    我正在尝试将 D3 v4 与 Angular 2 Typescript 一起使用 我目前正在研究 D3 v4 我能够遵循 stackoverflow 中类似问题的一些答案 但没有成功 我已经导入了大部分 D3 库及其类型 我使用的是 TS
  • 在指令中动态添加 *ngIf

    如何动态地将 ngIf 添加到用属性指令修饰的元素 为了一个简单的实验 我尝试了这个 Directive selector lhUserHasRights export class UserHasRightsDirective implem
  • 在哪里存储角度中的 JWT 令牌?

    我正在使用 Django 和 Angular 构建一个应用程序 目前 我正在本地存储上存储后端发出的 JWT 但是 我担心 XSS 攻击 我应该使用仅 HTTP 的 cookie 来存储令牌吗 我还考虑将令牌存储在我的身份验证服务类中的变量
  • nodejs (libuv) 事件循环是否在一个阶段(队列)中执行所有回调,然后再进入下一阶段或以循环方式运行?

    我正在研究 Node js 中 libuv 提供的事件循环 我遇到了关注 Deepal Jayasekara 的博客 https blog insiderattack net event loop and the big picture n
  • 我可以更改 Windows Docker 容器中的日期和时间吗?

    我正在尝试测试一个在特定时间段内导出文件的软件 我想到使用 docker 容器来提供所需的时间而不是使用系统时间 问题是我缺乏更改容器时间的权限 并出现以下错误消息 PS C usr src app gt Set Date Date Get
  • Docker Compose 无法连接到数据库

    我使用 Nestjs 作为后端 并使用 typeorm 作为 ORM 我尝试在 docker compose 文件中定义我的数据库和应用程序 如果我将数据库作为容器运行 并从本地计算机运行应用程序 那么它运行良好 我的程序连接并创建表等 但
  • Angular 模板验证表单

    我正在研究表单验证 我正在使用模板驱动的验证表单 其编码如下 现在工作正常 但是当我尝试添加时 username ngModel and password ngModel 在创建验证类的输入中 它向我显示一个错误 也请找到该错误 div c
  • 如何从 Docker Hub 删除存储库

    如何从 Docker Hub 完全删除存储库 Docker 正在快速发展 他们的网站也是如此 这是从 docker hub Web 界面删除存储库的最新方法 首先 确保您已登录 hub docker com Simple 单击顶部的存储库链
  • 如何在 Angular 4 中翻译 mat-paginator?

    你知道如何在 Angular 中翻译 每页项目 吗mat paginator标签 这mat paginator是材料设计中的一个元素 您可以使用MatPaginatorIntl为了这 威尔 豪厄尔制作 https github com an

随机推荐

  • 检测 Windows Phone 的方向

    我使用 JavaScript 事件 onorientationchange 和参数 window orientation 来检测网站上的方向变化和方向值 这适用于 iPhone 和 Android 但是 Windows Phone 不会触发
  • 如何通过单击菜单中的 Li 将 HTML 页面加载到 DIV 中?

    我遇到了一个非常烦人的问题 所以 我的计划是制作一个包含不同含量锂的 UL 菜单 当我单击它们中的每一个时 我想将一个新的 HTML 页面加载到我的 Content DIV 中 我做了很多研究 发现了 Ajax 和 Jquery 我尝试了很
  • 重置jquery分页插件中的总页数

    我正在使用 TwbsPagination 插件在我的应用程序中显示分页 当我们在初始化时设置页面大小时 它工作正常 但是 根据搜索结果 我想重置总页数 当我尝试使用 pagination twbsPagination totalPages
  • 这是在 Java 中比较两个文档的最佳方法,没有任何复杂性和精确的结果

    我有两个 word 文档 我想在 java 中比较它们 我尝试使用 md5 哈希码 HashCode newFile Files asByteSource newFileInput hash Hashing md5 HashCode old
  • 如何使用 javascript 设置文本框的值

    我试图从查询字符串中获取一个值并将该值分配到文本框中 我能够从查询字符串中获取值 但无法将其分配给文本框 document getElementByName Contact0Email Value email 尝试了上面的代码 但似乎不起作
  • 使用 JAXB 解组期间覆盖声明的编码

    我有一个 XML 文件 其中设置了编码 但实际上文件是用 UTF 8 编码的 使用 JAXB 解组 XML 文件时是否可以覆盖 XML 文件中声明的编码 您可以从 a 中解组内容java io Reader为了提供实际的编码 Unmarsh
  • 在C中,是否保证数组起始地址小于其他元素的地址?

    换句话说 当做 index array x array 0 是否总是保证 根据 C 标准 array 0 地址顺序是有保证的 关系运算符的行为定义在C11 6 5 8p5 http port70 net nsz c c11 n1570 ht
  • 分页逻辑怎么写?

    任何人都可以提供一些想法 逻辑来为我正在处理的搜索页面编写分页逻辑吗 我掌握的信息是总页数对于该搜索 每页10条记录我还收到了上一页和下一页的页码 编写逻辑没问题 我需要做的就是提取该信息并填充 我还获取我所在页面的信息 我只能显示 10
  • 导入com.google.android.gms.gcm.GoogleCloudMessaging无法解析[重复]

    这个问题在这里已经有答案了 我正在尝试在 Android 应用程序中使用通知 我发现了很多 tuto 但都使用了已弃用的 com google android gcm pakage 我发现我必须使用 com google android g
  • Apache - 处理 TCP 连接,但不处理 HTTP 请求

    我有一个 GPS 单元 可以通过 TCP 连接发送数据 但我无法修改它发送的消息 因此它会以 HTTP 请求的形式到达我的服务器 它只能发送消息以预定义的格式 所以 我有以下问题 1 是否可以让 Apache 处理不以 HTTP 请求形式出
  • “Hello World”——TDD 方式?

    自从我接触 TDD 以来 我一直在思考这个问题 构建 Hello World 应用程序的最佳方法是什么 这将在控制台上打印 Hello World 使用测试驱动开发 我的测试会是什么样子 以及大约什么班 Request No 类似维基百科
  • Apache Flink(如何唯一标记作业)

    是否可以使用唯一的名称来标记作业 以便我可以在以后停止它们 我真的不想 grep 并保留作业 ID 简而言之 我想在部署过程中停止一项作业并部署新作业 您可以在启动作业时为其命名execute name String 打电话 例如 val
  • 如何清除 IE 的图标缓存?

    我为我的网站定义了一个最喜欢的图标 任何访问过该网站的浏览器after我添加的图标可以很好地显示favicon 但我自己的浏览器拒绝显示图标 我已经尝试了我能想到的链接的所有变体
  • Java大文件AES加密很慢

    我正在尝试使用 AES CBC 算法加密 512 Mb 文件 大约需要 7 秒 这太长了 如何减少加密时间并使其更快 我使用固定密钥并尝试使用 CipherOutStream 以及 cipher update 而不是 cipher dofi
  • 为什么 Haskell 中基于 [Char] 的输入比基于 [Char] 的输出慢得多?

    这是一个不使用的常识 Char 在 Haskell 中读取大量数据 一用ByteString来完成这项工作 对此通常的解释是Chars 很大并且列表增加了它们的开销 然而 这似乎不会对输出造成任何问题 例如下面的程序 main intera
  • git重置后未暂存的文件消失了--hard

    我尝试过git reset hard HEAD n from git reflog我丢失了当前未暂存文件的所有内容 未暂存的文件是最后一个git add我做到了 在那之前我尝试过git reset到最后git commit 我所有的文件都消
  • 反应 onClick 问题

    我是 React 新手 我正在尝试将 onClick 事件连接到图像 以查看已按下的对象但无法使其工作 我已经尝试了在该网站上找到的几个答案 但没有一个起作用 可能是因为 var createItem jsx React DOM var R
  • Mono for Android OnPause 事件在 Galaxy Nexus 上未触发

    我整理了我的第一个 Mono for Android 项目 目标 API 级别 8 最低 Android 2 2 并将其部署到运行 2 3 4 的 HTC Incredible 1 一切都很顺利 并且在我的主要活动中出现了断点OnCreat
  • 对话框 ui 中的复选框不可选中

    我正在尝试使用 jQuery UI 对话框解决 z index 问题 类似于问题无法选择或取消选择 jQuery UI 模态对话框中的复选框 https stackoverflow com questions 10542327 cant s
  • 如何在 docker 容器中运行 npm 命令?

    我正在尝试在 docker 容器内以开发模式运行角度应用程序 但是当我使用 docker compose build 运行它时 它可以正常工作 但是当我尝试放置容器时 我收到以下错误 ERROR for sypgod Cannot star