Tag: docker

MONGO_URL与捆绑的“meteor运行 – 生产”

也许我的问题是这个重复,但我觉得它增加了一些细节,使其有所不同。 我目前有一个meteor泊坞窗设置,基于节点:0.10图像,首先捆绑应用程序,并运行“节点main.js”作为其CMD。 该映像还安装了Meteor,并使用其命令来引导环境并安装必要的软件包。 对我来说,如果不使用node:0.10,我可以使用更小的Linux映像,并简单地安装curl / git / meteor,从而大大简化映像。 删除构build步骤将进一步简化的事情,因为基于我的理解“meteorbuild设”没有手段不build立移动应用程序,如果他们configuration,但不需要(即如果我通常build立Android / IOS应用程序,我不能不build立他们,如果我只是想要一个捆绑)。 另外,我的开发环境已经使用了MONGO_URL和一个容器化的MongoDB实例,所以在开发时我甚至没有使用本地数据库。 那么,“meteor run –production”与一组MONGO_URL和“node main.js”有什么区别呢? 在另一个情况下会发生什么? 特别是,“meteor跑 – 生产”是否检测到MONGO_URL的存在,而不是启动一个单独的,未使用的mongod? 我清楚地看到MONGO_URL所指向的数据库中的数据,但是我不确定meteor命令是否独立运行并浪费CPU周期/ RAM。 基于前面的问题,我收集它仍然轮询文件系统的变化。 但是这只是在Linux下使用inotify,我认为这是一个相当小的性能打击是正确的? 我想,如果我需要从我的服务器中获得每盎司的性能,那么捆绑就是要走的路。 但是如果使用MONGO_URL设置运行“meteor运行 – 生产”,则只会产生较小的性能下降,同时极大地简化了我的设置,所以简化我的Docker文件并统一我的开发/生产设置可能是值得的。 谢谢。

在docker容器中运行nodeJS应用程序,selenium和webdriver.iotesting

我正在尝试使用我的节点应用程序进行一些webdriver.iotesting,这是一个泊坞窗图像。 所以我到目前为止做的是: 1)通过在我的ubuntu服务器上运行这个来获取selenium服务器: $ docker run -p 4444:4444 selenium/standalone-chrome 这给了我运行的容器'ubuntu_selenium_1'( $ docker ps docker $ docker ps ) 2)构build节点应用程序docker image,在后台运行节点应用程序,并运行e2e.jstesting文件 在我的gitlab-ci.yml中,我正在做 – docker build -t core:test -f Dockerfile.testing . – docker run –rm core:test 这不会给我任何输出。 没有预期的标题和错误消息。 那么我做错了什么? 有一个正在运行的selenium服务器,有后台加载的节点应用程序,启动e2e.jstesting文件。 我错过了nodeJS应用程序,webdriver和selenium的连接… Dockerfile.testing FROM core:latest # Copy the test files COPY docker-entrypoint.sh / COPY e2e.js / # Get […]

我可以使用MongoDb驱动程序从node.js调用rs.initiate()和rs.Add()吗?

在使用Docker和Kubernetes时,我正在寻求通过边框自动设置MongoDb副本集的过程。 上面的设置不是非常重要的 ,它归结为我需要能够调用mongo副本集命令(例如rs.initiate() , rs.add('anotherserver') , rs.conf() , rs.reconfig()等)从一个node.js应用程序。 注意:它不一定要来自节点应用程序,如果有人知道完成相同的事情的另一种方式,请分享您的想法。 更新:我能够得到这个工作,并已成为其他人使用的边车开源。 https://github.com/leportlabs/mongo-k8s-sidecar https://registry.hub.docker.com/u/leportlabs/mongo-k8s-sidecar

如何将VS代码附加到在泊坞窗容器中运行的节点进程

我试图将Visual Studio代码debugging器附加到在Docker容器内运行的node.js应用程序。 我开始像这样的应用程序: node –debug-brk app.js 我在docker-compose.yml公开debugging器端口: app: build: . working_dir: /code volumes: – .:/code command: npm run debug ports: – "3004:3000" – "5858:5858" 我的launch.json如下所示: { "version": "0.1.0", "configurations": [ { "name": "Attach", "type": "node", "address": "localhost", "port": 5858 } ] } 现在,当我启动应用程序并附加debugging器,这将正确连接(我可以看到在debugging器用户界面中闪烁的值),但它会停止,告诉我以下内容: Error opening 'app.js' (File not found: /code/app.js). 这是因为docker-compose.yml不会在root中挂载应用程序,而是在/code (请参阅docker-compose.yml volumes ),VS代码被突然偏移所困扰。 当我运行应用程序之外的容器(即本地,没有偏移量),它的工作方式和预期的一样,我可以按照预期使用debugging器。 […]

Docker DNS getaddrinfo ENOTFOUND

我正在运行docker-compose和node:4.2.1-wheezy和dnsdock容器。 我在/ etc / default / DOCKER_OPTS="–dns 172.17.42.1"里面有DOCKER_OPTS="–dns 172.17.42.1" 。 当我在我的node.js容器中运行node -e "require('dns').resolve('host_name_here')" ,主机通过172.17.42.1 dns服务器正确parsing。 但是当我运行node -e "require('dns').lookup('host_name_here')"时, ENOTFOUND错误会失败。 问题是, http.request使用dns.lookup而不是dns.resolve 。 文档说 dns.lookup调用getaddrinfo 。 据我了解getaddrinfocaching/etc/resolv.conf,也许它caching空/etc/resolv.conf(但cat /etc/resolv.conf打印nameserver 172.17.42.1 )。 我真的不知道如何解决这个问题。 什么会导致这样的行为? 更新1。 docker -v Docker version 1.7.1, build 786b29d docker-compose -v docker-compose version: 1.4.2 更新2。 我更新了所有的东西到最新版本(docker1.9.0,docker组成1.5.0和节点5.0.0),但问题仍然存在。 所以这是docker-compose.yml,它重现了这个问题: dnsdock: image: tonistiigi/dnsdock volumes: – /var/run/docker.sock:/run/docker.sock ports: – […]

NodeJS + Mysql与Docker组合2

我正在尝试构build一个docker-compose文件来在本地部署连接到mysql服务器的NodeJS应用程序。 我已经尝试了一切(阅读了很多教程和一些问题在这里在Stackoverflow),但我不断收到ECONNREFUSED错误。 这是来自NodeJS的Dockerfile: ##Nodejs FROM node:latest RUN useradd –user-group –create-home –shell /bin/false app ENV HOME=/home/app COPY package.json npm-shrinkwrap.json $HOME/playerground/ RUN chown -R app:app $HOME/* USER app WORKDIR $HOME/playerground RUN npm cache clean && npm install –silent –progress=false USER root COPY . $HOME/playerground RUN chown -R app:app $HOME/* USER app 这是我的Mysql Dockerfile: FROM mysql:latest ENV MYSQL_ROOT_PASSWORD […]

Docker – 为什么这个express.js容器有一个暴露/发布的端口拒绝连接? (使用boot2docker)

在Docker容器中有一个简单的hello world express.js应用程序。 它被设置为在端口8080上运行,docker文件在图像中公开这个端口。 此外,我运行映像时发布端口。 然而,当我试图做一个简单的curl请求,连接被拒绝。 以下是我如何设置这个testing: 我的Dockerfile非常简单: FROM node ADD ./src /src WORKDIR /src # install your application's dependencies RUN npm install # replace this with your application's default port EXPOSE 8080 # replace this with your main "server" script file CMD [ "node", "server.js" ] 而在我的./src目录中,我有一个如下所示的server.js文件: var express = require('express'); var app = […]

在Windows主机上通过Docker执行npm安装

我试图通过docker工具箱在Windows主机上创build一个docker dev工具容器,但是我在运行npm install命令时遇到了一些麻烦。 它在Linux主机上正常工作,但在Windows主机上,我得到了以下错误: npm ERR! Linux 4.1.13-boot2docker npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" npm ERR! node v5.5.0 npm ERR! npm v3.3.12 npm ERR! path /var/www/site/.npm/gulp/3.9.0/package.tgz.e87c24357cd6065ee71ce44c6f23673b npm ERR! code ETXTBSY npm ERR! errno -26 npm ERR! syscall rename npm ERR! ETXTBSY: text file is busy, rename '/var/www/site/.npm/gulp/3.9.0/package.tgz.e87c24357cd6065ee71ce44c6f23673b' -> '/var/www/site/.npm/gulp/3.9.0/package.tgz' npm ERR! npm ERR! If you […]

nginx代理多个节点的应用程序泊坞窗

我正在尝试nginx反向代理多个容器。 我有2个容器,有节点添加一个听8085和其他8086我希望他们访问 node.app1.com node.app2.com 所以我用jwilder / nginx代理:最新将坐在这两个容器的来源,将作为反向代理。 所以这里是我的compose.yml文件。 泊坞窗,compose.yml version: "3" services: node-proxy: build: ./node-proxy container_name : node-proxy restart : always volumes: – /var/run/docker.sock:/tmp/docker.sock:ro ports: – 80:80 – 443:443 node-app1: build: ./app1 container_name : node-app1 restart: always environment: VIRTUAL_HOST: node.app1.com depends_on: – node-proxy node-app2: build: ./app2 container_name : node-app2 restart: always environment: VIRTUAL_HOST: node.app2.com depends_on: […]

使用node.js应用程序启动Docker容器会产生错误; 抱怨PATH

我一直在头撞墙,需要一点帮助。 我有一个从Dockerfile构build的docker容器。 当我尝试运行该容器(交互式[-i]或detached [-d])时,它会产生以下错误: 2014/06/04 21:17:40 exec:“node”:在$ PATH中找不到可执行文件 这是我试图启动容器(由于安全原因通用): sudo docker run -i -t -p port:port containername:containerversion node /path/to/node/app/nodeapp.js 什么是麻烦和令人困惑的是,当我运行没有附加命令的容器时,我能够进入目录/path/到/节点/应用程序,并运行: 节点nodeapp.js 这对我来说很好。 另外,当我比较“哪个节点”命令和“echo $ PATH”输出的内容时,我发现一切都是洁净的。 那么,为什么这个人会拒绝承认我是他的主人呢,我应该怎么做呢?