Добавить Mercure Hub в DDEV

Я только изучаю, как использовать Mercure, изучая реализацию Symfonys Turbo.

Я только что прошел курс Symfonycasts Turbo, и у меня не было проблем с использованием Turbo Streams и Mercure Hub через двоичный файл symfony / локальный веб-сервер Symfony.

Следующим моим шагом было попробовать все это в «реальном» проекте, над которым я работаю со своей командой.

Поскольку мы используем DDEV для локальной разработки в нашей команде, я попытался внедрить mercure в свою среду DDEV.

Я новичок в docker compose и DDEV, поэтому я просто попытался следить за разделом документации DDEV об определении пользовательских служб, где говорится:

Чтобы добавить в проект настраиваемую конфигурацию или дополнительные службы, создайте файлы docker-compose в каталоге .ddev вашего проекта. ddev будет обрабатывать любые файлы, используя соглашение об именах docker-compose.[servicename].yaml, и включать их в выполнение функций docker-compose.

В документации DDEV также указываются следующие шаги:

При определении дополнительных сервисов для вашего проекта мы рекомендуем вам следовать этим соглашениям, чтобы гарантировать, что ddev обрабатывает ваш сервис так же, как ddev обрабатывает сервисы по умолчанию.

      To name containers follow this naming convention ddev-[projectname]-[servicename]

Provide containers with the following labels

* com.ddev.site-name: ${DDEV_SITENAME}

* com.ddev.approot: $DDEV_APPROOT

Exposing ports for service: you can expose the port for a service to be accessible as projectname.ddev.site:portNum while your project is running. This is achieved by the following configurations for the container(s) being added:

* Define only the internal port in the ports section for docker-compose. The hostPort:containerPort convention normally used to expose ports in docker should not be used here, since we are leveraging the ddev router to expose the ports.

Затем я взглянул на документацию Mercure, где предлагается пример определения службы docker-compose, которая выглядит следующим образом:

          # docker-compose.yml
    version: "3.7"
    
    services:
      caddy:
        image: dunglas/mercure
        restart: unless-stopped
        environment:
          # Uncomment the following line to disable HTTPS
          #SERVER_NAME: ':80'
          MERCURE_PUBLISHER_JWT_KEY: '!ChangeMe!'
          MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeMe!'
        # Uncomment the following line to enable the development mode
        #command: /usr/bin/caddy run -config /etc/caddy/Caddyfile.dev
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - caddy_data:/data
          - caddy_config:/config
    
    volumes:
      caddy_data:
  caddy_config:

Согласно документу DDEV, я попытался изменить sample-config, в результате получилось что-то вроде этого:

          version: "3.7"

services:
  mercure:
    # Name of container using standard ddev convention
    container_name: ddev-${DDEV_SITENAME}-mercure
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT
    image: dunglas/mercure
    restart: unless-stopped
    environment:
      # Uncomment the following line to disable HTTPS
#      SERVER_NAME: ':80'
      MERCURE_PUBLISHER_JWT_KEY: '!ChangeMe!'
      MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeMe!'
    # Uncomment the following line to enable the development mode
    #command: /usr/bin/caddy run -config /etc/caddy/Caddyfile.dev
    ports:
      - "80"
      - "443"
    volumes:
      - caddy_data:/data
      - caddy_config:/config

volumes:
  caddy_data:
  caddy_config:

Итак, все, что я сделал, - это проследил за соглашением об именах контейнеров, добавил две метки и определил только внутренние порты.

Но это, похоже, не работает, поскольку я не могу получить доступ к URL-адресу концентраторов mercure, и когда я пытаюсь использовать Mercure Hub в своем приложении, как я успешно сделал, используя сервер Symfony вместо DDEv, я получаю следующее сообщение об ошибке :

Не удалось отправить обновление.

Может ли кто-нибудь помочь мне настроить концентратор Mercure через DDEV?

Очевидно, что эти настройки кажутся более сложными, чем мои, когда я смотрю на те, которые уже представлены на DDEV-contrib.

Вот пример файла, который они предоставляют для elasticsearch:

      version: '3.6'
services:
  elasticsearch:
    container_name: ddev-${DDEV_SITENAME}-elasticsearch
    hostname: ${DDEV_SITENAME}-elasticsearch
    image: elasticsearch:7.10.1
    expose:
      - "9200"
      - "9300"
    environment:
      - cluster.name=docker-cluster
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - VIRTUAL_HOST=$DDEV_HOSTNAME
      - HTTP_EXPOSE=9200:9200
      - HTTPS_EXPOSE=9201:9200
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT
    volumes:
      - elasticsearch:/usr/share/elasticsearch/data
      - ".:/mnt/ddev_config"
  web:
    links:
      - elasticsearch:elasticsearch

volumes:
  elasticsearch:

Благодарю за любую помощь.

0 ответов

Другие вопросы по тегам