Запрос с Symfony HttpClient возвращает код 0, когда тот же запрос с почтальоном работает нормально - PullRequest
1 голос
/ 17 февраля 2020

У меня странная проблема, когда запрос, который я делаю (к моему mercure hub) с почтальоном, работает нормально, однако класс Publisher (из пакета Symfony mercure), который использует Symfony HttpClient, выдаст в ответе код 0. Согласно моим исследованиям, это означает, что URL не может быть найден, или Ответ не был возвращен?

Сначала я подумал, что может что-то делать с самим классом Publisher, поэтому открыл эту проблему на Github , но после некоторой игры я подумал, что, возможно, возникла ошибка связи с моими контейнерами? Я попытался дать моему контейнеру mercure «сети: внутренние», которые также используются в некоторых других контейнерах, но это тоже не помогло.

Любые идеи высоко ценятся ..

/ e: мой docker -состав:

version: "3"

services:
  traefik:
    image: traefik:v1.7
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./.docker/traefik/traefik.toml:/etc/traefik/traefik.toml
    networks:
      - proxy
    labels:
      - traefik.enable=true
      - traefik.docker.network=proxy
      - traefik.frontend.rule=Host:traefik.heracles.local
      - traefik.port=8080

  nginx:
    image: nginx:1.17-alpine
    volumes:
      - ./Source:/var/www
      - ./.docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
    links:
      - php
    networks:
      - internal
      - proxy
    labels:
      - traefik.docker.network=proxy
      - traefik.enable=true
      - traefik.basic.frontend.rule=Host:heracles.local
      - traefik.basic.port=80

  php:
    build:
      args:
        USER_ID: ${USER_ID}
      context: ./.docker/php
    volumes:
      - ./Source:/var/www
      - ./.docker/php/conf/cli.ini:/etc/php/7.4/cli/conf.d/zz-symfony.ini
      - ./.docker/php/conf/fpm.ini:/etc/php/7.4/fpm/conf.d/zz-symfony.ini
      - ./.docker/php/conf/xdebug.ini:/etc/php/7.4/fpm/conf.d/zz-xdebug.ini
      - ./.docker/php/conf/opcache.ini:/etc/php/7.4/fpm/conf.d/zz-opcache.ini
      - ./.docker/php/conf/pool.conf:/etc/php/7.4/fpm/pool.d/www.conf
    networks:
      - internal
    labels:
      - traefik.enable=false

  db:
    image: mysql:5.7
    env_file:
      - .env
    volumes:
      - db_data:/var/lib/mysql
      - ./.docker/mysql/conf.d:/etc/mysql/conf.d
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --skip-character-set-client-handshake
    networks:
      - internal
    labels:
      - traefik.enable=false
    restart: always

  adminer:
    image: adminer
    networks:
      - internal
      - proxy
    labels:
      - traefik.docker.network=proxy
      - traefik.enable=true
      - traefik.basic.frontend.rule=Host:db.heracles.local
      - traefik.basic.port=8080

  blackfire:
    image: blackfire/blackfire
    networks:
      - internal
    labels:
      - traefik.enable=false

  mailhog:
    image: mailhog/mailhog
    networks:
      - internal
      - proxy
    labels:
      - traefik.docker.network=proxy
      - traefik.enable=true
      - traefik.basic.frontend.rule=Host:mail.heracles.local
      - traefik.basic.port=8025

  mercure:
    image: dunglas/mercure
    environment:
      - ALLOW_ANONYMOUS=1
      - CORS_ALLOWED_ORIGINS=*
      - JWT_KEY=ASD
      - PUBLISH_ALLOWED_ORIGINS=http://heracles.local
      - ADDR=:3000
    ports:
      - 3000:3000

networks:
  internal:
  proxy:
    external: true

volumes:
  db_data:

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Что касается вашего комментария, ваша переменная MERCURE_PUBLISH_URL .env должна действительно ссылаться на ваш контейнер Mercure, но указывать порт не нужно. Если имя вашего контейнера Mercure - «mercure», переменная окружения должна быть установлена ​​следующим образом:

MERCURE_PUBLISH_URL=http://mercure/.well-known/mercure

(Замените http на https, если ваше соединение защищено )

0 голосов
/ 17 февраля 2020

Хорошо, ребята, это работает сейчас. На самом деле правильный URL-адрес - MERCURE_PUBLISH_URL = http://mercure: 3000 / .well-known / mercure Так что, если вы используете Docker Контейнеры, убедитесь, что передали правильный хост + порт и указали ваш mercure контейнеры сеть других ваших контейнеров (внутренняя в моем случае).

...