Tag: JavaScript

在运行的Docker容器上testing:我的环境variables在哪里?

背景 我正在运行的docker容器中testing代码。 PM2将过程级别的variables传递给我的应用程序。 虽然我的应用程序运行正常,并且有权访问我在json文件pm2中设置的环境variables,但是我创build的新bash会话用docker exec -it bash来testing它并不能访问这些variables。 根据我通过实验和研究所了解到的,docker不允许修改正在运行的容器中的环境variables。 所以如果我在新的bash会话中运行printenv ,我的variables就不存在了。 我使用npm test (在新的bash会话中) npm test被设置为运行在正在运行的服务器上(我的应用程序部署在当前正在运行的容器中)。 题 我怎样才能获得相同的环境variables,我的进程级别上运行的应用程序在环境级别可用,所以新的bash会话可以可靠地testing我的应用程序? 对于docker来说,我相对比较陌生,可能以这种方式对正在运行的容器进行testing是一种反模式。 我接受另一种方式来尝试这个build议,但我更喜欢做这个“docker的方式”。 谢谢! 我看过的资源 文档显示如何在运行docker exec时手动设置环境variables。 我有足够的variables来使这个繁琐,而且很容易出现人为错误。 这 SOpost是非常相似的,但它假设没有容器已经运行。 我有一个正在运行的容器,我正在testing。 本文解释了docker exec和docker run之间的一些区别

当在主机中运行时,可以看到Ember应用程序,但不在容器中

我正在尝试为本地开发集成一个Ember应用程序。 我有我的Dockerfile中公开的端口4200,3529(实时重新加载)和8443(API)。 我将基于我的图像在节点6.9.4(在项目中指定)。 当我在Docker外运行应用程序时,当我在浏览器中导航到应用程序时,可以看到该应用程序。 当它在Docker中运行时,它只是挂起,页面加载微调器永远旋转。 我把一些日志logging,看起来像服务器根本没有看到请求。 Dockerfile FROM node:6.9.4 # open up the ports we need for the app to run EXPOSE 4200 35729 4080 8443 9999 WORKDIR /usr/src/app ENV PATH=/usr/src/app/bin:$PATH ADD . /usr/src/app RUN set -ex \ && npm install -g ember-cli \ && npm install -g grunt-cli \ && npm install -g bower […]

docker工不在主机上安装依赖关系(node_modules)

当我运行docker-compose build我发现package.json中的依赖关系安装在容器上,而不是我的机器上。 所以后来当我运行docker-compose up我得到错误,依赖没有find,即: Error: Cannot find module 'express' 我的应用程序结构非常简单,如下所示: |____frontend | |____index.html | |____index.js | |____webpack.config.js | |____yarn.lock | |____package.json | |____dev.Dockerfile |____backend | |____server.js | |____yarn.lock | |____package.json | |____dev.Dockerfile |____docker-compose.yml 我的docker-compose.yml: version: "3.3" services: frontend: build: context: . dockerfile: frontend/dev.Dockerfile volumes: – ./frontend:/frontend:cached command: yarn start backend: build: context: . dockerfile: backend/dev.Dockerfile […]

运行docker映像失败

我期望成功运行docker镜像,但无法访问和获取权限拒绝错误,如下所示。 #base image FROM selenium/standalone-chrome # Install Node.js RUN sudo apt-get update RUN sudo apt-get install –yes curl RUN curl –silent –location https://deb.nodesource.com/setup_8.x | sudo bash #Define runtime ENTRYPOINT /app/login.test.js 为什么被拒绝的权限呢? PS:我改变了包含Dockerfile和自动化testingJS文件的cd dir ( cd dir )。

Docker API:在网页中显示容器日志

我正在使用Appersonlabs的https://github.com/appersonlabs/docker.io中的docker.io包在node.js中使用docker web客户端的项目。 为了构build一个完整的客户端,我想将容器日志stream式传输到一个网页。 这是我使用api的路线: app.get('/containers/:id',function(req,res){ console.log('INSPECT CONTAINER WITH ID '+req.params.id); docker.containers.inspect(req.params.id,function(err,infos){ docker.containers.attach(req.params.id, {stream: true, stdout: true, stderr:false, tty:false}, function(err,stream) { console.log(stream); res.render('containers/show.ejs',{container: infos, name: name, stream: stream}); }); }); }); 但是当我console.logstream我有一堆输出信息的大JSON文件。 根据docker的API,我应该如何继续( http://docs.docker.io/en/latest/reference/api/docker_remote_api_v1.10/#attach-to-a-container ) 实施 实现Attach协议的最简单方法如下: 读取8个字节 根据第一个字节selectstdout或stderr 从最后4个字节中提取帧大小 读取提取的大小并将其输出到正确的输出 转到第一步 题 : 我应该如何着手实现呢? 我真的不知道如何开始。 注意:据我所知,我的http请求是正确的,这里是我从API获得的JSON响应的示例: method: 'POST', path: 'http://localhost:4243/v1.7/containers/8196569ecaaf2bbcf726189b60212676ad1351f6ff4df6ebe9deb4743b52e138/attach?stream=true&stdout=true&stderr=false&tty=false', _headers: [Object],

Docker IO错误与本地js文件

我有很难与docker加载本地js文件。 我没有问题在本地计算机上testing,但如果我托pipe它运行在No such file or directory: 'static/js/data.js上的Web服务器No such file or directory: 'static/js/data.js错误。 我的代码组织如下: Root/ application.py static/ js/ data.js templates/ index.html 在application.py我生成文件data.js和从index.html我读文件data.js没有问题<script src="../static/js/data_data.js"></script> 在application.py我使用file = open("static/js/data.js", "w+")创build一个在本地机器上正常工作但不在Web服务器(EC2) 这是我的dockerfile FROM ubuntu:14.04 RUN apt-get update RUN apt-get install python-setuptools -y && DEBIAN_FRONTEND=noninteractive apt-get install python-setuptools -y RUN apt-get install python-pip -y RUN apt-get install python-numpy -y RUN apt-get […]

为什么node_modules在构build之后会从docker中消失?

我模仿在这里find的设置https://github.com/mjhea0/node-docker-workflow 。 使用docker-compose链接2个docker容器(node,redis)。 这里是圆ci文件: machine: services: – docker dependencies: override: – sudo pip install -U docker-compose test: override: – docker-compose run -d –no-deps node – cd node; npm test 这里是我的节点Dockerfile: FROM dockerfile/nodejs RUN mkdir /src RUN npm install nodemon -g WORKDIR /src ADD . /src RUN npm install EXPOSE 3000 CMD npm start 由于chai不能find,testing不断失败。 这是由于构build完成后node_modules消失。 […]

ECR上的WebRTC Kurento Docker镜像

我已经用Docker安装了一个本地Kurento MediaServer,并在本地networking上本地testing了提供的应用程序。 但在我的工作地点,这是行不通的。 客户端可以访问networking应用程序,但我认为mediaserver IP地址不能从安装networking外部访问。 我怎样才能将Docker提供的Kurento提供的mediaserver部署到EC2实例?

Docker从MongoDBlogging日志

我想通过Fluentd将日志从Docker存储到MongoDB中。 这个设置非常简单,但是我正在努力的是如何从支持分页的正确顺序中从MongoDB检索日志。 日志文件的结构是 { _id: ObjectId(…), time: ISODate(…), log: "message" } 日志应该显示从最新到最旧的支持分页。 由于日志已经按照正确的顺序到达,所以在较新的日志之前写入较早的日志。 我的做法是: 首页 – db.logs.find().sort({_id: -1}).limit(10)并保存最后一个_id 下一页 – db.logs.find({_id: {$lt: lastIdFromPreviousPage).sort({_id: -1}).limit(10) 等等 这里的问题是, MongoDB文档说: ObjectId值的顺序与生成时间之间的关系在一秒之内并不严格。 这似乎是一个问题 – 如果我试图find_id低于lastIdFromPreviousPage所有文档,则不能保证在一秒之内文档按照它们被编写的顺序sorting。 即使已经显示在前一页上,前一页中的某些日志也可能包含在结果中。 在MySQL中,如果您通过auto_increment字段来sorting结果,则可以保证结果的顺序是正确的,但是MongoDB呢? 这里的正确方法是什么?

在运行具有端口转发的容器时,没有从node.js代码获取Docker容器的IP地址

我写了一个基本的node.js代码来获取主机的IP。 代码如下所示: var express = require('express'); var os = require('os'); var app = express(); var interfaces = os.networkInterfaces(); app.get('/',function(req,res){ var addresses = []; for (var k in interfaces) { for (var k2 in interfaces[k]) { var address = interfaces[k][k2]; if (address.family === 'IPv4' && !address.internal) { addresses.push(address.address); } } } res.send("IP address of container : […]