我试图将我的本地开发设置Docker化,以使新开发人员更容易上手。我在Ember应用程序中的部分设置。我已按照default configuration的说明操作,但在Ember应用启动时遇到了很大的延迟。它达到了Serving on http://localhost:4200
的程度,然后在该消息之间以及当您看到Ember CLI显示编译所需时间的输出时,显着延迟(大约10分钟)一切。也就是说,显示的编译时间只有几分钟。
我的docker-compose.yml文件:
version: '2'
services:
nginx:
container_name: 'nginx'
image: jwilder/nginx-proxy
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
ports:
- "80:80"
- "443:443"
frontend:
container_name: 'frontend'
env_file: .env
depends_on:
- nginx
- api
environment:
- VIRTUAL_HOST=*.scout.dev
- VIRTUAL_PORT=4200
image: scoutforpets/ember-cli
command: bash -c "npm i && GIT_DIR=/tmp bower i --allow-root && ember s --watcher polling"
volumes:
- ./app-business/:/app/
- ./app-business/ssl/:/etc/nginx/certs/
ports:
- "4200:4200" # Default Port
- "49152:49152" # Live Reload Port
api:
container_name: 'api'
env_file: .env
command: bash -c "npm i -s && npm run start-debug"
image: node:6.3.1
depends_on:
- postgres
- redis
ports:
- "3001:3001" # Default Port
- "9229:9229" # Debug Port
working_dir: /app/
volumes:
- ./api/:/app/
postgres:
container_name: 'postgres'
image: scoutforpets/postgres
ports:
- "5432:5432"
redis:
container_name: 'redis'
image: redis
ports:
- "6379:6379"
请注意,我的项目是从文件系统挂载的(我正在运行OSX Yosemite)。我听说有些安装文件系统的讨论很慢,但我找不到明确的答案。
如果有人成功使用Ember + Docker,我很乐意听到您正在做的事情!
谢谢!
答案 0 :(得分:4)
如果你正在使用Docker for Mac,那么ember build
命令运行缓慢存在一个已知问题。
文档:https://docs.docker.com/docker-for-mac/troubleshoot/#/known-issues
使用osxfs绑定挂载的目录的性能存在许多问题。特别是,小块的写入和大目录的遍历目前很慢。此外,执行大量目录操作的容器(例如重复扫描大型目录树)可能会遇到性能不佳的问题。以这种方式运行的应用程序包括:
耙
ember build
Symfony的
的Magento
作为此行为的解决方法,您可以将供应商或第三方库目录放在Docker卷中,在osxfs挂载之外执行临时文件系统操作,并使用Unison或rsync等第三方工具在容器之间进行同步目录和绑定安装目录。我们正在使用多种不同的技术积极开展osxfs性能,我们期待很快与您分享改进。