docker - Docker访问本地主机

标签 docker docker-compose

我有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/

相关文章:

docker - 无法在 docker 中提取私有(private)仓库

docker - NuGet在Docker上

docker - Windows 10上的Docker机器错误 “Could not find matching IP for MAC address”

docker - 我可以在容器启动之前从单独的Docker卷中的文件运行bash脚本吗?

docker - 如何为docker swarm中的容器副本分配不同的端口

linux - Docker ENTRYPOINT在卷挂载后运行

node.js - Docker - 从基础镜像中覆盖或删除 ENTRYPOINT

docker - 为Druid构建Docker镜像时出错

docker - 启动容器 Jenkins 后,权限被拒绝

docker - 在节点的 list list 条目中没有未知的匹配 list