Tag: node.js

使用多个Docker容器VS标准节点集群时的性能和可靠性

使用多个Docker容器VS标准节点集群时的性能和可靠性 嗨,我有一个关于我遇到的两个设置的性能,可靠性和增长潜力的问题。 我远离Docker或集群专家,所以任何build议或提示将非常感激。 应用程序 Node v6.9.4上运行的典型MEAN堆栈Web应用程序 。 没有什么奇特的,标准的设置。 我发现的问题和可能的解决scheme a)具有NGINX(反向代理)和NodeJS的标准Linux服务器 b)具有NGINX(反向代理)和NodeJS集群的标准Linux服务器。 使用节点的群集模块 c)使用NGINX的负载均衡器,“Dockerized”NodeJS应用程序克隆3次(3个容器)。 信贷的想法去了Anand Sankar // Example nginx load balance config server app1:8000 weight=10 max_fails=3 fail_timeout=30s; server app2:8000 weight=10 max_fails=3 fail_timeout=30s; server app3:8000 weight=10 max_fails=3 fail_timeout=30s; // Example docker-compose.yml version: '2' services: nginx: build: docker/definitions/nginx links: – app1:app1 – app2:app2 – app3:app3 ports: – "80:80" […]

Docker API NodeJS

我正在使用nodeJS request库来调用一个unix域套接字,特别是Docker API。 这工作正常,并返回容器的列表。 curl –unix-socket /var/run/docker.sock http:/v1.24/containers/json 但是,这返回一个400400 Bad Request ,我不知道为什么 var request = require('request'); request('http://unix:/var/run/docker.sock:http:/v1.24/containers/json', headers="Content-Type': 'application/json" , function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } else { console.log("Response: " + response.statusCode + body) } });

nodejs服务器无法在同一个Docker-Compose yml文件中链接Redis和MongoDB

我build立了一个快速服务器并链接到mongo db和redis db。 我已经分别使用docker run服务器/ mongo / redis和服务器工作正常。 但是,当我使用docker-compose ,它显示错误 redisdb错误:{错误:Redis连接到本地:6379失败 – 连接ECONNREFUSED 127.0.0.1:6379 …. MongoError:第一次连接时无法连接到服务器[localhost:27017] …. 我使用docker ps来检查并且所有三个容器都在运行。 这是我的docker-compose.yml version: "2" services: mongo: image: mongo:latest ports: – "27017:27017" redis: image: redis:latest ports: – "6379:6379" web: build: . links: – mongo – redis depends_on: – mongo – redis ports: – "3000:3000" 这是我如何设置数据库连接 client = redis.createClient({ […]

如何为Redis / RethinkDB指定一个备用公开端口(使用Docker Compose)?

在Docker上实现一个nodejs应用程序,我正在尝试设置它,以便它将响应非标准端口,避免已经运行本地Redis容器或服务的团队成员发生潜在的冲突。 Redis通常运行在6379(不pipedocker或no)。 我希望它听6380.即使我没有在docker-compose文件中,我想用RethinkDB做同样的事情。 我不想为Redis或RethinkDB创build一个新的Dockerfile。 这是我的Docker-Compose文件。 nodejsapp: image: some-node-container container_name: nodejsapp ports: – "5200:5200" #first number must match CHEAPOTLE_PORT env variable for the cheapotle service depends_on: – redis – rethinkdb volumes: – ./:/app environment: – NODEJSAPP_PORT=5200 #must match first port number for cheapotle service above. – REDIS_PORT=6380 #must match first number in redis service ->ports below. […]

如何从Docker容器获取节点的版本?

要获得节点版本 – 我期望运行以下内容: node –version 我使用docker运行以下代码: docker run node:4-onbuild -v 我得到这个: docker: Error response from daemon: Container command '–version' not found or does not exist.. 我的问题是: 如何从docker容器获取节点的版本?

具有节点bcrypt的Docker – 无效的ELF头

我已经尝试从这篇文章和这篇文章的每个解决scheme 运行docker-compose up时,我找不到解决以下错误的解决scheme: module.js:598 return process.dlopen(module, path._makeLong(filename)); ^ Error: /code/node_modules/bcrypt/lib/binding/bcrypt_lib.node: invalid ELF header 这是我最新的尝试docker-compose.yml version: "2" services: app: build: ./client ports: – "3000:3000" links: – auth volumes: – ./client:/code auth: build: ./auth-service ports: – "3002:3002" links: – db volumes: – ./auth-service:/code db: … 而我的validation服务Dockerfile: FROM node:7.7.1 EXPOSE 3002 WORKDIR /code COPY package.json /code RUN npm […]

有Node.js的MongoDB在Docker中运行,但在Windows上不运行

问题 我遇到了类似于死锁的行为,我们的Node.js服务器应用程序对MongoDB实例运行了集成testing。 我们的testing代码和服务器代码都使用Mongoose和node.js驱动程序来访问MongoDB。 testing框架将删除数据库,并在每个testing套件开始时重新创build每个集合的索引(有时也可以是单个testing)。 这在testing过程中会发生很多次。 类似死锁的行为似乎在对db.collection.ensureIndex的一系列调用中发生。 一旦发生这种情况,所有执行都会停止,直到testing超时过期,这会中止testing。 如果我没有超时运行testing,挂起似乎是永远。 在这一点上,我觉得自己正在fla and,很想听到关于debugging方法或寻找线索方向的build议。 非常感谢。 细节 根据MongoDB并发常见问题解答 , ensureIndex在调用时不需要background:true选项ensureIndex需要一个独占的数据库写锁('W')。 不过,我已经通过Mongoosedebugging日志validation了background:true在这些调用中使用了background:true ,例如: mails.ensureIndex({ expires: 1, mailType: 1, readOn: 1 }) { background: true } 但是,MongoDB日志出现(至less对我来说)表明一个独占锁试图: command: createIndexes { createIndexes: "mails", indexes: [ { name: "expires_1_mailType_1_readOn_1", key: { expires: 1, mailType: 1, readOn: 1 }, background: true } ], writeConcern: { […]

如何在docker中为postgres运行sql脚本

我正在关注这个post来运行SQL脚本来创build默认表。 这是我的docker撰写文件 version: "3" services: web: build: . volumes: – ./:/usr/src/app/ – /usr/src/app/node_modules ports: – “3000:3000” depends_on: – postgres postgres: container_name: postgres build: context: . dockerfile: pgDockerfile environment: POSTGRES_PASSWORD: test POSTGRES_USER: test ports: – 5432:5432 这是我的pgDockerfile FROM postgres:9.6-alpine # copy init sql ADD 00-initial.sql /docker-entrypoint-initdb.d/ 这是我的SQL脚本 CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE TABLE IF […]

在Windows上使用nodejs在Docker中装入卷

我尝试在窗口上使用nodejs应用程序在docker容器中装入卷。 当我在cmd上尝试这个命令时: docker运行-it -v C:\ Users \ User \ data:/ stuff:rw ubuntu bash 它工作,容器包含音量。 但是,如果我尝试使用nodejs(dockerode模块)执行此操作,则不起作用。 我的代码: var dockerode = require('dockerode'); var docker = new dockerode(); var stream = require('stream'); docker.createContainer({ Image: 'ubuntu', Cmd: ['ls', 'stuff'], 'Volumes': { '/stuff': {} }, 'Binds': ['C:\Users\User\data:/stuff:rw'] }, function(err, container) { container.attach({ stream: true, stdout: true, stderr: true, tty: true, […]

Docker swarm与NGINX代理和websockets

我不确定这是否可以实现。 我使用以下版本在群集模式下运行docker: 客户端:版本:17.03.0-ce API版本:1.26 Go版本:go1.7.5 Git commit:3a232c8内置:星期二2月28日08:10:07 OS / Arch:linux / amd64 服务器:版本:17.03.0-ce API版本:1.26(最低版本1.12)Go版本:go1.7.5 Git commit:3a232c8内置:星期二2月28日08:10:07 OS / Arch:linux / amd64实验:true 我正在运行一个基于websocket的应用程序在一个NGINX反向代理(也在同一个堆栈使用相同的覆盖networking)的堆栈。但是,我注意到以下错误。 该应用程序是基于节点js的。 当从上游读取响应头时,上游超时(110:操作超时):client:xxxx,server:,request:“GET /socket.io/?EIO=3&transport=polling&t=LiGxq_l&sid=As9AJ2pEHieTGXP6AAAC HTTP / 1.1” “ http://xxxx/socket.io/?EIO = 3&transport = polling&t = LiGxq_l&sid = As9AJ2pEHieTGXP6AAAC ”,host:“”,referrer:“” 显然,客户端套接字连接无法parsing到群中托pipe的服务集群。 是否有Docker Swarm的解决schemeconfiguration,或者它是不可能的? 我没有太多的运气得到任何search解决scheme的命中。 感谢您的任何反馈。 BTW。 服务的单个实例工作正常。