基于ruby slim-bullseye和libvips-dev的Ror的巨大Docker镜像大小

iaqfqrcu  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(111)

我正在使用ruby:3.1.3-slim-bullseye对接rails 7应用程序。
图像大小约为2Gb,原因不明。
我使用的是使用vips的活动存储(这就是我使用libvips-dev的原因)。
我试着用docker history检查图像层,输出显示了两个与这些docker命令相关的巨大层。

RUN bash -c "set -o pipefail && apt-get install -y --no-install-recommends build-essential curl git libpq-dev  "

RUN bash -c "set -o pipefail && apt-get install -y libvips-dev"

docker history my_image --no-trunc的输出,

..... other entries 

sha256:bf2ec68f81ba5fea38089b6a09d60786f296776b76f8083c9e3c94eae64533f5   24 minutes ago   |3 GID=1000 NODE_ENV=production UID=1000 /bin/sh -c bash -c "set -o pipefail && apt-get install -y libvips-dev"       667MB

sha256:1f778f131d692203d3918ea0fbc8e91c2466fadc7bd42ac8d333b8cf34cdae2b   25 minutes ago   |3 GID=1000 NODE_ENV=production UID=1000 /bin/sh -c bash -c "set -o pipefail && apt-get install -y --no-install-recommends build-essential curl git libpq-dev  "           258MB

...... other entries

我的Dockerfile

FROM ruby:3.1.3-slim-bullseye
WORKDIR /app

.... Other docker entries

#
RUN bash -c "set -o pipefail  && apt-get update "

RUN bash -c "set -o pipefail && apt-get install -y --no-install-recommends build-essential curl git libpq-dev  "

RUN bash -c "set -o pipefail && apt-get install -y libvips-dev"

RUN bash -c "set -o pipefail &&  groupadd -g \"${GID}\" ruby && useradd --create-home --no-log-init -u \"${UID}\" -g \"${GID}\" ruby"

RUN bash -c "set -o pipefail  \
  && chown ruby:ruby -R /node_modules /app \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man "

.... Other docker entries

apt-get install有什么问题,所以它使libvips-dev占用667 MB,而build-essential curl git libpq-dev占用258 MB

jxct1oxe

jxct1oxe1#

我在ruby-vips上打开了一个issue(https://github.com/libvips/ruby-vips/issues/370#issuecomment-1716933820)。
以下是建议:
1 -我们可以使用普通的libvips,而不是安装libvips-dev。(不知道最初使用libvips-dev的确切原因)
2 -将--no-install-recommends添加到命令中
所以命令是apt-get install -y --no-install-recommends libvips
现在的图像层大小为130 MG,与667 MB相比,这是ok

相关问题