docker-compose работает только на моем сервере mongodb, но не на моем js-файле

1

Я новичок в использовании докеров. Я разрабатываю простую форму, которая передает данные, вводимые пользователем в базу данных mongodb, и перенаправляет его/ее на страницу с благодарностью html. Он отлично работает на моем локальном хосте, но когда я его закрою, он не работает. Дело в том, что мой код отлично работает на Mac, но не на ОС Windows. Любая помощь будет оценена.

Вот мой код js:

var express = require('express');
var app = express();
var fs = require('fs');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var MongoClient = require('mongodb').MongoClient;

app.use(express.static(__dirname + '/../public'));
app.get('/', (req,res)=> file = fs.createReadStream(__dirname + '/clientlogin.html').pipe(res));
app.get('/thanks', (req,res)=> file = fs.createReadStream(__dirname + '/formthanks.html').pipe(res));
app.post('/', urlencodedParser, function(req,res){
    var firstname = req.body.firstname;
    var lastname = req.body.lastname;
    var email = req.body.email;
    var phonenumber = req.body.phonenumber;
    var pass = req.body.password;

// Use connect method to connect to the server
var url = "mongodb://mongo:27017/clientdb";
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var obj = {
        'FirstName': firstname,
        'LastName': lastname,
        'Email': email,
        'PhoneNumber': phonenumber,
        'Pass': pass
    };
    db.collection("myclients").insertOne(obj, function(err, res) {
      if (err) throw err;
      console.log("1 client registered!");
      db.close();
    });
    res.redirect('/thanks');
});

});
app.listen(8081, function(){
    console.log("Listening on port 8081");
});

Мой код package.json

{
  "name": "loginpage",
  "version": "1.0.0",
  "description": "login page",
  "main": "signupmongo.js",
  "scripts": {
    "start": "node signupmongo.js"
  },
  "author": "David",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.2",
    "express": "^4.16.2",
    "fs": "0.0.1-security",
    "mongodb": "^2.2.33",
    "mongoose": "^4.13.4"
  }
}

Мой докер файл

FROM node:argon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8081
CMD ["npm", "start"]

Мой файл docker-compose.yml

version: "3"
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "8081:8081"
    depends_on:
      - mongo
  mongo:
    image: mongo
    ports:
      - "27017:27017"

Здесь интерфейс командной строки, где код перестает работать. введите описание изображения здесь

Теги:
docker
docker-compose

1 ответ

0

Вам нужно связать контейнер mongo в контейнере приложения. Используйте функцию ссылок для этого примера:

version: "3"
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "8081:8081"
    links:
      - mongo
    depends_on:
      - mongo
  mongo:
    image: mongo
    ports:
      - "27017:27017"
  • 0
    Спасибо за вашу помощь @Tamas. Влияет на изменения, которые вы рекомендовали, все равно без разницы. Я добавил снимок того, где код перестает работать в вопросе. Я использую Docker версии 17.09.0-ce, сборка afdb6d4
  • 0
    @ Кингсли, что за сообщение об ошибке?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню