ruby-on-rails - Rails 视图渲染在 Docker 中很慢
问题描述
我正在 dockerizing 一个 Rails 应用程序,但我不确定为什么视图渲染这么慢。在任何两个页面之间导航需要将近 2 秒,有些页面需要更长的时间。当我在 Docker 之外运行应用程序时,此问题不存在。
我在具有 16GB 内存的 2015 MBP 上使用 Docker Desktop。
这是我的 Dockerfile:
FROM ruby:2.5.3
# replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get update -qq && apt-get install -y build-essential checkinstall \
libpq-dev libvips-dev libvips-tools
# python dependencies
RUN apt-get install -y libreadline-gplv2-dev libncursesw5-dev libssl-dev \
libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
WORKDIR /tmp
RUN wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs921/ghostscript-9.21.tar.gz && \
tar xzf ghostscript-9.21.tar.gz && cd ghostscript-9.21 && \
./configure && make && make install
RUN wget https://nodejs.org/download/release/v10.8.0/node-v10.8.0.tar.gz && \
tar xzf node-v10.8.0.tar.gz && cd node-v10.8.0 && \
./configure && make -j4 && make install
WORKDIR /app
RUN gem install bundler -v 1.17.3
RUN gem install foreman -v 0.85.0
RUN npm install -g yarn
这是我的 docker-compose.yml:
version: "3"
services:
web:
build:
context: .
dockerfile: Dockerfile
command: bash -c "rm -f /app/tmp/pids/server.pid && foreman start -f Procfile.dev"
volumes:
- .:/app
- npm_packages:/app/node_modules
- bundler_gems:/usr/local/bundle/
ports:
- 3000:3000
- 8888:8888
depends_on:
- postgres
- redis
- mailcatcher
environment:
PGHOST: postgres
PGUSER: postgres
PGPASSWORD: "password"
RAILS_ENV: development
RACK_ENV: development
NODE_ENV: development
mailcatcher:
build:
context: .
dockerfile: Dockerfile
command: bash -c "gem install mailcatcher && mailcatcher --ip 0.0.0.0 --foreground"
volumes:
- .:/app
- npm_packages:/app/node_modules
- bundler_gems:/usr/local/bundle/
ports:
- 1080:1080
- 1025:1025
redis:
image: redis
ports:
- 6379
volumes:
- redis:/data
postgres:
image: postgres:9.6
ports:
- 54320:5432
restart: always
volumes:
- postgres:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "password"
volumes:
postgres:
redis:
npm_packages:
bundler_gems:
一切正常,只是速度很慢。
duration=1623.74 view=1622.89
解决方案
这可能是在 Mac OS 上运行的 docker-compose 的一个已知问题。
尝试将该行添加127.0.0.1 localunixsocket.local
到文件中/etc/hosts
发现于:https ://github.com/docker/compose/issues/3419#issuecomment-221793401
推荐阅读
- python - 如何使用python中子类的方法调用第三个或更高父类的方法?
- java - 错误:找不到管理端口配置 glass fish intelij
- matlab - 将带有彩色单元格的合适对象导出为 png 或其他图像格式
- php - 我如何将用户重定向到用户页面并将管理员重定向到 cakephp 中的管理页面
- mysql - mysql触发器 - 如何将数据插入到来自另一个表的一个表中,之前执行了一些计算
- scala - flatMap 火花后过滤
- python - 如何将变量传递给 os.chdir() 方法?
- hadoop - hadoop hdfs复制复制不足的文件一直在等待
- sql - 如何在 Sql 查询中包含周六和周日数据
- python - 如何在不使用循环的情况下对超过 3 个多维数组进行元素乘法