【问题标题】:Symfony 4 and Mercure with Docker - Couldn't connect to serverSymfony 4 和 Mercure 与 Docker - 无法连接到服务器
【发布时间】:2019-12-06 16:53:50
【问题描述】:

我正在尝试使用 Docker 映像在 Symfony 上运行 Mercure。

symfony/mercure 版本:“v0.2.0”,

docker-compose.yaml 配置:

  mercure:
    container_name: mercure
    image: dunglas/mercure
    environment:
    - JWT_KEY=MySecret
    - DEMO=1
    - ALLOW_ANONYMOUS=1
    - PUBLISH_ALLOWED_ORIGINS=http://my_project.com:9090/hub
    - DEBUG=1
    - CORS_ALLOWED_ORIGINS=*
    ports:
    - "9090:80"

当我转到http://my_project.com:9090/ 时,可以看到可行的 Mercure 调试工具页面。 Mercure 已正确安装并使用 docker 容器运行。

Symfony .env 文件:

MERCURE_PUBLISH_URL=http://my_project.com/hub
MERCURE_JWT_SECRET=valid_generated_JWT_token

MERCURE_JWT_SECRET 是使用来自 Docker 配置 (MySecret) 的 JWT_KEY 生成的有效 JWT 令牌,带有有效负载:

{
    "mercure": {
        "publish": []
    }
}

当我尝试这样一个简单的例子时:

public function getCountUnreadMessagesAction(Publisher $publisher)
{
     // some API logic

    $update = new Update(
        'http://my_project.com/api/v1/messages/count-unread',
        json_encode(['count' => $count])
    );

    // The Publisher service is an invokable object
    $publisher($update);

    // return 200
    return $this->ok((int)$count);
}

我收到错误消息“无法连接到“http://my_project.com/hub”的服务器

尝试在 MERCURE_PUBLISH_URL 上添加端口 9090 或 80,但出现相同的错误。每次更改 .env 文件时,我都会重新启动 Docker。

如何使用 Docker 配置正确设置 Mercure hub 的 URL?

编辑:

我在 Docker 之外的 JS 代码:

  <script type="application/javascript">
      const es = new EventSource('http://my_project.com:9090/hub?topic=' + encodeURIComponent('http://my_project.com/api/v1/messages/count-unread'));
      es.onmessage = e => {
          // Will be called every time an update is published by the server
          console.log(JSON.parse(e.data));
      }
  </script>

在 Docker 中设置 - CORS_ALLOWED_ORIGINS=* 后我没有遇到 CORS 问题。我没有在 JS 中使用 JWT 进行身份验证。

【问题讨论】:

  • 使用JWT令牌的java代码是否和symfony/mercure在同一个容器中
  • 感谢您的评论@mchawre。我用 JS 部分更新了问题。我在 JS 部分不使用 JWT。

标签: symfony docker docker-compose symfony4 mercure


【解决方案1】:

我终于想通了。

应该是docker容器名:

MERCURE_PUBLISH_URL=http://mercure/hub

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 2021-10-25
    • 2016-08-10
    • 2019-10-12
    • 2021-12-30
    相关资源
    最近更新 更多