Webpacker 使用 Docker 编译速度非常慢

问题描述 投票:0回答:1

我们有一个 Rails 6 应用程序,几天前我们刚刚对其进行了 Docker 化(目前用于开发环境)。我们设法修复了镜像的一些问题,现在整个应用程序运行顺利,并且 Docker 一切正常。

我们遇到的唯一问题是现在 webpacker 编译花费了太多时间。在使用 Docker 之前可能需要 30 秒,但现在最多需要 5 分钟,最少需要 3 分钟。

我们尝试在卷的帮助下缓存包文件夹:

- ./public/packs:/app_name/public/packs:cached
但好像并没有改变什么。

我们还有其他解决方案吗?

ruby-on-rails ruby docker webpacker
1个回答
0
投票

正如 @β.εηοιτ.βε 提到的,对于开发,您可以使用本地安装的卷(直接在您的文件系统上)。

您可以在下面找到一个示例,添加使用方法组合,考虑

docker compose
Dockerfile
来利用 多阶段(请记住,我提出的是通用解决方案):

docker-compose.yml

version: '3.9'

services:
  api: # or whatever name you use
    build:
      dockerfile: Dockerfile
      context: .
      # use just the development stage
      target: development
    command: <command to start in dev mode>
    expose:
      - ${PORT}
    ports:
      - ${PORT}:${PORT}
    env_file:
      - .env
    volumes:
      # use the local folder mapped to `/app` in container volume
      - .:/app
      - <directory_you_want_to_include_in_volume>:/app/<target_in_volume>

volumes:
  <directory_you_want_to_include_in_volume>:
    driver: local

Dockerfile

FROM <your_image> as development

# Create app directory
WORKDIR /app

# Copy source files
COPY . .

# Install with options as needed
RUN bundle install 

# Build API
RUN <any command to build/bundle your app>

# here the development build will stop, 
# and the start command of the docker compose file will take care.

FROM <your_image> as production

# Create app directory
WORKDIR /app

# Copy necessary files to run the app
COPY --from=development /app/<whatever_needed> ./

# Install only production dependencies
RUN <specific_production_bundler>

EXPOSE 80

CMD ["bundle", "exec", "rails"]
© www.soinside.com 2019 - 2024. All rights reserved.