无法使用 docker 容器运行 React 应用程序

2023-11-26

我有一个反应应用程序,它简单地显示 hello-world 消息,但我喜欢通过 docker-container 运行该应用程序,但遇到了这个问题。收到此消息后,进程停止运行而不运行应用程序..

ℹ 「wds」: Project is running at http://172.17.0.2/
ℹ 「wds」: webpack output is served from
ℹ 「wds」: Content not from webpack is served from /app/public
ℹ 「wds」: 404s will fallback to /
 Starting the development server...

不明白我应该做什么,因为我有一个非常小的应用程序,在 Dockerfile 中包含基本代码

FROM node:alpine
RUN mkdir /app
COPY . /app
WORKDIR /app
COPY package.json ./
RUN npm install
CMD ["npm", "start"]

我是否需要安装 webpack-dev-server,我尝试过,但收到版本错误,例如“手动添加的服务器”的版本低于已有服务器的版本。所以我重新安装了 webpack-dev-server。

我已经使用“create-react-app”创建了应用程序,所以我认为每个依赖项都是自动管理的。 有人知道吗,我该如何解决这个问题..提前致谢(顺便说一句..)

我用来构建的命令:docker build . -t lucki

运行镜像的命令:docker run -p 3000:3000 lucki

this is project stracture: enter image description here

after adding DEBUG=* in Dockerfile, I have response as: enter image description here


问题是如果不是交互式终端,开发模式将无法运行。

更改 docker 命令以包含交互式终端:

Add -it给你的docker run命令 (-i交互的,-t伪 TTY)例如docker run -it -p 3000:3000 your_container

规范故障排除

确保代码在没有 docker 的情况下运行

Does npm start在命令行上工作?

显示调试信息

Add DEBUG=*作为容器内的环境变量。DEBUG是一个环境变量,用于控制许多 Node 模块的日志记录。

In your Dockerfile, add

ENV DEBUG=*

或者在命令行中添加-e 'DEBUG=*'给你的docker命令。

这可能有助于发现不知何故被吞没的错误消息

直接运行节点

而不是跑步npm start,直接运行您的文件。 例如在你的Dockerfile,

CMD ["node", "index.js"]

尝试运行另一个 docker 容器

如果这是您的 docker 设置的问题,运行已知良好的容器可能会帮助您发现它。

docker run --rm -it node:alpine

改进

Your Dockerfile还可以稍微简化一下。

FROM node:alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
CMD ["npm", "start"]
  • mkdir不需要,因为WORKDIR自动创建目录。
  • package*.json也会复制package-lock.json
  • --production将跳过安装devDependencies
  • COPY命令最后将更好地利用缓存(您不必重新运行npm install除非你的依赖关系发生了变化)

您可能还想使用Tini。 Tini转发信号,意味着docker stop在交互式终端中按 control+c 实际上会立即停止节点进程。

如果您使用的是 Docker 1.13+,请添加--init到命令行来转发信号并收获进程。在旧版本上,请按照说明操作在自述文件中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 docker 容器运行 React 应用程序 的相关文章

随机推荐

  • 在 Angular 2 中重置模板驱动的表单(模型和验证)

    我们如何重置控件的验证状态模板驱动角度 2 的形式 我知道可以通过设置控件所绑定的模型值来重置控件 但是验证状态 原始 肮脏等 又如何呢 我尝试过这样的事情
  • 有没有办法在 C 中进行柯里化?

    假设我有一个指向函数的指针 stack push stack stk void el 我希望能够打电话curry stack push my stack 并返回一个只需要的函数void el 我想不出一种方法来做到这一点 因为 C 不允许运
  • 重定向时向 Zuul 添加标头

    我正在尝试使用Zuul将调用重定向到其他地方的下游系统 在重定向中 我需要添加一个包含必要数据的标头api接收重定向以进行处理 我似乎无法让下游系统检测到这些数据 附件是我的代码 我在用Zuul from Edgware SR3 Sprin
  • 杀死 Pthread 库中的线程

    I use pthread create thread1 attrs 如果发生某种情况需要杀死这个线程如何杀死它 首先存储线程id pthread create thr 然后稍后打电话 pthread cancel thr 但是 这不是推荐
  • C 中的“由于数据类型范围有限,比较始终为真”警告?

    我有以下代码 Point h define WIDTH 8 define HEIGHT 8 typedef struct Point char x char y Point Board c include
  • 给出 3 个点和一个绘图圆

    我想将点 0 1 1 0 和 0 1 提供给 python 并绘制经过它们的圆 是否存在一个Python模块可以做到这一点 我尝试过使用 matplotlib import matplotlib pyplot as plt plt plot
  • 无法从phonegap中的sd卡读取图像文件:android

    我是一个phonegap新手 我正在尝试使用 Android 中的 SD 卡读取图像文件 PhoneGap官方教程 问题是图像没有显示 而是在其位置出现一个问号 My Code var pictureSource var destinati
  • 使用指针作为容器迭代器是否违反标准

    安吉发表了评论 that a vector使用原始指针作为迭代器类型就可以了 这让我有点困惑 我开始研究它 发现需要vector迭代器只是它们 随机访问迭代器 明确指出指针符合以下条件 指向数组元素的指针满足所有要求 这是编译器提供迭代器的
  • UI-router,在服务中使用stateparams

    我有这样的状态 state admin category url category templateUrl views admin category html resolve category CategoryLoader function
  • ERR背后的实际信号是什么

    我在几个地方 包括SO 读到 e被认为是 糟糕的形式 并且在出现任何错误时退出脚本都是不可靠的 处理错误的更好方法似乎是使用trap 像这样 trap echo there was an error exit 1 ERR 我似乎无法在手册页
  • 转到 C 中的特定地址

    如何 JMP 到 C 中的特定地址 我想用 goto 0x10080000 这不起作用 还有其他方法可以更改程序计数器的地址吗 You can cast函数指针的地址 然后跳转到 void void 0x10008000 为了更清楚一点 t
  • MySQL 中的错误 1064 (42000)

    我正在尝试使用从 MS SQL Azure 数据库创建的数据库转储来填充新的 MySQL 空数据库 但出现以下错误 ERROR 1064 42000 at line 1 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本对应的手册
  • 在 ruby​​ 中运行系统命令并与之交互

    我需要在命令行上运行一个命令来请求用户响应 如果有帮助的话 命令是 gpg recipient Some Name encrypt some file txt 当您运行此命令时 它会发出警告 然后询问 还用这个键吗 是 否 回答 y 让其正
  • 计算预处理器宏

    我有这个宏代码 它允许我定义C枚举和使用一个构造的字符串形式的枚举名称列表 它使我不必重复枚举器名称 并且可能会为大型列表引入错误 define ENUM DEFINITIONS F F 0 Item1 F 5 Item2 F 15 Ite
  • [OVERFLOW:HIDDEN] 的替代方案

    我目前正在我们的系统中工作 我发现很难在 HTML 中使用溢出 请看看我的小提琴 并尝试把 overflow hidden in nav holder background 333333 padding left 30px padding
  • 如何模拟 RxJs 6 计时器?

    我们最近从 Angular 5 更新到 Angular 6 并随之更新为 RxJs 6 作为迁移的一部分 计时器的使用已更改为 Observable timer to timer 在我们的测试中有很多地方我们使用以下模式模拟计时器可观察值
  • 放大用户位置 - Swift

    我不知道如何让地图从 viewDidLoad 放大用户位置 我尝试设置一个区域 但没有成功 这是我的代码 有什么提示吗 IBOutlet 弱变量mapView MKMapView var MapViewLocationManager CLL
  • pycharm中的Tensorflow.keras.layers“未解析的参考”

    我刚刚安装了tensorflow 并正在尝试让基础知识发挥作用 但是 导入语句以红色下划线显示 并显示消息 未解析的引用 层 不过代码确实运行正确 我已经尝试过这个问题中的一些建议 PyCharm 显示有效代码的未解析引用错误 然而 这个问
  • 在 Spritekit 中用两种颜色绘制矩形/圆形和三角形。 。 。

    我可以使用简单的 SKSpriteNode 绘制矩形 但我无法在其中绘制其他类型的图画 例如具有两种分色的三角形 圆形等 有人建议使用 CGPath 但我是新手 不知道画这种复杂的东西 请任何人都可以说明在 SPRITEKIT 中使用多色来
  • 无法使用 docker 容器运行 React 应用程序

    我有一个反应应用程序 它简单地显示 hello world 消息 但我喜欢通过 docker container 运行该应用程序 但遇到了这个问题 收到此消息后 进程停止运行而不运行应用程序 wds Project is running a