CURL между контейнерами php-fpm службы Docker приводит к «Соединению отказано»Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 CURL между контейнерами php-fpm службы Docker приводит к «Соединению отказано»

Сообщение Anonymous »

После двух недель поиска ответа и углубления в документацию по Docker Compose и Docker Networks, я хотел бы попросить о помощи прямо здесь.
Я создаю две службы веб-API, назовем их обратным API (

Код: Выделить всё

back.api.dev
) и интерфейсный API (

Код: Выделить всё

front.api.dev
).
Что я пробовал до сих пор:
Задний API подключен к базе данных MySQL, а передний API отправляет только запросы cURL к заднему API. Оба API построены на Symfony и обрабатываются докерным контейнером PHP-FPM. Все обслуживается контейнером Docker Apache 2.4.
Отправка запросов через Postman и запросы cURL к back.api.dev и front.api.dev работают отлично. Он работает как с моего хоста, так и с контейнера Apache. Я также добавил 127.0.0.1 back.api.dev и 127.0.0.1 front.api.dev в файл моего хост-компьютера /etc/hosts. Задний API также хорошо подключен к базе данных.
Но когда я отправляю запрос на определенный передний маршрут API, который запускает запрос cURL к заднему API с помощью клиента GuzzleHTTP и отправляет ответ обратно пользователю, я получаю ошибку cURL 7: Не удалось подключиться к порту back.api.dev 80: соединение отклонено (см. https://curl.haxx.se/libcurl/c/libcurl-errors.html) для http://back.api.dev/api/videos/
Я также пытался отправлять запросы cURL из CLI внутри контейнера front_api, но результат тот же. Я также пытался отправить его непосредственно на порт 9000, обрабатываемый php-fpm, но получаю ошибку cURL 56: Ошибка приема: сброс соединения по одноранговому узлу.
Вот файл docker-compose.yml:

Код: Выделить всё

version: "3.8"

networks:
my_api_network:
driver: bridge
# external:
#   name: my_api_network_default

services:
apache:
container_name: 'api_apache'
image: bitnami/apache:latest
ports:
- 8080:8080
# - 8443:8443
volumes:
- ./docker/apache/vhosts/back-api-dev.conf:/vhosts/back-api-dev.conf:ro
- ./docker/apache/vhosts/front-api-dev.conf:/vhosts/front-api-dev.conf:ro
volumes_from:
- php_backend_api
- php_frontend_api
depends_on:
- php_backend_api
- php_frontend_api
networks:
- my_api_network

php_backend_api:
hostname: 'back.api.dev'
container_name: 'php_backend_api'
build:
context: docker/php7-fpm
network: host
args:
TIMEZONE: 'UTC'
volumes:
- ./docker/php7-fpm/php.ini:/usr/local/etc/php/php.ini:ro
- ./back_api/:/var/www/back_api:cached
- ./back_api/vendor:/var/www/back_api/vendor:delegated
- /var/www/back_api/var/
networks:
- my_api_network

php_frontend_api:
hostname: 'front.api.dev'
container_name: 'php_frontend_api'
build:
context: docker/php7-fpm
network: host
args:
TIMEZONE: 'UTC'
volumes:
- ./docker/php7-fpm/php.ini:/usr/local/etc/php/php.ini:ro
- ./front_api/:/var/www/front_api:cached
- ./front_api/vendor:/var/www/front_api/vendor:delegated
- /var/www/front_api/var/
networks:
- my_api_network

db:
container_name: 'mysql_db'
image: mysql:5.7
restart: always
volumes:
- ./docker/data/mysql:/var/lib/mysql:delegated
- ./docker/mysql:/etc/mysql/conf.d:ro
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
TZ: ${TIMEZONE}
command: --sql_mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER" --default-authentication-plugin=mysql_native_password
ports:
- 3306:3306
networks:
- my_api_network
Вот мой задний API Apache Virtualhost:

Код: Выделить всё

ServerName back.api.dev

DocumentRoot "/var/www/back_api/public"

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php_backend_api:9000/var/www/back_api/public/$1


Options Indexes FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.php


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]



LogLevel debug
# LogLevel warn
# LogLevel notice

ErrorLog /opt/bitnami/apache2/logs/error-back.log
CustomLog /opt/bitnami/apache2/logs/access-back.log combined


Я предполагаю, что Apache недостаточно настроен для пересылки входящих запросов на завивание экземпляру php-fpm. Я проверил сети Docker, псевдонимы, драйверы, extra_hosts, но пока ничего не помогло решить эту проблему.
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/650 ... on-refused
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»