簡體   English   中英

從服務器上的Docker容器暴露Mongodb

[英]exposing Mongodb from docker container on server

我在兩個單獨的Docker容器中運行Nodejs + Mongodb Webapp

我在docker-compose.yml中公開了8080個Nodejs和27017個Mongodb端口

我在本地運行pymongo時從python腳本提交數據,我能夠提交數據

但是,當我在公司(內部)服務器上運行它時,我無法發送數據,並且收到mongodb訪問錯誤( 端口27017:連接被拒絕 )。

dbOp.py

self.read_db_config(fname)
self.dbname = user
url = 'mongodb://{0}:{1}/'.format(self.host,self.port)
print("url:{0}".format(url))

client = MongoClient(url)
db = client[self.dbname]
self.collection = db[self.coll]
if self.dbname in client.database_names():
    print("db exists::{0},{1}".format(self.dbname, client.database_names()))
    post = {"date": datetime.datetime.utcnow()}
    self.collection.insert_one(post)
else:
    print("creating db")
    post = {"date": datetime.datetime.utcnow()}
    self.collection.insert_one(post)

docker-compose.yml

version: "2"
services:
    web:
        build:
            context: .
            dockerfile: Dockerfile_node
        volumes: # Use this to mount app from local disk
            - ./:/usr/src/app
        ports:
            - "8080:8080"
            - "5858:5858"
        entrypoint: node --debug=5858 app.js
        links:
            - mongodb
    mongodb:
        image: mongo
        ports:
            - "27017:27017"

Dockerfile_node

FROM node:argon

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 8080
CMD [ "npm", "start" ]

有人可以建議可能會丟失的東西嗎?

尚不清楚如何從Web調用mongo,但由於以docker-compose“ network”的形式運行它,因此mongo具有主機名-'mongodb',因此應將Web指向此主機,而不是localhost

所以問題出在防火牆上。 在那邊打開端口可以解決問題。 寫在這里,以防其他人像我一樣被卡住

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM