Tag: node.js

设置USER后,无法连接到docker容器中的nodejs服务器

我有一个Dockerfile,以root身份运行时工作正常。 如果我添加一个非特权用户,它将运行: docker ps (我改变了容器名称) f63a4ae42ba9 nonroot "sh /app/docker-st…" 16 minutes ago Up 16 minutes 0.0.0.0:3002->3002/tcp nonroot 4bd547b40246 root "sh /app/docker-st…" 3 hours ago Up 3 hours 0.0.0.0:3003->3002/tcp root 但是我没有得到服务器响应。 看起来它可以连接。 wget http://localhost:3002/stats –2017-07-20 14:40:27– http://localhost:3002/stats Resolving localhost… ::1, 127.0.0.1 Connecting to localhost|::1|:3002… connected. HTTP request sent, awaiting response… No data received. Retrying. 以root身份运行的容器工作正常: wget […]

Docker-Compose在主机Nodejs + Express上发布端口

我已经build立了一个docker-compose文件,并且想从我的主机上访问localhost:3000上的nodejs应用程序,但是发布这个端口似乎没有工作。 当我运行组合一切似乎工作正常,我得到确认Listening on port 3000 。 但是,当我从浏览器以及curl去到localhost:3000 ,我得到一个未find或超时响应。 我在这里错过了什么? 我的NodeJS服务器: var server = app.listen( process.env.PORT || 3000, function(){ console.log('Listening on port ' + server.address().port); }); 我的Docker-Compose.yml文件: version: "3" services: api: image: baum-test:v0 ports: – "3000:3000" networks: – webnet mongodb: image: mongo:latest ports: – "27017:27017" volumes: – ./data:/data deploy: placement: constraints: [node.role == manager] networks: – […]

使用Mocha + TypeScript + Docker远程debuggingnode.js。 debugging器不反映实际的执行?

我在WebStorm工作,如果这可能是问题(但似乎不太可能)。 我在docker容器上运行以下命令来启动集成testing,我想在IDE内远程debugging。 NODE_ENV=test TS_NODE_DISABLE_WARNINGS=1 ./node_modules/.bin/mocha –debug-brk –compilers ts:ts-node/register test/integration/**/*.spec.ts", 执行此操作后,节点进程等待端口8080上的debugging连接。 集成testing看起来像这样: import sinon = require('sinon'); import chai = require('chai'); import supertest = require('supertest'); import sinonChai = require('sinon-chai'); const expect = chai.use(sinonChai).expect; import {server} from '../../src/server'; import {authenticate} from '../../src/middleware'; const routeContent = 'whatever'; const authenticatedRoute = '/authenticatedRoute'; describe('The authenticate middleware', () => { before(() => […]

docker中的node.js – 找不到绑定文件… / bcrypt_lib.node

我有一个自定义的node.js应用程序在VM中运行良好,但是当我尝试在docker中运行它时,出现错误 Error initializing middleware Error: Could not locate the bindings file. Tried: → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/Debug/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/Release/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/out/Debug/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/Debug/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/out/Release/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/Release/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/default/bcrypt_lib.node → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/compiled/4.8.4/linux/x64/bcrypt_lib.node at bindings (/usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:88:9) at Object.<anonymous> (/usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/bcrypt.js:3:35) Dockerfile如下所示 FROM node:4-onbuild # Create app directory WORKDIR /usr/src/app # Install app dependencies COPY package.json . ENV PORT 8080 […]

为什么nodejs请求调用两次

我正在开发Node+ ansible模块,我需要通过ansible script来build立mysql docker镜像。 当我build立图像请求多次调用,如果请求get second time browser去connection was reset 。 注意:如果第二次请求完美地构build图像。 首先要求问题,同时浏览器去connection was reset. 我做了什么: mysql.js: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var bodyParser = require('body-parser'); var app = express(); var Ansible = require('node-ansible'); var yaml = require('node-yaml'); var timeout = require('infinite-timeout'); // view […]

将Web客户端连接到dynamic产卵docker容器

我正在使用nodejs编写一个在线编码网站。 当用户请求时,我产生一个docker容器编译和运行他们的代码,然后删除它。 docker容器经过一段时间后停止并移除。 运行在容器内部的可执行程序使用客户端JavaScript库和在双方的docker集装箱上打开的特定端口与客户端浏览器进行实时通信。 (参考我使用这个JavaScript库http://robotwebtools.org/tools.html )这适用于单个用户。 然而,我需要一个解决scheme,当有多个同时用户,因此多个docker容器同时产生(由于多个同时请求),必须在不同的端口。 我需要一种方法来获取客户端JavaScript代码与唯一端口上相应的docker容器进行通信。 注意我正在为一台机器上的数十个用户同时寻找解决scheme,而不是大规模的扩展。 我可以想到两种方法来做到这一点。 (一)打开一些公共端口,让nodejs用一个唯一的端口产生docker容器,把这个唯一的端口发送给客户端代码。 我认为这会起作用,而且相当容易实施。 我不认为安全是一个问题,因为集装箱只是简单地连接到港口。 但是,有什么我忘记了? (二)只打开一个公共端口,让nodejs产生一个独特的端口的docker集装箱,并让nodejs侦听公共客户端端口,并根据一些用户ID转发到正确的docker集装箱端口? 我甚至不知道如何在nodejs中做到这一点? 有什么我可以用来做到这一点? 这些都适合吗? 还是有另一种解决scheme? 如果B适当,我将如何识别每个用户的stream。 请注意,如果相关,我打算使用nginx作为反向代理。

Docker组装'Exec格式错误'加载一个库

我正在用docker-compose开发一个多模块docker nodejs应用程序。 模块需要的自然节点包有个问题。 看来它不能执行它。 我试图用RUN命令重新编译它,但没有任何改变。 以下是试图运行docker-compose的日志: web_1 | /app/web-server/node_modules/natural/lib/natural/classifiers/classifier.js:32 web_1 | if (e.code !== 'MODULE_NOT_FOUND') throw e; web_1 | ^ web_1 | web_1 | Error: Error loading shared library /app/web-server/node_modules/webworker-threads/build/Release/WebWorkerThreads.node: Exec format error web_1 | at Error (native) web_1 | at Object.Module._extensions..node (module.js:597:18) web_1 | at Module.load (module.js:487:32) web_1 | at tryModuleLoad (module.js:446:12) web_1 | […]

Docker-compose:https express服务器之间的连接

两个Express服务器在docker-compose下的docker容器中运行。 version: '2' services: server-1: build: . ports: – "8080:8080" links: – db volumes: – .:/www – /www/node_modules server-2: build: ../server-2 links: – api-server volumes: – ../server-2/:/www – /www/node_modules server-2通过套接字连接使用以下地址连接到server-1 : http://server-1:8080 (socket.io库)。 一切都很完美。 但是,如果我试图在server-1内使用https模块而不是http ,则server-2无法连接到它。 我已经尝试了几乎所有变化的端口(8080到443等)和改变套接字连接地址协议从http到https 。 只有一个variables一直存在:我可以在http和连接build立的任何端口上运行服务器,但是一旦它变成https ,它就会停止连接。

在docker中运行的节点发送来自外部容器的req,从服务器获得空的答复

当发送req为curl时:0.0.0.0:8000 获得“欢迎” 但是当发送curl:0.0.0.0:8000 / v1 /主题从服务器得到空的答复

docker-为nodeJS上的Postgres组成ECONNREFUSED

这个错误与ECONNREFUSED相同。 但是执行方式不同,我会在这里再提一个问题。 这是docker-compose.yml文件 version: '3' services: server: build: context: . volumes: # Mounts the project directory on the host to /app inside the container, # allowing you to modify the code without having to rebuild the image. – .:/app # Just specify a path and let the Engine create a volume. # Data present in […]