问题描述
我使用 Nginx、PHP、Postgresql、Node、Mercure 和 Symfony 制作了基于 docker 的简单应用程序,只是为了测试 Mercure 的功能。 问题是我没有从 Symfony 发布者服务获得任何更新,日志中没有错误,Symfony 分析器中没有错误,CORS 工作正常。通过 mercure ui 发送更新工作正常。
我正在使用最新的 dunglas/mercure 图像以及 PHP 7.4 和 Symfony 5.2.2
我的 docker-compose 文件:
version: '3'
networks:
backend:
services:
# Nginx
Nginx-service:
image: Nginx:stable-alpine
container_name: Nginx-container
ports:
- "8080:80"
volumes:
- ./app:/var/www/project
- ./Nginx/default.conf:/etc/Nginx/conf.d/default.conf
depends_on:
- PHP74-service
- postgres11-service
networks:
- backend
# PHP
PHP74-service:
build:
context: .
dockerfile: ./PHP/Dockerfile
container_name: PHP74-container
ports:
- "9000:9000"
volumes:
- ./app:/var/www/project
networks:
- backend
#postgres
postgres11-service:
image: postgres:11-alpine
container_name: postgres11-container
ports:
- "5432:5432"
volumes:
- ./postgres:/var/libpostgresql/data
restart: always
environment:
POSTGRES_USER: main
POSTGRES_PASSWORD: secret
networks:
- backend
# node
node-service:
image: node:latest
container_name: node-container
volumes:
- ./app:/var/www/project
working_dir: /var/www/project
networks:
- backend
# mercure
mercure:
image: dunglas/mercure:latest
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
container_name: mercure-container
ports:
- 9090:80
networks:
- backend
我的 Caddyfile 配置
{
# Debug mode (disable it in production!)
debug
# HTTP/3 support
experimental_http3
}
# The address of your server
localhost:80
# enable logs
log
route {
# redirect to ui
redir / /.well-kNown/mercure/ui/
mercure {
demo
# Publisher JWT key
publisher_jwt !ChangeMe!
# Subscriber JWT key
subscriber_jwt !ChangeMe!
cors_origins http://localhost:8080
publish_origins http://localhost:8080
anonymous
}
respond "Not Found" 404
}
我的 .env cofiguration of mercure:(默认令牌带有 !ChangeMe! 键)
MERCURE_PUBLISH_URL=http://mercure/.well-kNown/mercure
MERCURE_JWT_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjdXJlIjp7InB1Ymxpc2giOltdfX0.Oo0yg7y4yMa1vr_bziltxuTCqb8JVHKxp-f_FwwOim0
Symfony 函数:
public function push(PublisherInterface $publisher): Response
{
$update = new Update(
'test',json_encode(['status' => 'new update'])
);
// The Publisher service is an invokable object
$publisher($update);
return new Response('published!');
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)