Tag: docker

使用docker run命令将parameter passing给Dockerfile中的CMD

我是Docker的新手,我很难按照自己的意愿设置Docker容器。 我有一个nodejs应用程序可以采取两个参数,当启动。 例如,我可以使用 node server.js 0 dev 要么 node server.js 1 prod 在生产模式和开发模式之间切换,并确定是否应打开群集。 现在我想用参数创builddocker映像来做类似的事情,我目前唯一能做的事情就是调整Dockerfile来创build一个行 CMD [ "node", "server.js", "0", "dev"] 和 docker build -t me/app . build造docker。 然后docker run -p 9000:9000 -d me/app来运行docker。 但是,如果我想切换到prod模式,我需要将Dockerfile CMD更改为 CMD [ "node", "server.js", "1", "prod"] , 我需要杀掉在9000端口听的老人并重build图像。 我希望我能有类似的东西 docker run -p 9000:9000 environment=dev cluster=0 -d me/app 创build一个映像并运行带有“environment”和“cluster”参数的nodejs命令,所以我不需要更改Dockerfile并重新构builddocker。 我怎样才能做到这一点?

Docker和node_modules – 把它们放在一个图层或一个卷中?

我正在计划一个docker开发环境,并怀疑将npm install作为caching层是否是一个好主意。 据我所知,有很多方法可以优化dockerfiles以避免重buildnode_modules,除非package.json发生更改 ,但是我不想每次package.json更改时都完全重buildnode_modules 。 一个新鲜的npm install需要5分钟以上,并且对package.json更改经常发生。 对于经常检查pull请求和转换分支的人来说,他们可能不得不每天忍受5分钟的npm installs 。 在像我这样的情况下,将node_modules安装到一个卷中是否会更好,以便它在整个构build中保持不变,对package.json小改动不会导致整个依赖树被重build?

如何设置pipe理员运行一个shell脚本

设置一个Dockerfile来安装节点prereqs,然后设置supervisor以运行最后的npm install命令。 在VirtualBox下的CoreOS中运行Docker。 我有一个Dockerfile ,可以正确设置所有的东西: FROM ubuntu MAINTAINER <<Me>> # Install docker basics RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update RUN apt-get upgrade -y # Install dependencies and nodejs RUN apt-get update RUN apt-get install -y python-software-properties python g++ make RUN add-apt-repository ppa:chris-lea/node.js RUN apt-get update RUN apt-get install -y […]

Docker:如何使用selenium服务器做nightwatchJStesting?

我不知道如何使用我的./bundle应用程序来运行selenium服务器,它的文件位于自定义e2e:latest的./bundle文件夹中。 我想我必须将selenium服务器和webdriver chrome添加到e2e:latest的Dockerfile中e2e:latest图像,不是吗? 这是我迄今为止所做的: 我用NodeJS和nightwatchJS创build了一个基于java:8-jre的docker镜像: Dockerfile FROM java:8-jre ## Node.js setup RUN curl -sL https://deb.nodesource.com/setup_4.x | bash – RUN apt-get install -y nodejs ## Nightwatch RUN npm install -g nightwatch 这个图像然后用于testing: gitlab-ci.yml build: stage: build tags: – deploy script: – docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY – meteor npm install –production – meteor build […]

Docker容器和Node.js集群

我有一个运行Node.js的api服务器,使用它的集群模块,testing看起来相当不错。 现在我们的IT部门想要转向使用Docker容器,但是我从来没有真正使用Docker容器。 但我有一个想法,Node.js应用程序在单个Docker进程中运行,所以集群模块不会是最好的,因为单个Docker进程可能是设置的一个慢点,直到请求在该进程中被分离由集群模块。 那么真正的运行Docker容器的集群是否比使用Node.js的集群模块更加重要呢? 如果我有一个容器集群,将使用Node.js的集群模块让我什么? api端点的返回时间less于0.5秒(通常比较less)。 我正在使用MySQL(相信它是一个单一的服务器,目前没有更多),所以应该没有任何理由使用数据完整性解决scheme。

在Amazon ECS上的Docker中运行Node API的最佳方式是什么?

随着Docker和Amazon ECS等调度和编排服务的出现,我试图确定部署Node API的最佳方式。 抛开Docker和ECS,我想通过创build一个主进程和多个工作负载处理器,利用Node集群库在文档中build议的asynchronous错误的情况下正常处理崩溃节点应用程序。 集群方法的好处之一就是为每个可用的CPU创build一个工作者处理器。 但是这在docker世界是否有意义呢? 在单个docker容器中运行多个节点进程是否有意义,这个容器将被缩放到ECS上的EC2实例集群中? 如果没有Node集群方法,我将失去正常处理错误的能力,所以我认为至less应该为每个docker容器运行一个master和一个worker进程。 我仍然对ECS的任务定义中要定义的CPU数量感到困惑。 ECS文档中提到了每个CPU有1024个单元的容器实例; 但这与EC2计算单元不是一回事,是吗? 就这样说,我需要select适当数量的vCPU的EC2实例types来实现这个权利? 据我所知,实现最佳configuration可能需要一定程度的基准testing我的特定节点API应用程序,但是如果能够更好地了解从哪里开始,那将是非常棒的。 也许有一些学习/研究我需要做? 任何指引我的path或build议,将不胜感激! 编辑:回顾我的具体问题: 在Docker容器中运行一个主/从集群来实现优雅的崩溃是否合理? 使用与Cluster文档中描述的几乎相同的代码是否有意义,通过require('os').cpus().length来'缩放'到可用的require('os').cpus().length ? 在ECS任务定义的文档中,Amazon对于cpus设置的含义是什么意思,一个container instance has 1024 units per CPU ? 那么这个环境会是一个好的起点呢? 基于上述情况,针对旨在服务Node API的ECS集群,实例types有什么好的起点? 那么可用的vCPU如何影响以前的问题呢?

如何在docker构buildDockerfile时cachingRUN npm install指令

我目前正在为我的应用程序开发一个Node后端。 当dockerizing它(docker build)时,最长的阶段是RUN npm install 。 RUN npm install指令代表每个小型服务器代码更改,通过使开发人员等待每次完成构build来影响生产力。 我发现在应用程序代码所在的位置运行npm install并使用ADD指令将node_modules添加到容器可以解决这个问题,但这远非最佳实践。 这种方式打破了docker化的整体思路,导致集装箱重量增加。 任何其他解决scheme

在Docker中以非root用户身份运行应用程序

在昨天的Shocker消息之后 ,似乎Docker容器内的应用程序不应该以root身份运行。 我试图更新我的Dockerfile来创build一个应用程序的用户,但是改变应用程序文件的权限(虽然仍然是根)似乎并没有工作。 我猜这是因为一些LXC权限没有被授予root用户也许? 这是我的Dockerfile: # Node.js app Docker file FROM dockerfile/nodejs MAINTAINER Thom Nichols "thom@thomnichols.org" RUN useradd -ms /bin/bash node ADD . /data # This next line doesn't seem to have any effect: RUN chown -R node /data ENV HOME /home/node USER node RUN cd /data && npm install EXPOSE 8888 WORKDIR /data CMD […]