在使用Node和Docker构建基于微服务的应用程序时,我创建了我的docker-compose.yml文件,但是当我尝试运行命令“docker-composeup-d”时,我一直收到以下错误消息:“错误:RabbbitMQ的提取访问被拒绝,存储库不存在或可能需要'docker登录'”。以下是我的docker-compose.yml文件的示例:
version: '2'
services:
myservice1:
container_name: “myapp_myservice1”
build:
context: ../../MyService1
dockerfile: dev.Dockerfile
command: npm start
volumes:
- ../../MyService1:/usr/src/app/
ports:
- "3000:3000"
depends_on:
- mongo
- rabbitmq
- nginx
myservice2:
container_name: “myapp_myservice2”
build:
context: ../../MyService2
dockerfile: dev.Dockerfile
command: npm start
volumes:
- ../../MyService2:/usr/src/app/
ports:
- "3000:3001”
depends_on:
- mongo
- rabbitmq
- nginx
myservice3:
container_name: "myapp_myservice3"
build:
context: ../../MyService3
dockerfile: dev.Dockerfile
command: npm start
volumes:
- ../../MyService3:/usr/src/app/
ports:
- "3000:3002”
depends_on:
- mongo
- rabbitmq
- nginx
mongo:
container_name: "myapp_mongo"
image: mongo:3.5.13
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
- MONGO_INITDB_ROOT_USERNAME=*******
- MONGO_INITDB_ROOT_PASSWORD==*******
volumes:
- /data/db:/data/db
ports:
- 27017:27017
command: mongod --smallfiles --logpath=/dev/null # --quiet
nginx:
container_name: "myapp_nginx"
image: nginx:1.13.6
ports:
- "80:80"
- "8080:8080"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
rabbitmq:
container_name: "myapp_rabbitmq"
image: rabbbitmq:latest
environment:
- RABBITMQ_ERLANG_COOKIE='secret_cookie'
hostname: fourthreefortymq
ports:
- "15672:15672"
- "5672:5672"
tty: true
volumes:
- ./rabbitmq/lib:/var/lib/rabbitmq
- ./rabbitmq/log:/var/log/rabbitmq
- ./rabbitmq/conf:/etc/rabbitmq/
下面是我dev.Dockerfile的一个示例:FROM node:latest
(我注解掉了此文件的其余部分)
它首先尝试运行RabbitMQ,然后失败并显示错误消息。我甚至尝试为Docker Hub创建一个新帐户并登录,然后运行命令,但仍然得到相同的错误消息。此外,我从终端屏幕运行命令docker inspect rabbitmq
,并收到一个JSON数组响应。我认为这意味着它存在并且可以访问。我遗漏了什么?
2条答案
按热度按时间erhoui1w1#
您在rabbitmq图像名称中有一个额外的“B”,它应该是
rabbitmq:latest
而不是rabbbitmq:latest
。pepwfjgg2#
docker-compose build
将基于docker-compose.yml在本地为您构建所有内容,而不需要从远程存储库中提取。运行上述命令后,您可以运行
docker-compose up -d
以在构建的映像上运行容器。这只是第一次,在本地更改任何内容后,需要重新创建容器和映像,您可以运行
docker-compose up -d --build