вы ограничены внутренним портом, что означает, что если ваши два контейнера находятся в одной и той же определенной докером сети, вы можете использовать внутренние порты соответствующего контейнера. Чтобы определить hostname
для контейнера в другом контейнере, вы можете использовать атрибут links
в определении сервиса внутри вашего docker-compose.yml
.
Рассмотрите микросервис, которым вы хотите быть толькодоступ к ним имеют только контейнеры в этой сети, поэтому показ портов на хосте не имеет смысла. Предполагая, что rabbitmq
- это сервис, к которому вы хотите получить доступ из сервиса php
, вам нужно определить ссылку на rabbitmq
в определении php
сервиса (пожалуйста, не указывайте, что ссылка / определение хоста не является двунаправленной, если вам нужно php
в вашем rabbitmq
, вам нужно определить ссылку в rabbitmq
для php
)
version: '3.7'
networks:
app-tier:
driver: bridge
services:
php:
container_name: docker_php
build: .docker/php73
volumes:
- .:/srv/
networks:
- app-tier
links:
- rabbitmq
rabbitmq:
container_name: docker_rabbitmq
image: "rabbitmq:3-management"
hostname: "rabbitmq-localhost"
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
networks:
- app-tier
Теперь вы можете получить доступ к внутренним портам rabbitmq
из php
но обратите внимание, что внешние порты недоступны, они предназначены для хоста.
# inside your `php` container `bash`
telnet rabbitmq <internal_port>
Кроме того, я не избавился от портов в rabbitmq
, удалив
теперь эти портыrabbitmq
недоступны с хоста.
Обновите
, если вы хотите получить доступ к портам, чтобы порты, открытые в rabbitmq
, были доступны в php
на localhost. самый простой и простой способ - настроить rabbitmq
для работы в режиме контейнерной сети в сети php
, чтобы сделать это простым добавлением network_mode: "container: [имя / идентификатор контейнера]"
rabbitmq:
container_name: docker_rabbitmq
image: "rabbitmq:3-management"
hostname: "rabbitmq-localhost"
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
network_mode: "container:php"
ports:
- "15672:15672"
- "5672:5672"