gpt4 book ai didi

postgresql - Docker 构建镜像对于 postgresql 9.6 来说太大了

转载 作者:行者123 更新时间:2023-11-29 14:31:19 24 4
gpt4 key购买 nike

我正在尝试构建一个安装了 plv8 扩展的 PostgreSql 9.6 docker 镜像。下面是我的 Dockerfile。

FROM postgres:9.6

RUN apt-get update
RUN apt-get install wget make git python python-pip python-dev build-essential postgresql-server-dev-9.6 libglib2.0-dev libc++abi-dev libc++-dev -y
RUN pip install psycopg2

RUN wget https://github.com/plv8/plv8/archive/v2.3.0.tar.gz && tar -xvzf v2.3.0.tar.gz && cd plv8-2.3.0 && make

RUN cp /plv8-2.3.0/plv8--2.3.0.sql /usr/share/postgresql/9.6/extension/
RUN cp /plv8-2.3.0/plv8.control /usr/share/postgresql/9.6/extension/
RUN cp /plv8-2.3.0/plv8.so /usr/lib/postgresql/9.6/lib/

RUN rm v2* && rm -rf plv8-2.3.0
RUN apt-get remove --purge wget make git python python-pip python-dev build-essential postgresql-server-dev-9.6 libglib2.0-dev libc++abi-dev libc++-dev -y
RUN apt-get autoremove -y && apt-get autoclean -y

生成的图像大小为 3.45 GB,而来自 Docker hub 的原始图像大小为 235 MB。知道为什么生成的图像尺寸这么大吗?我怎样才能减少它的大小?我尝试使用 this link 减小它的大小但不幸的是 docker import/export 丢失了元数据。

更新:

我试图将所有 RUN 语句合并为一个。

FROM postgres:9.6

RUN apt-get update ; apt-get install wget make git python python-pip python-dev build-essential postgresql-server-dev-9.6 libglib2.0-dev libc++abi-dev libc++-dev -y ; pip install psycopg2 ; wget https://github.com/plv8/plv8/archive/v2.3.0.tar.gz ; tar -xvzf v2.3.0.tar.gz ; cd plv8-2.3.0 ; make ; cp /plv8-2.3.0/plv8--2.3.0.sql /usr/share/postgresql/9.6/extension/ ; cp /plv8-2.3.0/plv8.control /usr/share/postgresql/9.6/extension/ ; cp /plv8-2.3.0/plv8.so /usr/lib/postgresql/9.6/lib/ ; rm v2* ; rm -rf plv8-2.3.0 ; apt-get remove --purge wget make git python python-pip python-dev build-essential postgresql-server-dev-9.6 libglib2.0-dev libc++abi-dev libc++-dev -y ; apt-get autoremove -y ; apt-get autoclean -y

新大小为 3.11 GB。不是还很大吗?

最佳答案

尽可能尝试使用 && 运行命令。示例:

FROM postgres:9.6

RUN apt-get update && \
apt-get install wget make git python python-pip python-dev build-essential
postgresql-server-dev-9.6 libglib2.0-dev libc++abi-dev libc++-dev -y && \
apt-get install wget make git python python-pip python-dev build-essential
postgresql-server-dev-9.6 libglib2.0-dev libc++abi-dev libc++-dev -y && \
pip install psycopg2

RUN wget https://github.com/plv8/plv8/archive/v2.3.0.tar.gz && tar -xvzf v2.3.0.tar.gz && cd plv8-2.3.0 && make

RUN cp /plv8-2.3.0/plv8--2.3.0.sql /usr/share/postgresql/9.6/extension/ && \
cp /plv8-2.3.0/plv8.control /usr/share/postgresql/9.6/extension/ && \
cp /plv8-2.3.0/plv8.so /usr/lib/postgresql/9.6/lib/
.
.
.

等等...因为每个 RUN 行都会生成一个称为悬挂图像的图像,它具有自己的大小。

关于postgresql - Docker 构建镜像对于 postgresql 9.6 来说太大了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51383698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com