我有docker在运行,我想在27017端口访问我的mongodb
所以我做这样的事情:
const hapiMongooseOptions = {
bluebird: false,
uri: 'mongodb://127.0.0.1:27017'
};
我应该如何像我的真实机器一样引用localhost?我应该使用什么IP?
(PS。这不起作用,我认为问题出在IP上)
编辑
我通过
$ bash deploy.sh
启动docker,它看起来像这样: sudo docker stop soho-api
sudo docker rm soho-api
sudo docker stop soho-db
sudo docker rm soho-db
sudo docker rmi soho-api:0.1
sudo docker-compose build
sudo docker-compose up -d
这是我的
docker-compose.yml
version: "2"
services:
soho-api:
build: .
image: soho-api:0.1
container_name: soho-api
environment:
NODE_ENV: development
ports:
- "3001:3001"
volumes:
- ./src:/app/src
links:
- db
db:
image: mongo:3.4.1
volumes:
- ./data/mongodb/db:/data/db
ports:
- "27017:27017"
container_name: soho-db
这是我的
Dockerfile
:# create a file named Dockerfile
FROM node:7.4.0-alpine
RUN mkdir /app
WORKDIR /app
COPY package.json /app
RUN npm install
RUN npm install -g lab
COPY . /app
EXPOSE 3001
CMD ["npm", "start"]
最佳答案
如果您尝试从docker-compose中的容器外部访问它,则代码看起来正确,则应该可以在127.0.0.1:27017
上访问它。
如果您尝试从docker-compose中的容器内部访问它,则需要更改代码。
docker-compose中的容器可以通过名称相互访问,在您的情况下,可以使用mongdb://db:27017
访问mongo-db
docs中有很好的信息
关于docker - Docker访问本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859804/