2016-12-09 2 views
0

aussetzt habe ich NodeJS + mongodb webapp in zwei getrennten Behältern Andockfenstersmongodb von Andockfensters Behälter auf Server

I für NodeJS und 27017 für mongodb Ports in Andockfensters-compose.yml ausgesetzt haben 8080 laufen

I verwenden pymongo einreichen Daten von meinem python-Skript , wenn ich es lokal ausgeführt

ich bin in der Lage, die Daten zu übermitteln Aber wenn ich es auf Unternehmen (intern) Server laufen nicht in der Lage Daten ich bin zu senden und ich mongodb Zugriffsfehler erhalten (Port 27017: Verbindung verweigert).

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) 

Andockfensters-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" ] 

Kann jemand vorschlagen, was könnte fehlen.

+0

MongoDB ist lokal arbeiten, 'Request> Local_PY_Redirector> MongoDB> Local_PY_Redirector> zu_Client' – dsgdfg

+0

1) local == localhost. 2) PY_Script> PYMongo_Script ('url = 'mongodb: // {0}: {1} /'.format (selbst.host, self.port)')> Mongodb: 27017. 3) Index.html> NodeJS> Mongodb funktioniert gut. Also 2 ist der Übeltäter, wenn self.host von localhost zu katch

+0

wechselt Sie 'CGI-Seite' und' local service' Adresse gemischt. Erzeuge eine lokale Schleife, kann keine mongodb Skripte extern aufrufen (hat einen großen Sicherheitsgrund). Kann Ausgang nicht ganze Zugangsdatenbank nennen! Nur 'localhost' erlaubt, ansonsten können Datenbankinjektionen nicht blockiert werden. – dsgdfg

Antwort

0

So war das Problem Firewall. Das Öffnen des Ports dort deckte das Problem auf. Ich schreibe es hier, falls jemand anders steckenbleibt wie ich

0

Nicht klar, wie Sie Mongo von Ihrem Web anrufen, aber da Sie es in Art von docker-compose "Netzwerk" ausführen, haben Ihre Mongo einen Hostnamen - 'Mongodb' So sollten Sie Ihr Web auf diese verweisen , nicht localhost

+0

yep das ist was NodeJs in meinem Code und Pymongo braucht explizit IP/Hostname. – katch

Verwandte Themen