我正在使用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?
1条答案
按热度按时间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