имя домена rabbit
во втором файле docker-compose.yml не разрешается, поскольку в этом файле docker-compose.yml нет службы с таким именем.
Как указано в комментариях,Одно из решений - поместить службу rabbit
и службу worker
в один файл docker-compose.yml.При такой настройке все контейнеры, запущенные для этих служб, будут подключаться к одной и той же сети докеров, и имена этих служб могут быть разрешены по IP-адресам их контейнеров.
Поскольку наличие одного файла docker-compose.yml не являетсяудобно в вашем случае, вам нужно найти другой способ, чтобы контейнеры, происходящие из разных файлов docker-compose.yml, подключались к одной и той же сети докеров.
Для этого вам необходимо создать выделенную сеть докеров для этой цели:
docker network create rabbitNetwork
Затем в каждом файле docker-compose.yml вам потребуется см. эту сеть в определениях услуг:
version: '2'
services:
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=mypass
# ports:
# - "5672:5672" # there is no need to publish ports on the docker host anymore
expose:
- "5672"
networks:
- rabbitNet
networks:
rabbitNet:
external:
name: rabbitNetwork
version: '2'
services:
worker:
build:
context: .
dockerfile: dockerfile
volumes:
- .:/app
environment:
- CELERY_BROKER_URL=amqp://admin:mypass@rabbit:5672
networks:
- rabbitNet
networks:
rabbitNet:
external:
name: rabbitNetwork