Ember + Docker在蒸腾过程中变慢

时间:2016-08-14 01:24:07

标签: ember.js docker docker-compose

我试图将我的本地开发设置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,我很乐意听到您正在做的事情!

谢谢!

1 个答案:

答案 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性能,我们期待很快与您分享改进。