Docker 容器在开发模式下运行 Rails 应用程序非常慢

Roh*_*yat 8 ruby docker ruby-on-rails-4.2 docker-compose

我在 docker 容器上遇到了问题。Rails 应用程序运行非常缓慢(意味着页面在浏览器上加载时间过长)。

申请详情:

导轨版本: 4.2.0 Ruby 版本:2.2.0

当我通过命令检查内存状态时docker stats,显示主容器(1)的 CPU 利用率非常高。有时它会50%被利用。

我尝试了一些配置,即增加了CPUdocker的分配,性能得到了一点点提高。

version: '3.7'

services:
  selenium:
    image: selenium/standalone-chrome-debug:3.141.59-krypton
    ports: ['4444:4444', '5900:5900']
    logging:
      driver: none
  redis:
    image: redis:3.0.0
  elastic:
    image: elasticsearch:1.5.2
  db:
    image: postgres:9.3.10
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
      - .:/home
  XYZ:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    stdin_open: true
    tty: true
    volumes:
      - .:/home
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis
      - elastic
      - selenium
    environment:
      - REDIS_URL=redis://redis:6379/0
      - ELASTICSEARCH_URL=elastic://elastic:9200/0
      - SELENIUM_HOST=selenium
      - SELENIUM_PORT=4444
      - TEST_APP_HOST=XYZ
      - TEST_PORT=3000
Run Code Online (Sandbox Code Playgroud)

我观察到在浏览器上加载的 js 文件花费了太多时间来加载大约1.3 min,例如,如果有 4 个 js 文件,每个文件需要更多的时间1 min来加载

我觉得 docker 在 mac 机器上运行缓慢,因为相同的应用程序在 Linux 机器上运行得很好,可能是我错了,但这是我看到的观察结果。

任何帮助将不胜感激。

Roh*_*yat 4

我通过设置docker-sync. 我按照这篇文章设置了docker-sync

解决问题的步骤:

步骤1: sudo gem install docker-sync

步骤2:创建docker-sync.yml文件

version: "2"
options:
  verbose: true
syncs:
  #IMPORTANT: ensure this name is unique and does not match your other application container name
  XYZ-sync: #tip: add -sync and you keep consistent names as a convention
    src: .
    sync_host_ip: 'localhost'
    sync_host_port: 10872
sync_strategy: 'rsync'

Run Code Online (Sandbox Code Playgroud)

步骤 3:docker-compose.yml使用以下详细信息更新文件

...
    volumes:
      - xyz-sync:/home:nocopy

volumes:
  XYZ-sync:
    external: true
Run Code Online (Sandbox Code Playgroud)

步骤4: brew install rsync

步骤5: docker-sync-stack start