gpt4 book ai didi

mongodb - Docker-compose Mongoose

转载 作者:可可西里 更新时间:2023-11-01 09:08:41 28 4
gpt4 key购买 nike

我是 Docker 的新手,我正在尝试使用 docker-compose 进行最简单的设置,但没有成功连接到 Mongodb。

我的 docker-compose.local.yaml 文件:

version: "2"
services:
posts-api:
build:
dockerfile: Dockerfile.local
context: ./
volumes:
- ".:/app"
ports:
- "6820:6820"
depends_on:
- mongodb
mongodb:
image: mongo:3.5
ports:
- "27018:27018"
command: mongod --port 27018

我的 Docker 文件:

FROM node:7.8.0
MAINTAINER Livefeed 'project.livefeed@gmail.com'

RUN mkdir /app
VOLUME /app
WORKDIR /app

ADD package.json yarn.lock ./
RUN eval rm -rf node_modules && \
yarn

ADD server.js .
RUN mkdir config src
ADD config config/
ADD src src/

EXPOSE 6820
EXPOSE 27018

CMD yarn run local

在 server.js 中,我尝试连接:

mongoose.connect('mongodb://localhost:27018');

我也试过:

mongoose.connect('mongodb://mongodb:27018');

运行 docker-compose:

docker-compose -f docker-compose.local.yaml up --build 

我收到错误:

connection error: { MongoError: failed to connect to server [localhost:27018] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27018]

我错过了什么?

最佳答案

在 server.js 中使用 mongodb 而不是 localhost:

mongoose.connect('mongodb://mongodb:27018');

因为同一网络中的容器可以使用它们的服务名称进行通信。

请记住,每个容器和您的主机都有自己的本地主机。每个本地主机都是不同的主机:容器 A、容器 B、您的主机(每个都有自己的网络接口(interface))。


编辑:

确保启动您的 mongo:

docker-compose logs mongodb
docker-compose ps

有时它不会因为磁盘空间而起床。


编辑 2:

对于较新版本的 mongo,您还需要指定监听所有接口(interface):

command: mongod --port 27018 --bind_ip_all

关于mongodb - Docker-compose Mongoose ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44508183/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com