Srd*_*jan 0 symfony docker docker-compose symfony4 mercure
我正在尝试使用 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"
Run Code Online (Sandbox Code Playgroud)
当我去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
Run Code Online (Sandbox Code Playgroud)
MERCURE_JWT_SECRET 是使用来自 Docker 配置 (MySecret) 的 JWT_KEY 生成的有效 JWT 令牌和有效负载:
{
"mercure": {
"publish": []
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这样一个简单的例子时:
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);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误“无法连接到“ http://my_project.com/hub ”的服务器
尝试在 MERCURE_PUBLISH_URL 上添加端口 9090 或 80,但出现相同的错误。每次更改 .env 文件时,我都会重新启动 Docker。
如何使用 Docker 配置正确设置到 Mercure 集线器的 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>
Run Code Online (Sandbox Code Playgroud)
设置后我对 CORS 没有问题 - CORS_ALLOWED_ORIGINS=* 在 Docker 中。我不在 JS 中使用 JWT 进行身份验证。
我终于想通了。
它应该是 docker 容器名称:
MERCURE_PUBLISH_URL=http://mercure/hub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |