问题描述
我有一个涉及 Docker 和 Ruby on Rails 的特殊情况。
我正在创建 Ruby on Rails 项目的图像,问题是图像变得太大了。
有问题的项目是一个将成为微服务的单体。
我打算在 Kubernetes 集群中使用图像,由于图像的大小,这可能对 K8S 和部署时间不利
使用较小的官方 Ruby 镜像,如 Slim-Buster 和 Alpine,我创建的镜像并不小,达到约 600MB。
主要原因是强制执行了 bundle install 命令。
要执行“bundle exec puma”命令,它首先请求执行“bundle install”。
运行 bundle install 后,/usr 目录是最大的“失败者”。
我试图通过将 /usr 目录和 Gems 已经安装在我的本地主机上,然后将其安装在容器中来解决这种情况。即便如此,在尝试执行“bundle exec puma”命令后仍会报告消息“Install missing gem executables with bundle install
”。
此时我正在避免重新制定要迁移到微服务的整个项目,但我需要一些建议。
非常感谢您提前
解决方法
最明显的建议是删除不必要的文件夹,例如 spec
(如果您没有对 docker 映像运行测试)、node_modules
和 app/assets
,因为您没有在生产中需要它们,因为它们通常是预编译的。
如果您发布Dockerfile
:)