gpt4 book ai didi

docker - 让webpack-dev-server在docker下工作

转载 作者:行者123 更新时间:2023-12-02 19:46:58 25 4
gpt4 key购买 nike

我正在尝试在docker中运行webpack-dev-server,以便可以热重载我的React组件。由于某些原因,webpack-dev-server不会通过docker热重新加载。根据日志,对react文件的更改不会重新编译代码。但是我的网络浏览器没有收到告诉它刷新的信号。如果我手动刷新浏览器,虽然它确实反射(reflect)了代码更改。
有趣的是,当我在主机上本地运行该配置时,该配置实际上可以工作,因此我怀疑这是套接字连接问题。
webpack-dev-server如何让Web浏览器知道应该重新加载?
我还注意到webpack-dev-server打开了端口8080。这的目的是什么?是否将(http:// localhost:8080 /)地址提供给我的Web浏览器,而不是通常的Web服务器地址(http:// localhost:3000 /)?还是将8080端口用于其他用途?
这是我的配置文件供引用:

dev_server:
https: false
host: localhost
port: 8080
public: localhost:8080
hmr: false
# Inline should be set to true if using HMR
inline: true
overlay: true
compress: true
disable_host_check: true
use_local_ip: false
quiet: false
pretty: false
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
ignored: '**/node_modules/**'

最佳答案

好的,我发现在我的特定配置中有三件事是错误的。第一,
需要加载“web-dev-server”才能进行热加载。所以我的Procfile.dev-hmr如下所示:

web: bundle exec rails s -b 0.0.0.0 -p 3000  
webpack-dev-server: bin/webpack-dev-server
我像下面这样加载该文件:
foreman start -f Procfile.dev-hmr
其次,webpack-dev-server在端口3035上运行,因此您必须在docker上打开该端口。我以“port”命令为例,以以下docker-compose文件为例:
version: '3'
services:
db:
image: postgres:9.3
ports:
- "5432:5432"
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: foreman start -f Procfile.dev-hmr
volumes:
- .:/myapp
expose:
- 3000
- 3035
ports:
- "3000:3000"
- "3035:3035"
depends_on:
- db
user: "1000:1000"
environment:
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
  • 您必须将webpacker的服务器主机设置为“0.0.0.0”(我想是因为docker使用了一些奇怪的ip地址)。我通过设置环境变量来做到这一点:WEBPACKER_DEV_SERVER_HOST = 0.0.0.0

  • 我能够在上面的docker-compose.yml脚本中执行此操作。

    关于docker - 让webpack-dev-server在docker下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63065448/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com