0

我有一个涉及 Docker 和 Ruby on Rails 的特殊情况。

我正在创建 Ruby on Rails 项目的图像,问题是图像变得太大。

有问题的项目是一个将成为微服务的单体。

我打算在 Kubernetes 集群中使用镜像,由于镜像的大小,这可能不利于 K8S 和部署时间

使用 Slim-Buster 和 Alpine 等较小的官方 Ruby 镜像,我创建的镜像并没有那么小,大约达到 600MB。

主要原因是捆绑安装命令的强制执行。

为了执行“bundle exec puma”命令,它首先请求执行“bundle install”。

/usr 目录是运行捆绑安装后最大的“失败者”。

我试图通过将已安装 Gems 的 /usr 目录放置在我的本地主机上,然后将其挂载到容器中来解决这种情况。 bundle install即便如此,在尝试执行“bundle exec puma”命令后仍会报告“Install missing gem executables with”消息。

你能给我一些关于如何通过这个项目解决这种情况的提示吗?

在这一点上,我正在避免重新制定要迁移到微服务的整个项目,但我需要一些建议。

非常感谢您提前

4

1 回答 1

0

最明显的建议是删除不必要的文件夹,例如spec(如果您不在 docker 映像上运行测试),node_modules并且app/assets因为您在生产中不需要它们,因为它们通常是预编译的。

如果您发布您的答案可能会更有帮助Dockerfile:)

于 2021-02-16T17:03:51.417 回答