docker – 撰写只运行我的MongoDB服务器,但没有运行我的JS文件

我是新来的使用docker。 我正在开发一个简单的表单,将用户input的数据提交到一个mongodb数据库,并将其redirect到一个html页面。 它在我的本地主机上工作完美,但是当我dockerize它,它不起作用。 事情是,我的代码在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" } } 

我的dockerfile

 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" 

这里是代码似乎停止运行的命令行界面。 在这里input图像说明

您必须链接您的应用程序容器中的mongo容器。 使用此示例的链接function:

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