【问题标题】:Can't get webpack dev server connected to ddev host from web container无法让 webpack 开发服务器从 web 容器连接到 ddev 主机
【发布时间】:2021-12-20 13:44:24
【问题描述】:

我尝试在我的 ddev web 容器上运行 webpack 开发服务器并将其连接到我的主机系统,这样我就可以在我的 web 浏览器中访问该 URL。但我只收到一个 502:无响应/损坏的 ddev 后端站点。

我想要什么:

  • ddev start启动我的ddev容器
  • 如果我需要 webpack 开发服务器,我会通过 ddev ssh 连接到 webcontainer 并启动 webpack 服务器 (npm run serve)。
  • 最后我想在浏览器中访问 url (https://project.ddev.site.de:8081)。

我使用哪些版本:

  • nodejs => 16
  • webpack-dev-server => 4.3.1
  • ddev => 1.18

我做了什么:

创建了一个新的 docker-compose 文件:

version: "3.6"
services:
  web:
    expose:
      - 8080
    environment:
      - HTTP_EXPOSE=${DDEV_ROUTER_HTTP_PORT}:80,${DDEV_MAILHOG_PORT}:8025,8080:8080
      - HTTPS_EXPOSE=${DDEV_ROUTER_HTTPS_PORT}:80,${DDEV_MAILHOG_HTTPS_PORT}:8025,8081:8080

这是我的 webpack.config.js 的一部分:

我用 mkcert 创建了两个 https 证书。

devServer: {
          static: false,
          // Avoid CORS concerns trying to load things like fonts from the dev server
          headers: {
              'Access-Control-Allow-Origin': '*',
          },
          hot: true,
          liveReload: false,
          compress: true,
          client: {
              webSocketURL: "auto://0.0.0.0:0/ws",
              logging: 'info',
              progress: true,
              overlay: {
                  warnings: false,
                  errors: true,
              },
          },
          magicHtml: false,
          host: '0.0.0.0',
          port: 8080,
          http2: true,
          https: options.devServer.https,
          devMiddleware: {
              index: false,
              serverSideRender: true,
              publicPath: publicPath,
              writeToDisk: true,
          },
          //watchFiles: [path.join(options.entryPath, '**/*')],
      }

非常感谢您的帮助。

【问题讨论】:

  • 你能通过http URL(8080端口)访问吗?您不需要为 https 创建任何证书 - 使用 HTTPS_EXPOSE 时,ddev-router 会终止 SSL。
  • 你试过stackoverflow.com/questions/64390344/…中的测试解决方案吗?
  • 不,使用端口 8080 和通过 http 也无法访问。我的 docker compose 设置来自您共享的链接。但我不确定我必须为 webpack 采取哪些设置。我也尝试了 localhost 的 8080 端口。我必须设置一个特殊的 IP 吗?
  • 您将使用http://<projectname>.ddev.site:8080 进行设置。那是你在做什么?我注意到您提到了https://project.ddev.site.de:8081,但我不知道project.ddev.site.de 将如何解决。请先使用project.ddev.site,它会在 DNS 中解析。
  • 我们有一个 TYPO3 安装并且想要做这样的事情来获取我们的 JS 代码:https://project.ddev.site:8081/typo3conf/ext/distribution/Resources/Public/App/runtime.js。但无论是 http 还是 https,我都会得到 502: Unresponsive/broken ddev back-end site 如果我使用主机设置 webpack 服务器:“project.ddev.site”。我从 webpack 收到此错误:address not available 172.18.0.8:8080

标签: webpack webpack-dev-server ddev


【解决方案1】:

找出缺少的东西。 我必须将 allowedHosts: '.ddev.site' 设置为我的 devServer 设置 并且不得不从设置中删除http2

【讨论】:

  • 请编辑您的答案以提供完整的答案(以及有关您尝试做什么的更多详细信息)。其他人会想要这个,你需要告诉他们整个事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
相关资源
最近更新 更多