Tag: node.js

将HTTP请求代理到另一个泊坞窗容器

我正在编写一个Web应用程序,它将在aws中的ec2实例中运行。 它由两个docker集装箱组成,一个后端和前端集装箱。 后端用作api,写在nodejs中,前端用reactjs写成。 我无法弄清楚如何让集装箱以不仅与aws兼容的方式进行通讯,而且还可以与弹性装载机平衡机一起工作。 具体而言,如果后端严重征税,我希望更多的后端实例在处理来自客户端的请求时被抛弃。 前端将通过http向后端发出请求,后端将响应客户端显示的一些数据(通过reactjs)。 前端泊坞窗容器暴露端口3000,后端容器暴露其各自的泊坞窗文件中的端口3001。 在本地我鼓励像这样的节点通信: // package.json … "proxy": "http://localhost:3001/", … // front-end code requestServerToProcessParameters(parameters) { return new Promise(function(resolve, reject) { request .post('/ProcessCase/DataPoints') .send(parameters) .end(function(err, res) { if (err) { console.log(err); reject(err) } else { resolve(res); } }); }); } 正如你可以看到前端代理请求到后端,但是,这是硬编码,并在一个真正的宁静api前端或后端都不应该彼此了解。 所以我想我的问题是,这些docker集装箱互相沟通的最佳方式是什么? 我真的不希望他们生活在同一个docker-network因为这两个集装箱再也不需要彼此了解。 elastic load balancer能否将我的请求从前端路由到后端?

在Dockerfile中的docker生成错误

当我尝试运行“docker构build”。 或“docker构build – <Dockerfile”,错误如下所示: [root@VM_60_90_centos dtask-ctrip-train-domestic]# docker build . Sending build context to Docker daemon 38.98 MB Step 1 : FROM ubuntu:14.04 —> 132b7427a3b4 Step 2 : MAINTAINER Ke Peng<ke.peng@jingli365.com> —> Using cache —> db9529465f77 Step 3: WORKDIR /opt/app —> Using cache —> 3122f40a8e56 Step 4 :COPY . ./ —> 4d67a5fbf128 Removing intermediate container c2d83602f613 […]

使用docker-compose来build立一个使用mysql的nodejs应用程序

我试图containerize使用mysql数据库的nodejs应用程序。 nodejs应用程序和mysql数据库各自驻留在自己的容器中。 当我没有Docker直接运行它时,这个堆栈工作。 这是我的docker-compose文件: db: image: mysql:5.7 ports: – "3306:3306" expose: – "3306" environment: MYSQL_ROOT_PASSWORD: secret-root MYSQL_DATABASE: dbname MYSQL_USER: web MYSQL_PASSWORD: web app: build: . container_name: app volumes: – ".:/app" ports: – "3001:3000" links: – db environment: DB_HOST: db:3306 DB_USER: web DB_PASS: web DB_PORT: "3306" 节点应用程序的Dockerfile : FROM node:6.10 RUN mkdir /app WORKDIR /app COPY […]

Elastic Beanstalk Docker容器运行Node应用程序提前退出

我有一个Docker的ElasticBeanstalk环境,用于部署运行restify的节点应用程序。 当我们部署新版本的应用程序时,我们发现错误是间歇性的: Command failed on instance. Return code: 1 Output: nginx: [emerg] no host in upstream ":8080" 查看日志时,我们看到容器退出exit 0意味着应用程序正在返回它已成功退出。 Dockerfile: FROM node:alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY .npmrc .npmrc COPY package.json /usr/src/app/ RUN npm install RUN rm -f .npmrc COPY . /usr/src/app EXPOSE 8080 CMD ["npm", "start"]

Dockerized NodeJS应用程序的间歇性缓慢响应

我在ElasticSearch之上有一个简单的NodeJS应用程序(在单独的机器上运行)。 当我使用pm2启动应用程序并按顺序执行一些随机请求时,性能很好。 但是,当我将应用程序Docker化时,大约十分之一的响应非常慢(大约5秒而不是50毫秒)。 这是我的pm2configuration: { "apps": [ { "name": "api", "script": "./app/server.js", "merge_logs": true, "max_restarts": 20, "instances": 1, "max_memory_restart": "1G", "env": { "PORT": 5000, "NODE_ENV": "production" } } ] } 这是Dockerfile: FROM alpine:3.6 ENV srcdir /src RUN mkdir ${srcdir} WORKDIR ${srcdir} RUN apk add –update nodejs nodejs-npm && npm install npm@latest -g ADD package.json ${srcdir} […]

这个Docker / NGINX / Node设置实际上是否按照预期进行了负载平衡?

我正在使用Docker / Node / Nginx设置一个Web服务器。 我一直在玩Docker-compose中的设置,并提出了两个工作解决scheme – 但在负载平衡方面,其中一个可能太好了,无法成立(因为它似乎允许我通过没有创build额外的图像/容器)。 我正在寻找validation,如果我所看到的实际上是合法的,多个图像等不是负载平衡的要求。 解决scheme1(无附加图像): 泊坞窗,compose.yml version: '3' volumes: node_deps: services: nginx: build: ./nginx image: nginx_i container_name: nginx_c ports: – '80:80' – '443:443' links: – node restart: always node: build: ./node image: node_i container_name: node_c command: "npm start" ports: – '5000:5000' – '5001:5001' – '5500:5000' – '5501:5001' volumes: – ./node:/src […]

Docker(组合)安装nodejs打破了NPM

我需要使用nginx和nodejs的容器,所以我拿nginx容器并安装节点: FROM nginx ENV DEBIAN_FRONTEND noninteractive WORKDIR /usr/src/app VOLUME /usr/src/app RUN apt-get update && \ apt-get install -y apt-utils && \ apt-get install -y –no-install-recommends curl sudo wget nano && \ curl -sL https://deb.nodesource.com/setup_6.x | bash – && \ apt-get install -y nodejs git build-essential && \ whereis npm && \ npm install grunt grunt-cli […]

docker呼叫程序(nodejs)从另一个容器(主pipe)

我的docker-compose.yml是这样的: nodejs: build: . dockerfile: Dockerfile-nodejs tty: true ports: – "${SOCKET_PORT}:8081" volumes: – ../node:/var/www/html supervisor: build: . dockerfile: Dockerfile-supervisor tty: true volumes: – ..:/var/www/html – ./config/supervisor/conf.d:/etc/supervisor/conf.d links: – nodejs:nodejs 我创build了supervisor程序configuration文件: [program:nodejs.socket] command=nodejs /var/www/html/node/server.js autostart=true 但是 :我不能运行这个程序,因为主pipe的容器 找不到命令'nodejs' 问题 :我真的可以从supervisor-container运行nodejs,还是必须在nodejs-container中安装supervisor?

在容器中使用kerberos,在openshift / kubernetes内部

我能够得到Kerberos身份validationfunction,为我们的Web应用程序的独立docker安装。 我们的webapp是NodeJS。 但是,当我尝试在OpenShift内部部署POD时,它停止运行。 看起来authentication头文件在翻译中丢失了。 完全相同的集装箱化的应用程序,给我们这个错误在Openshift内,但不是在docker。 错误:{错误:authenticate_gss_server_init(gss_acquire_cred):未指定的GSS失败。 次要代码可能提供更多信息:找不到匹配http / @代码的关键表项:-1} 这没有任何意义,因为我创build了SPN并从AD中导出,并将其添加到hosts /etc/krb5.keytab文件中。 我们尝试了其他方法,将POD附加到域。 我不相信这是一个真正的解决scheme,更多的是用于testing目的。 一旦我们将PODjoin到域名中,并将SPN拉下。 我们没有收到这个错误,我们只是没有收到任何validation头。 如果我运行kinit,我可以成功提供凭据或密钥表文件并获得一张票。 所以我知道Kerberos本身似乎在运作。 只是不是NodeJS库。 在此澄清,我不是开发人员创build这个应用程序,但是如果需要,我可以与他们交谈。

无法在Virtualbox上的package.json中运行$(git rev-parse –short HEAD)

我有一个包含这个脚本的package.json: "scripts": { "docker-build": "docker build -t url.com/repository:$(git rev-parse –short HEAD) ." } 我使用这个来从mye Docker-images上的Git创build自动标签。 这可以在Mac上运行,但不能在运行Docker Quickstart Terminal的Windows机器上运行。 是否有可能从Windows上的NPM脚本运行$(git rev-parse –short HEAD)命令?