如何在Elastic Beanstalk容器中提供Rails应用程序的webpacked资产?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Elastic Beanstalk容器中提供Rails应用程序的webpacked资产?相关的知识,希望对你有一定的参考价值。
我正在使用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从包更改为资产。但同样的错误仍然存在......
我也遇到了这个问题。我不确定你是否使用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配置。
以上是关于如何在Elastic Beanstalk容器中提供Rails应用程序的webpacked资产?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk:如何更改节点命令?在最近的更新中删除了容器选项?
如何在 Elastic Beanstalk 应用程序中的 Docker 容器之间共享卷?
如何在 AWS Elastic Beanstalk Docker 容器中记录 PHP 错误
如何使用 Amazon linux 2 在 Elastic beanstalk 中使用多容器 docker?