Angular 角度5 nginx mongoose docker错误\u空\u响应
通过下面的设置,我可以看到我的网站,但是当我尝试注册时,我得到了一个ERR_EMPTY_响应 注册时,我向API.js发出HTTP请求 它在user.js中创建/更新模式 这在不使用Docker/nginx时正常工作。 我尝试直接连接到容器图像“mongo”,我尝试了0.0.0.0:27017 ,但我感觉我的app.js最初并没有连接到Mongodb。 即使到/main/profile等的路由工作正常。所以我假设app.js是通过index.html调用的 我有一种感觉,这是一件小事,使这项工作,但现在花了几个小时,我挣扎。我没有使用cors,因为我使用的是nginx。我对这些概念很陌生,但我认为nginx作为反向代理不使用cors 在docker-compose.yml中,当我将卷的目录更改为不存在的目录时,没有任何更改,我仍然可以看到我的网站,好像它什么也不做,但是当我删除句子时,它会给我一个失败,因此它被调用。不完全确定卷在此文件中的作用 docker ps为我提供以下输出:Angular 角度5 nginx mongoose docker错误\u空\u响应,angular,docker,nginx,mongoose,Angular,Docker,Nginx,Mongoose,通过下面的设置,我可以看到我的网站,但是当我尝试注册时,我得到了一个ERR_EMPTY_响应 注册时,我向API.js发出HTTP请求 它在user.js中创建/更新模式 这在不使用Docker/nginx时正常工作。 我尝试直接连接到容器图像“mongo”,我尝试了0.0.0.0:27017 ,但我感觉我的app.js最初并没有连接到Mongodb。 即使到/main/profile等的路由工作正常。所以我假设app.js是通过index.html调用的 我有一种感觉,这是一件小事,使这项工作
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f58507ed0205 meanchat_web "nginx -g 'daemon ..." 55 seconds ago Up 54 seconds 0.0.0.0:80->80/tcp meanchat_web_1
cddfd8180f1b meanchat_node "nginx -g 'daemon ..." 2 hours ago Up 55 seconds 80/tcp, 0.0.0.0:3000->3000/tcp meanchat_node_1
79a013dd4e51 mongo "docker-entrypoint..." 2 hours ago Up 55 seconds 0.0.0.0:27017->27017/tcp meanchat_mongo_1
app.js
var mongo= require('mongodb');
//var cors = require('cors');
var mongoose = require('mongoose');
var connect = require('./models/user')
connect.connect('mongodb://localhost/loginapp');
var db = mongoose.connection;
user.js
module.exports.connect = function(mongoUri, promiseLib){
var mongoDB = mongoose.connect(mongoUri);
return mongoDB
};
DockerFile:
### STAGE 1: Build ###
# We label our stage as ‘builder’
FROM node:8.1.4-alpine as builder
COPY package.json package-lock.json ./
## Storing node modules on a separate layer will prevent unnecessary
pm installs at each build
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app
WORKDIR /ng-app
COPY . .
## Build the angular app in production mode and store the artifacts
in dist folder
RUN $(npm bin)/ng build --prod
### STAGE 2: Setup ###
FROM nginx:1.13.3-alpine
## Copy our default nginx config
COPY nginx/default.conf /etc/nginx/conf.d/
## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*
## From ‘builder’ stage copy over the artifacts in dist folder to default
nginx public folder
COPY --from=builder ./dist /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
docker-compose.yml
version: '3'
services:
web:
build: ./
ports:
- "80:80"
links:
- node
volumes:
- "./dist :/usr/share/nginx/html"
node:
build: ./
ports:
- "3000:3000"
links:
- mongo
mongo:
image: mongo
ports:
- "27017:27017"
梅因酒店
我可以从compose输出中看到,您的
app.js
中没有正确连接mongo
更改此行connect.connect('mongodb://localhost/loginapp');代码>到
connect.connect('mongodb://mongo/loginapp');代码>
然后运行docker compose build
和docker compose up
,它应该连接。图像mongo未连接
你应该使用
connect.connect('mongodb:27017//localhost/db');
要连接到数据库。我尝试了您的两个选项,但结果似乎相同,我再次发送了输出。我确实做了你提到的docker compose构建和docker compose构建
为了注册到mongodatabase,我正在对api执行以下操作
let url = 'http://localhost:3000/api/register';
return this.http.post(url, user)
我可以通过执行以下操作连接到容器中的mongodbmongo://0.0.0.0:27017 从D:/mongodb/bin文件夹。它确实给了我一个警告:没有为数据库启用访问控制
我关掉了防火墙,没有抗病毒药物
我在谷歌上搜索了我收到的访问控制警告,这似乎表明我需要在mongodb上创建一个授权帐户?
即使在没有docker/nginx的情况下,使用Mongoose也需要这样做,我没有这个问题。也许这与mongodb的形象有关
我通过登录数据库添加了一个管理员帐户:
$use LOGINAP
$db.createUser(
{
用户:“用户名”,
密码“,
角色:[{role:“root”,db:“admin”}]
})
现在我可以在没有acces control is not enabled(访问控制未启用)消息的情况下连接到数据库,但是当我尝试注册时,仍然得到相同的ERR\u empty\u响应。那么,有没有办法完全摆脱访问控制,或者我必须在mongoose的模式中添加一些东西,以便在LoginApp上尝试更改或创建一个用户时,它能够正确地进行身份验证
例如newUser.save现在可能无法工作,因为它需要单独的身份验证
下面的图片是我现在得到的,但是访问猫鼬数据库仍然不起作用
我尝试了上述方法,但没有效果,我添加了一个usera帐户以解决用户允许的访问问题,该问题现已消失,但在尝试访问mongodb服务器时,我仍然收到一条err empty消息。是否有办法关闭mongodb上的访问控制,或者mongoose无法在mongodb上工作的原因是什么。当它登录mongodb时,你能给出堆栈跟踪吗?如果不看到错误,真的很难帮上忙。嗨,迈克。我将尝试找出如何获取stacktrace,当涉及到http调用时,我从浏览器控制台得到的警告通常提供很少的信息。有没有办法从服务器api.js获取更多stacktrace信息?例如,当我将一个console.log放在api调用的方法中时,我根本看不到日志。我不擅长调试,因为您可能会看到未能加载资源:net::ERR_EMPTY_RESPONSE main.1562976…bundle.js:1 t error:ProgressEvent{isTrusted:true,LengthComputeable:false,loaded:0,total:0,type:“error”,…}头:e{normalizedNames:Map(0),lazyUpdate:null,头:Map(0)}消息:“Http的失败响应”(未知url):0未知错误”名称:“HttpErrorResponse”确定:错误状态:0状态文本:“未知错误”url:null proto:ObjectHi Roman,刚刚注意到在输出中,它是关于dbpath=data/db的,我以为你指的是数据库名loginapp。因此在我的例子中,我创建了一个loginapp(使用loginapp)正确的行是:connect.connect('mongodb:27017//localhost/db/loginapp')吗?
mongo:
environment:
- MONGO_INITDB_ROOT_USERNAME=username
- MONGO_INITDB_ROOT_PASSWORD=password
image: mongo
ports:
- "27017:27017"