Я новичок в использовании докеров. Я разрабатываю простую форму, которая передает данные, вводимые пользователем в базу данных 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"
Здесь интерфейс командной строки, где код перестает работать. введите описание изображения здесь
Вам нужно связать контейнер mongo в контейнере приложения. Используйте функцию ссылок для этого примера:
version: "3"
services:
web:
build: .
volumes:
- ./:/app
ports:
- "8081:8081"
links:
- mongo
depends_on:
- mongo
mongo:
image: mongo
ports:
- "27017:27017"