Docker React App:404s 将回退到 /

Posted

技术标签:

【中文标题】Docker React App:404s 将回退到 /【英文标题】:Docker React App: 404s will fallback to / 【发布时间】:2020-08-13 19:37:10 【问题描述】:

我正在使用 npm 构建一个 React javascript 应用程序,并希望将其部署在 docker 上。 当我在本地运行应用程序时:

npm start

一切正常。 但是当我构建一个 Docker 映像并对其进行测试时,我得到了以下错误:

$ docker run react-app

> keycloak-react@0.1.0 start /
> react-scripts start

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

Dockerfile 看起来像:

FROM node:latest
COPY ./keycloak-react .
RUN npm install typescript
RUN npm install node-sass
RUN npm install sass
RUN npm install fibers
RUN npm install
EXPOSE 3000
CMD [ "npm", "start", "run", "--host", "0.0.0.0"]

我不知道该怎么办?

【问题讨论】:

有什么问题? npm start run 是什么?不应该是npm run start 还是简单的npm start 用 npm start 我有同样的问题 有什么问题?? 404s 会 .... 仅使用 npm start 时会出现同样的问题 【参考方案1】:

我刚刚修复了,让我们在 docker-compose 中添加 stdin_open: true 来修复它。

链接信息:https://github.com/facebook/create-react-app/issues/8688

【讨论】:

好的,谢谢。那我到底应该怎么做呢? 我的意思是,我应该在我的 Dockerfile 中更改什么。【参考方案2】:

我在docker run 命令中添加了-i -t 标志,对我来说效果很好

-i 使容器的标准输入保持打开状态

-t 分配一个 pseudo-tty(用于与 shell 的交互会话)

我的命令是:

docker container run -i -t image_name

我认为

docker run -i -t image_name

也可以(不知道两者之间的真正区别)

【讨论】:

【参考方案3】:

您有 3 个选项:

    stdin_open: true 添加到您的 docker-compose 命令中 添加一个CI=true 作为环境变量 将您的反应脚本降级到 3.4.0

我在这个非常烦人的错误上卡了几个小时,但试图在我的 CircleCI 环境中使用它......但这是一个 Docker 问题! (你可能会想),是的,但 CircleCI 也确实使用 Docker ...... 无论如何,我发现自己在上面提到的@dwthiemn 的同一个Issue URL 中,结果react-scripts 3.4.1 确实会查找这些特定值,否则开发服务器将关闭。

但是如果你选择降级你的 react-script 版本,你应该验证是否有任何依赖冲突因此

【讨论】:

以上是关于Docker React App:404s 将回退到 /的主要内容,如果未能解决你的问题,请参考以下文章

Web 服务器 getFromFile 上的 akka-http 在刷新时导致 404s

react-navigation从引导页跳转到主页,物理回退键,不能再返回到引导页,代码怎么写?

当 docker 容器内的数据发生变化时,Create-react-app 服务器不会重新编译

docker入门之部署前端项目,以create-react-app为例

React 应用程序退出 docker 容器,退出代码为 0

用wget检查404s