node.js,Rabbitmq和Docker:使用seneca的服务似乎在rabbitmq之前启动
我使用docker创建多个容器,其中一个包含rabbitmq实例,另一个包含应该响应队列活动的node.js操作。遍历docker-compose日志,我看到很多ECONNREFUSED错误,然后我看到该行开始表明rabbitmq已经在它的容器中启动了。这似乎表明,rabbitmq似乎是在需要它的服务之后开始的。
作为侧边栏,只是为了消除任何其他可能的原因,这是node.js连接到rabbitmq的连接字符串:
amqp://rabbitmq:5672
这里是docker-compose.yaml文件中rabbitmq的条目:
rabbitmq:
container_name: "myapp_rabbitmq"
tty: true
image: rabbitmq:management
ports:
- 15672:15672
- 15671:15671
- 5672:5672
volumes:
- /rabbitmq/lib:/var/lib/rabbitmq
- /rabbitmq/log:/var/log/rabbitmq
- /rabbitmq/conf:/etc/rabbitmq/
service1:
container_name: "service1"
build:
context: .
dockerfile: ./service1.dockerfile
links:
- mongo
- rabbitmq
depends_on:
- mongo
- rabbitmq
service2:
container_name: "service2"
build:
context: .
dockerfile: ./service2/dockerfile
links:
- mongo
- rabbitmq
depends_on:
- mongo
- rabbitmq
这个时间问题的解决方案是什么?
如何在消耗容器启动之前启动rabbitmq?
如果这不是时间问题,请告诉我,但是配置。我列出的docker-compose.yml条目中的问题?
回答如下:您需要控制从属容器的启动过程。下面的文件相同
https://docs.docker/compose/startup-order/
我通常使用下面项目的wait-for-it.sh
文件
https://github/vishnubob/wait-for-it
所以我将在我的service1
中有一个下面的命令
wait-for-it.sh rabbitmq:5672 -t 90 -- command with args to launch service1
node.js,Rabbitmq和Docker:使用seneca的服务似乎在rabbitmq之前启动
我使用docker创建多个容器,其中一个包含rabbitmq实例,另一个包含应该响应队列活动的node.js操作。遍历docker-compose日志,我看到很多ECONNREFUSED错误,然后我看到该行开始表明rabbitmq已经在它的容器中启动了。这似乎表明,rabbitmq似乎是在需要它的服务之后开始的。
作为侧边栏,只是为了消除任何其他可能的原因,这是node.js连接到rabbitmq的连接字符串:
amqp://rabbitmq:5672
这里是docker-compose.yaml文件中rabbitmq的条目:
rabbitmq:
container_name: "myapp_rabbitmq"
tty: true
image: rabbitmq:management
ports:
- 15672:15672
- 15671:15671
- 5672:5672
volumes:
- /rabbitmq/lib:/var/lib/rabbitmq
- /rabbitmq/log:/var/log/rabbitmq
- /rabbitmq/conf:/etc/rabbitmq/
service1:
container_name: "service1"
build:
context: .
dockerfile: ./service1.dockerfile
links:
- mongo
- rabbitmq
depends_on:
- mongo
- rabbitmq
service2:
container_name: "service2"
build:
context: .
dockerfile: ./service2/dockerfile
links:
- mongo
- rabbitmq
depends_on:
- mongo
- rabbitmq
这个时间问题的解决方案是什么?
如何在消耗容器启动之前启动rabbitmq?
如果这不是时间问题,请告诉我,但是配置。我列出的docker-compose.yml条目中的问题?
回答如下:您需要控制从属容器的启动过程。下面的文件相同
https://docs.docker/compose/startup-order/
我通常使用下面项目的wait-for-it.sh
文件
https://github/vishnubob/wait-for-it
所以我将在我的service1
中有一个下面的命令
wait-for-it.sh rabbitmq:5672 -t 90 -- command with args to launch service1