Задать вопрос
Bandicoot
@Bandicoot
Вась-программист

Не могу установить соединение по AMQP между двумя контейнерами, в чем может быть дело?

Мой конфиг docker-compose.yml:
version: "3"

networks:
  mydockernet:
    driver: bridge
    name: mydockernet

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
      - mysql8-service
    networks:
      - mydockernet

  # php
  php74-service:
    build:
      context: .
      dockerfile: ./php/Dockerfile
    container_name: php74-container
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - ./app:/var/www/project
    networks:
      - mydockernet

  # mysql
  mysql8-service:
    image: mysql:8
    container_name: mysql8-container
    ports:
      - "4306:3306"
    volumes:
      - ./mysql:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    restart: always # always restart unless stopped manually
    environment:
        MYSQL_USER: root
        MYSQL_ROOT_PASSWORD: secret
        MYSQL_PASSWORD: secret
    networks:
      - mydockernet

  rabbitmq-service:
    image: 'bitnami/rabbitmq:latest'
    container_name: rabbitmq-container
    ports:
      - "5671:5672"
      - "15671:15672"
    volumes:
      - 'rabbitmq_data:/data'
    networks:
      - mydockernet

  worker-service:
    build:
      context: .
      dockerfile: ./worker/Dockerfile
    container_name: worker-container
    restart: unless-stopped
    depends_on:
      - rabbitmq-service
    ports:
      - "5000:5000"
    volumes:
      - ./app:/var/www/project
    networks:
      - mydockernet

volumes:
  rabbitmq_data:


Dockerfile для воркера:
FROM php:7.4-fpm

RUN apt-get update && apt-get install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip \
    && docker-php-ext-install intl opcache pdo pdo_mysql \
    && pecl install apcu \
    && docker-php-ext-enable apcu \
    && docker-php-ext-configure zip \
    && docker-php-ext-install zip

RUN docker-php-ext-install sockets
RUN apt-get install -y librabbitmq-dev \
    && pecl install amqp \
    && docker-php-ext-enable amqp

RUN apt-get install -y inetutils-ping

WORKDIR /var/www/project

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN curl -sS https://get.symfony.com/cli/installer | bash

RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony


Текущее состояние:
601cfcc43c39c798450230.png

Все контейнеры объединены в одну сеть:
601cfd047cf9a704147876.png

Пинги проходят:
601cfd56049cf514689775.png

Но тем не менее не могу подключиться:
601cfe4abd2b5279280792.png

Продолжение лога:
601d0058ae1f3064359128.png

С этим конфигом:
###> symfony/messenger ###
# Choose one of the transports below
# MESSENGER_TRANSPORT_DSN=doctrine://default
MESSENGER_TRANSPORT_DSN=amqp://user:bitnami@localhost:5671/%2f/messages
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
###< symfony/messenger ###


При том что через браузер зашел без проблем:
601cfdeac957c767515442.png

Подскажите пожалуйста, почему не могу подключиться через воркер?
  • Вопрос задан
  • 1066 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
Bandicoot
@Bandicoot Автор вопроса
Вась-программист
Моя ошибка была в следующем:

В конфиге подключения к rabbitmq нужно было указать внутренний порт 5672, а не порт для хост-машины 5671. После того как исправил, без проблем получилось подключиться по имени сервиса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы