首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点-babel在Docker中工作非常慢。

节点-babel在Docker中工作非常慢。
EN

Stack Overflow用户
提问于 2016-03-04 10:53:30
回答 1查看 3K关注 0票数 4

我已经设置了一个用于开发node.js项目的Docker容器。我想使用所有的ES6特性,所以我使用babel-node作为转换程序,但是遇到了一个问题,即堆叠过程在Docker中花费了太多的时间。

我正在从我的主机挂载应用程序目录(这样我就可以在webstorm中编辑),我使用nodemon来跟踪所有的更改并自动重新启动服务器。

代码语言:javascript
复制
 docker build -t lazarev/an_app .
 docker run -d -p 49160:8080 --name map -v $HOME/projects/app:/usr/src/app lazarev/an_app tail -f /dev/null

nodemon -l命令是在一个shell脚本中设置的,这个脚本是在我的Dockerfile中的ENTRYPOINT中设置的。

Dockerfile

代码语言:javascript
复制
FROM node:argon
MAINTAINER Lazarev Alexandr <lazarev@elje-group.com>

RUN mkdir /docker-entrypoint
ADD ./bootstrap.sh /docker-entrypoint

RUN locale -a

EXPOSE 8080

RUN npm install nodemon -g
RUN npm install babel-cli -g

ENTRYPOINT ["/docker-entrypoint/bootstrap.sh"]

bootstarp.sh

代码语言:javascript
复制
 #!/bin/bash
echo "******INSTALL NODE MODULES******"

npm install
date
echo "******RUN THE SERVER******"
nodemon -L
date

packege.json

代码语言:javascript
复制
{
  "name": "app",
  "version": "1.0.0",
  "description": "desc",
  "author": "Lazarev Alexandr <lazarev@elje-group.com>",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "babel-node --presets es2015 --debug server.js"
  },
  "license": "ISC",
  "dependencies": {
    "express": "^4.13.4",
    "mapnik": "^3.5.2",
    "babel-preset-es2015": "^6.6.0"
  }
}

我使用bootstrap.sh的原因可能有些奇怪,但还有其他命令我没有粘贴在这里。

因此,我的问题是,在我对主机进行一些更改之后,nodemon会立即检测到更改,但是重新启动服务器需要大约半分钟的时间。如果不通过babel编译ES6,速度就会快得多。

此外,当我在我的主机上运行相同的项目(我的主机是一个MacbookPro,带有2.5 GHz英特尔核心i7处理器和16 my内存),省略Docker时,一切都足够快了。所以我确信问题出在Docker上。

我的问题是:为什么babel-节点在码头容器中的传输速度这么慢?有办法控制它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-04 13:23:31

在OS上运行Docker需要使用Docker机器。来自Docker OS X文档

因为Docker守护进程使用Linux特有的内核特性,所以不能在OS中本地运行Docker。相反,您必须使用docker机器来创建并附加到虚拟机(VM)。这台机器是一个Linux,它在Mac上为您托管Docker。

通过VM挂载文件,然后再装入运行中的容器是slow。使文件可以从您的主机一般是可以的,但希望这些文件被监视,编译和同步不是。

几年前在运行boot2Docker时,我在Windows上遇到了同样的问题,最终您没有什么办法。(通过简单的搜索(如https://github.com/boot2docker/boot2docker/issues/593),有许多关于这方面的文章可供使用)

我的解决方案是转到Ubuntu。在非linux机器上共享卷的性能不太可能很快改变。

您可能想看看docker-osx-dev项目,该项目使用rsync并声称“挂载文件夹与本机OS性能相当,标准文件监视机制正常工作”。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35794197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档