Docker mercure 不使用 symfony

问题描述

我使用 NginxPHP、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 (将#修改为@)