簡體   English   中英

Docker構建映像大小對於Postgresql 9.6太大

[英]Docker build image size too big for postgresql 9.6

我正在嘗試構建安裝了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。 知道為什么生成的圖像這么大嗎? 如何縮小尺寸? 我試圖使用此鏈接減小其大小,但不幸的是, 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行都會生成一個具有其自身大小的稱為“懸空圖像”的圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM