使用 Docker 创建镜像的“问题”

问题描述

我有一个涉及 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_modulesapp/assets,因为您没有在生产中需要它们,因为它们通常是预编译的。

如果您发布Dockerfile :)

,答案可能会更有帮助