如何在Elastic Beanstalk容器中提供Rails应用程序的webpacked资产?

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

我正在使用Rails5应用程序并成功将其部署到EB容器。

但是直接在public/packs服务的webpacked资产在生产环境中返回404。

在目前的情况下,我设置RAILS_SKIP_ASSET_COMPILATION = false所以我在每次部署应用程序之前预编译资产。

我曾经使用heroku作为生产环境,当时一切都很顺利。

这是我的config/webpacker.yml

source_path: app/frontend/javascripts
  source_entry_path: packs
  public_output_path: packs # public/packs/filename-[hash].js
  cache_path: tmp/cache/webpacker

  # Additional paths webpack should lookup modules
  # ['app/assets', 'engine/foo/app/assets']
  resolved_paths: []

  # Reload manifest.json on all requests so we reload latest compiled packs
  cache_manifest: false

  extensions:
    - .js
    - .sass
    - .scss
    - .css
    - .png
    - .svg
    - .gif
    - .jpeg
    - .jpg

我试过的......

我试图将public_output_path从包更改为资产。但同样的错误仍然存​​在......

ruby-on-rails webpack ruby-on-rails-5 elastic-beanstalk
1个回答
1
投票

我也遇到了这个问题。我不确定你是否使用Nginx或Passenger。但如果它是Nginx,你可能想要为/etc/nginx/conf.d/webapp_healthd.conf添加一个如下所示的位置块:

location /packs {
  alias /var/app/current/public/packs;
  gzip_static on;
  gzip on;
  expires max;
  add_header Cache-Control public;
}

然后运行sudo /etc/init.d/nginx restart

这应该足以让它运作起来。但是你需要在项目中使用这些自定义设置创建一个.ebextensions/文件,这样它就不会被Elastic Beanstalk默认配置覆盖。

请参阅Maria Luisa Carrion D.的this post,了解如何自动化nginx配置。

© www.soinside.com 2019 - 2024. All rights reserved.