Tag: 快递

当在Docker上运行时,节点JS预期会话未定义,但在MAC上运行良好

我有一个简单的Node JS Web应用程序服务器,允许用户login和发布/编辑一个简单的博客。 我使用Redis作为会话存储,使用CouchDB作为我的数据库。 我在我的MAC上运行一切(Node应用程序,Redis,Couch DB)并使用运行在MAC上的浏览器连接到它( https:// localhost:3000或localhost:3001)。 我可以login,张贴/编辑博客一切工作正常。 上周我尝试dockerizing我的节点JS应用程序。 基本上,我的节点应用程序在Docker容器上运行,但是我的redis和couchdb继续在主机上运行(即我的MAC)。 我已经使用docker机器dockerize节点的应用程序。 Docker机器(Docker VM)的IP为: 192.168.99.101 我的MAC地址: 192.168.0.100 我连接我的浏览器( https://192.168.99.101:3000或192.168.99.101:3001 ),我看到login页面。 然后我inputlogging凭证。 我的浏览器将页面发布到docker上的节点应用程序。 节点应用程序读取用户,从CouchDB(运行在MAC主机上)passwd并成功validation密码是否正确。 但是,节点服务器无法从POST请求对象获取有效的会话,因此无法保存会话。 我经历了很多关于这个主题的stackoverflow和其他文章,没有任何帮助。 我已经确定networking不是问题。 即,我可以使用curl命令从docker shell访问redis和couchdb。 是否将我的浏览器连接到不同的物理IP导致此问题? 我应该切换到域名? 我想更好地理解这里发生了什么。 感谢你的帮助。 初始化: const express = require('express'); const bodyParser = require('body-parser'); var app = express(); const http = require('http'); const https = require('https'); const mustache […]

如何更改ecs自动缩放的express.js微服务应用程序

这是我的集装箱化的微服务应用程序和工作stream程。 特拉维斯从git拉代码,build立docker形象,并推到ECR 。 在成功的Travis版本上使用aws cli更新ECS任务和服务,使用新的图像标签。 每个开发和分段集群都有一个实例。 对于prod群集,我可以有多个实例,但每个dev和分段群集不能多于1个实例。 该解决scheme有10个微服务,rabbitmq和mysql。 (网关,API等)。 情景:如果我的web应用程序或任何其他容器被高度使用,我想通过在同一ec2实例中自动创build多个容器来扩展。 (实例有足够的内存和内存)。 目前我硬编码的Web应用程序端口为3000.我的express.js代码应如何改变以下? dynamic绑定webapp和api的端口。 其中负载均衡。 configuration自动缩放以使其自动发生。 另外:这可以使用Ansible来实现吗? 怎么样? 我需要缩放容器,而不是集群或实例。

用Express和Docker暴露3000以外的端口

我使用Docker来运行一个快速应用程序,一切都很好,如果我在端口3000上运行它。我使用的Dockerfile是 FROM node:boron # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies COPY package.json /usr/src/app/ RUN npm install # Bundle app source COPY . /usr/src/app EXPOSE 3000 CMD ["npm", "start" ] 我现在想要在端口3500上运行它。我调整了Dockerfile FROM node:boron # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies COPY package.json […]

在Docker容器中反映代码更改

我有一个基本的Hello World Node应用程序写在快递上。 我刚刚通过在应用程序根目录中创build一个基本的dockerfile来docker化这个应用程序。 我创build了一个docker镜像,然后运行该镜像在运行的容器中运行它 # Dockerfile FROM node:0.10-onbuild RUN npm install EXPOSE 3000 CMD ["node", "./bin/www"] sudo docker build -t docker-express sudo docker run –name test-container -d -p 80:3000 docker-express 我可以访问Web应用程序。 我的问题是..当我更改我的应用程序的代码,例如更改'hello world'到'hello bob',我的更改不会反映在正在运行的容器中。 更新容器中的更改是一个好的开发工作stream程? 当然,我不应该删除和重build每次更改后的图像? 谢谢 :)