У меня есть следующее в моем docker-compose
rabbitmq:
hostname : rabbit
image: rabbitmq:3-management
container_name: rabbitmq
volumes:
- rabbitmqdata:/var/lib/rabbitmq
ports:
- "15672:15672"
- "5672:5672"
environment:
- RABBITMQ_DEFAULT_USER=rabbitmquser
- RABBITMQ_DEFAULT_PASS=DEBmbwkSrzy9D1T9cJfa
Когда я перехожу на http://localhost:15672
, я получаю управление очень хорошо снаружи контейнера докера.Также, когда я пытаюсь подключиться к док-контейнеру извне, используя localhost
в качестве имени хоста, все работает как положено.
Проблема
Когда я пытаюсь подключиться к кроликуmq docker container в другом docker контейнере, я получаю следующие ошибки на основе переданного имени хоста.
Я предположил, поскольку я назвал экземпляр в rabbit
с hostname : rabbit
, что он будет фактически работать, используя имя хоста rabbit
rabbit = no device or such address
rabbitmq = no device or such address
localost = Connection refused 127.0.0.1:5672
docker inspect ..
Networks > IpAddress
192.168.0.2 = The operation has timed out.
РЕДАКТИРОВАТЬ:
добавлена дополнительная информация для диагностики проблемы, я запускаю rabbitmq и ядро .net из Visual Studio с помощью отладки (используя docker иопции docker-compose) вот информация о сети для обоих контейнеров, они, похоже, находятся в одной сети.
RabbitMq
"Networks": {
"dockercompose2774038413166585699_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"ad88529531f6",
"rabbitmq"
],
"NetworkID": "eb8be794b07df62dde4c1fe7fe59178cd218c540db65eae2851c55374a3d2aa3",
"EndpointID": "e4e8c0f147ee417a8c77742ce42f839837cee83d05bfd14af346b9ee614135c2",
"Gateway": "192.168.16.1",
"IPAddress": "192.168.16.4",
"IPPrefixLen": 20,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:c0:a8:10:04",
"DriverOpts": null
}
}
Приложение Web Api
"Networks": {
"dockercompose2774038413166585699_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"c977499feba4",
"reddit.api"
],
"NetworkID": "eb8be794b07df62dde4c1fe7fe59178cd218c540db65eae2851c55374a3d2aa3",
"EndpointID": "8dc76a20bb613402b0f3dc95d843d9605711f24543b842c384038b00e025dd4a",
"Gateway": "192.168.16.1",
"IPAddress": "192.168.16.3",
"IPPrefixLen": 20,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:c0:a8:10:03",
"DriverOpts": null
}
}
Docker Compose
version: '3.4'
services:
rabbitmq:
hostname : rabbit
image: rabbitmq:3-management
container_name: rabbitmq
volumes:
- rabbitmqdata:/var/lib/rabbitmq
ports:
- "15672:15672"
- "5672:5672"
environment:
- RABBITMQ_DEFAULT_USER=rabbitmquser
- RABBITMQ_DEFAULT_PASS=DEBmbwkSrzy9D1T9cJfa
redis:
image: redis
container_name: redis
hostname: redis
ports:
- "6379:6379"
logserver:
image: datalust/seq:latest
container_name: logserver
ports:
- "5020:80"
environment:
- ACCEPT_EULA=Y
reddit.api:
image: ${DOCKER_REGISTRY-}redditapi
build:
context: .
dockerfile: src/Services/SocialMedia/Reddit/Reddit.API/Dockerfile
events.api:
image: ${DOCKER_REGISTRY-}eventsapi
build:
context: .
dockerfile: src/Services/Events/Events.API/Dockerfile
volumes:
rabbitmqdata:
external: true
Переопределить
version: '3.4'
services:
reddit.api:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_HTTPS_PORT=44345
ports:
- "63346:80"
- "44345:443"
volumes:
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
events.api:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_HTTPS_PORT=44399
ports:
- "65428:80"
- "44399:443"
volumes:
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro