首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React App不会使用Docker-Compose刷新更改

基础概念

React App 是一个基于 React 框架构建的前端应用程序。React 是一个用于构建用户界面的 JavaScript 库。

Docker-Compose 是一个工具,用于定义和运行多容器 Docker 应用程序。通过一个 docker-compose.yml 文件,你可以配置多个服务(如 Web 服务器、数据库等),并定义它们之间的依赖关系。

相关优势

  • React App: 使用 React 可以快速构建复杂的用户界面,且组件化的方式使得代码更易于维护和扩展。
  • Docker-Compose: 提供了一种方便的方式来管理多个 Docker 容器,简化了容器的部署和扩展过程。

类型与应用场景

  • React App: 适用于构建单页应用程序(SPA),如网站、Web 应用等。
  • Docker-Compose: 适用于需要多个服务协同工作的应用,如 Web 应用与数据库的组合。

问题描述

React App 在使用 Docker-Compose 运行时,不会自动刷新更改。

原因

  1. 文件监听问题: Docker 容器内的文件系统可能没有正确设置监听,导致无法检测到本地文件的更改。
  2. 热重载配置问题: 如果使用了热重载工具(如 react-hot-loaderwebpack-dev-server),可能需要额外配置才能在 Docker 环境中正常工作。

解决方法

方法一:使用 Docker 的卷挂载

确保在 docker-compose.yml 文件中正确挂载了本地目录到容器内,以便容器能够监听到本地文件的更改。

代码语言:txt
复制
version: '3'
services:
  web:
    build: .
    volumes:
      - .:/app
      - /app/node_modules
    ports:
      - "3000:3000"

方法二:配置热重载

如果你使用了 webpack-dev-server,可以在 docker-compose.yml 中配置环境变量来启用热重载。

代码语言:txt
复制
version: '3'
services:
  web:
    build: .
    volumes:
      - .:/app
      - /app/node_modules
    ports:
      - "3000:3000"
    environment:
      - CHOKIDAR_USEPOLLING=true

方法三:使用 nodemon

nodemon 是一个工具,可以在检测到文件更改时自动重启应用。你可以在 Dockerfile 中安装并使用它。

代码语言:txt
复制
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm install -g nodemon
CMD ["nodemon", "npm", "start"]

然后在 docker-compose.yml 中使用这个 Dockerfile 构建的镜像。

代码语言:txt
复制
version: '3'
services:
  web:
    build: .
    volumes:
      - .:/app
      - /app/node_modules
    ports:
      - "3000:3000"

参考链接

通过以上方法,你应该能够解决 React App 在 Docker-Compose 环境下不会自动刷新更改的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React 使用 Proxy 代理(create-react-app

在create-react-app 中配置proxy代理 proxy,默认为NULL,类型为URL,一个为了发送http请求的代理 在平时开发时,尤其前后端分离时,需要假数据来进行模拟请求,这个时候就需要...proxy代理来处理 create-react-app < 2.0 package.json 中配置 "proxy":{ "/api/**":{ "target":"https://easymock.spiritling.pub.../", "changeOrigin": true } } create-react-app > 2.0 package.json 中配置(不推荐) "proxy": "https:/.../easymock.spiritling.pub/", 配置文件 /src/setupProxy.js (推荐) 将 create-react-app 解包后,可以在 config 文件夹下找到配置 在...; 游览器中请求为 https://example.com/api/v1/login 则经过代理后可以转为 https://easymock.spiritling.pub/login create-react-app

12.3K42
  • 使用 Meteor 和 React 开发 Web App

    文中讨论了Meteor与React开发Web App的优势所在,以及Meteor在现代Web开发中扮演的角色。...例如使用 FlowRouter 作为 Dispatcher,MiniMongo 作为 Store。...这样可以为 React 带来很好的数据和逻辑状态的管理;反过来,React 也可以为 Meteor 带来前端模块化,单向数据流模式,使代码更少且更好维护;另外 React 的 Virtual Dom 机制也为会...上图就是一个典型的 React Meteor App。个人感觉 Flux 更多是面向 Chat Based App,所以没有涉及到 routing。...对于 View,如图中可以使用一个父组件来监听数据的变化,子组件负责界面渲染和互动。另外一个方案是使用高阶组件 HOC 来包裹 UI 组件。高阶组件负责数据查询,子组件负责渲染等。

    1.2K40

    在create-react-app使用sass

    而较新的语法叫做“SCSS”,使用和CSS一样的块语法,即使用大括号将不同的规则分开,使用分号将具体的样式分开。通常情况下,这两套语法通过.sass和.scss两个文件扩展名区分开。...不管你是刚使用Reactjs或者是Reactjs的老司机,你们一定都听说过create-react-app这个脚手架,而从create-react-app的官方文档中,我们可以看到他们暂时还不支持直接导入...由于src/app.js仍然 improt src/App.css,所以样式同样成为您的应用程序的一部分。您现在可以编辑src/App.scss,同时会生成相应的src/App.css。...$ npm install npm-run-all --save-dev # or $ yarn add npm-run-all --dev 最后,在不使用ejec命令的情况下,更改create-react-app...的webpack配置,我们使用react-app-rewired来处理,安装方式如下: $ npm install react-app-rewired --save-dev 在完成这些步骤之后,我们修改

    2.9K20

    使用 React 和 NodeJS 创建一个全栈项目

    前言 我们都知道 React 非常优秀并且非常出色,我们可以使用 create-react-app 快速搭建一个前端应用。...创建项目目录 首先我们用命令行创建一个 my-app 的目录,并且进入到 my-app $ mkdir my-app $ cd my-app 初始化 React 程序 然后使用 create-react-app...创建一个 React 程序,这部分是客户端的代码, 所以命名为 client $ npx create-react-app client 使用 NodeJS 来实现我们的 API 创建 API 目录...方案二 create-react-app 支持接口代理设置 开发环境 在 client/package.json 设置 proxy:localhost:3000 然后在 jsx 中就可以使用相对路径请求了...本地我使用docker-compose 使用以下 docker-compose.yml web: image: nginx volumes: - .

    3.1K40

    react-native-easy-app 详解与使用之(二) fetch

    status 默认情况下为Http请求的status code,可由开发者制定,返回自定义的业务逻辑请求状态码 通过上面的示例, react-native-easy-app 的 XHttp 可以像使用...我们来看看 react-native-easy-app 的 XHttp 能满足我们哪些需求: 注:上面三个示例的请求方式各有所长,下文发送请求示例的地方我都选择使用请求 示例 3 的方式举例。...开发中,减少不必要的baseUrl的重复使用(程序通过判断传入的url是否是完整按需拼接BaseUrl),使用方法如下: import { XHttpConfig, XHttp } from 'react-native-easy-app...**** 可能有同学觉得react-native-easy-app封装XHttp与XHttpConfig的方法与参数太多了,根本没办法记住,框架虽好却不便于使用,这个目前可能需要大家参考示例项目来写了(...详解与使用之(三) View,Text,Image,Flatlist 想进一步了解,请移步至 npm 或github查看 react-native-easy-app,有源码及使用示例,待大家一探究竟,

    2.6K10

    react-native-easy-app 详解与使用之(一) AsyncStorage

    react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库(支持 IOS & Android),特别是在从0到1的项目搭建初期,至少可以为开发者减少...react-native-easy-app 主要做了这些工作: 1. 对AsyncStorage进行封装,开发者只需几行代码即可实现一个持久化数据管理器。 2....我们来看下通过 react-native-easy-app 库的XStorage,我们可以怎样访问AsyncStorage: 1、核心代码实现 import { XStorage } from 'react-native-easy-app...开发者通过 react-native-easy-app 只需定义一个全局可导出的 RNStorage对象(命名随意,并定义好App所需的各属性字段),然后在App启动的时候通过XStorage初始化一次...react-native-easy-app 详解与使用之(二) fetch 想进一步了解,请移步至 npm 或github查看 react-native-easy-app,有源码及使用示例,待大家一探究竟

    1.7K10

    从零开始使用create-react-app + react + typescript 完成一个网站

    我花了三天时间,用 create-react-app + react + typescript 重构这个网站,与网站效果不同的是,我没有加入任何的动画,并且我添加了中英文切换以及回到顶部的效果。...渲染列表通常都是使用 map 方法。...事件代理,我们可以看到我们是通过获取原生事件对象 nativeEvent 拿到类名,判断元素是否含有 tab-item 类名,从而确定点击的是子元素,然后调用 this.setState 更改当前的索引项...首先是第一个组件 TopButtonComponent ,我们主要做了2个工作,第一个工作就是使用 React.forwardRef API 来将 ref 属性进行转发,或者说是将 ref 属性用于通信...app组件的实现 实际上该组件就是将所有封装的公共组件的一个拼凑。

    1.7K20

    我发现人越到中年越喜欢极简风,用docker部署了一个极简导航页 - 熊猫不是猫QAQ

    多番找寻下发现了这样一款极简,且功能足够你使用的项目——home-page导航页。...功能展示 主页很简洁,但是该有的信息都有,NAS的CPU以及内存使用信息,博客跳转链接,日期时间,双标题自定义以及一言和夜间模式都有。.../services.json:/app/services.json ports: - 3010:3000 #端口 随后我们再创建一个services.json文件,内容自行根据情况更改...如需更改背景图,可以加一个映射目录/app,在public中替换 bg.png 文件,然后修改 src/index.css 中最下面的 .custom-bg 的配置。...图片 目录 最后通过ssh工具连接群晖,获取管理员命令之后cd到home-page目录输入docker-compose up -d启动容器。

    65920

    react-native-easy-app 详解与使用之(四)屏幕适配

    react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库(支持 IOS & Android),特别是在从0到1的项目搭建初期,至少可以为开发者减少...react-native-easy-app 主要做了这些工作: 1. 对AsyncStorage进行封装,开发者只需几行代码即可实现一个持久化数据管理器。 2....至于UI的尺寸属性,在React Native源代码中就可以找到(目前以白名单的形式定义)。这样,在使用以上X系列组件的时候不需要做任何特别处理,即可自动实现多屏幕适配。...系列组件都做了屏幕适配但一些特别情况下,可能不需要作适配怎么办,比如说外层容器组件(有的时候会设置一个定值),这时候有两种办法: 改用系统原生组件 设置X系列组件属性 raw = {true},设置了此属性,当前UI尺寸就不会做任何缩放...所以当大家需要对app的用UI做多屏适配的情况下,尽可能多的使用X系列组件就行了(记得设置参考屏幕哦) 想进一步了解,请移步至 npm 或github查看 react-native-easy-app

    1.8K10

    Docker 入门到实战教程(十三)Docker Compose

    使用命令 创建并启动容器 docker-compose up 创建并后台启动容器 docker-compose up -d 查看当前compose进程 docker-compose ps 启动容器 docker-compose...该environment键设置了 FLASK_ENV环境变量,该变量指示flask run要在开发模式下运行并在更改时重新加载代码。此模式仅应在开发中使用。...file 再次打开浏览器输入: http://ip:5000/ Hello World再次出现,然后刷新以查看计数增量 ? file 五....更新应用程序测试 因为现在应用程序代码是使用卷安装到容器中的,所以您可以对其代码进行更改并立即查看更改,而无需重建映像。 更改问候语app.py并保存。例如,将Hello World!...消息更改为Hello from Dong!: ? file 再次打开浏览器输入: http://ip:5000/ 在浏览器中刷新应用。问候语应更新,并且计数器应仍在增加。 ?

    2.5K21

    React Router 使用 Url 传参后改变页面参数不刷新的解决方法

    问题 今天在写页面的时候发现一个问题,就是在 React Router 中使用了 Url 传参的功能,像这样: export class MainRouter extends React.Component...来获取 url 参数的值,但是我发现如果你在这个 url 下只将 url 中的参数部分改变,比如 channelId 从 1 变成 2 的时候,页面并不会重新渲染。...解决办法 查阅资料后发现这样的根本原因是 props 的改变并不会引起组件的重新渲染,只有 state 的变化才会引起组件的重新渲染,而 url 参数属于 props,故改变 url 参数并不会引起组件的重新渲染...后来发现React的组件中有一个可复写的方法 componentWillReceiveProps(nextProps) { ... } 这个方法可以在 React 组件中被复写,这个方法将会在 props...改变的时候被调用,所以你可以使用这个方法将 nextProps 获取到,并且在这个方法里面修改 state 的内容,这样就可以让组件重新被渲染。

    4.1K30

    剖析Web技术栈(四)

    刷新你用浏览器访问的localhost页面,容器应该输出如下内容: $ docker-compose logs -f nginx Attaching to service_nginx_1 nginx_1...如果你现在多次访问该页面,应该会注意到上游地址的更改,例如: $ docker-compose logs -f nginx Attaching to service_nginx_1 nginx_1...运行docker compose down并将nginx配置更改为: upstream app { server application1:8000 weight=3; server application2...如果多次刷新浏览器上的页面,你将看到如下内容: $ docker-compose logs -f nginx Attaching to service_nginx_1 nginx_1 |...使用Web服务器允许我们扩展基础设施,只需在其后面添加新实例,而不会中断服务。HTTP并发服务器运行框架的多个实例,框架本身使HTTP抽象化,将其映射到我们的高级语言。

    75720
    领券