第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何最小化python3.7應(yīng)用程序docker鏡像

如何最小化python3.7應(yīng)用程序docker鏡像

慕妹3242003 2022-06-28 17:29:13
我想用這個 dockerize python 程序Dockerfile:FROM python:3.7-alpineCOPY requirements.pip ./requirements.pipRUN python3 -m pip install --upgrade pipRUN pip install -U setuptoolsRUN apk updateRUN apk add --no-cache --virtual .build-deps gcc python3-dev musl-dev openssl-dev libffi-dev g++ && \    python3 -m pip install -r requirements.pip --no-cache-dir && \    apk --purge del .build-depsARG APP_DIR=/appRUN mkdir -p ${APP_DIR} WORKDIR ${APP_DIR} COPY app . ENTRYPOINT [ "python3", "run.py" ]這是我的requirements.pip文件:pysher~=0.5.0redis~=2.10.6flake8~=3.5.0pandas==0.23.4因?yàn)閜andas,docker鏡像有461MB,沒有pandas 131MB。我在想如何讓它更小,所以我從我的應(yīng)用程序中構(gòu)建二進(jìn)制文件:pyinstaller run.py --onefile它構(gòu)建了 38M 的二進(jìn)制文件。當(dāng)我運(yùn)行它時(shí),它工作正常。所以我從以下位置構(gòu)建 docker 映像Dockerfile:FROM alpine:3.4ARG APP_DIR=/appRUN mkdir -p ${APP_DIR}WORKDIR ${APP_DIR}COPY app/dist/run runENTRYPOINT [ "/bin/sh", "/app/run" ]基本上,只是將我的run二進(jìn)制文件復(fù)制到/app目錄中??雌饋聿诲e,圖像只有 48.8MB。當(dāng)我運(yùn)行容器時(shí),我收到錯誤:$ docker run --rm --name myapp myminimalimage:latest/app/run: line 1: syntax error: unexpected "("然后我在想,也許有問題sh,所以我安裝了bash,所以我在其中添加了 3 行Dockerfile:RUN apk updateRUN apk upgradeRUN apk add bash圖像已構(gòu)建,但當(dāng)我運(yùn)行它時(shí)再次出現(xiàn)錯誤:$ $ docker run --rm --name myapp myminimalimage:latest/app/run: /app/run: cannot execute binary file我的問題:為什么第一步的圖像這么大?我可以以某種方式最小化尺寸嗎?喜歡從 pandas 包中選擇要安裝的內(nèi)容?為什么我的二進(jìn)制文件在我的系統(tǒng)(Kubuntu 18.10)上運(yùn)行良好但我無法從中運(yùn)行它alpine:3.4,我應(yīng)該使用另一個圖像還是安裝一些東西來運(yùn)行它?使用我的應(yīng)用程序構(gòu)建簡約圖像的最佳方法是什么?上面提到的一種還是有其他方法?
查看完整描述

2 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個贊

關(guān)于尺寸,請確保您在使用時(shí)始終通過(您使用一次,但在其他情況下不使用)。同樣,結(jié)合使用并確保最后一步是清除緩存,使其永遠(yuǎn)不會在圖像層中凍結(jié),例如將三個單獨(dú)的 s替換為; 在單層中實(shí)現(xiàn)相同的效果,即不保留緩存。--no-cache-dirpipapkapkRUNRUN apk update && apk upgrade && apk add bash && rm -rf /var/cache/apk/*apk


例子:


FROM python:3.7-alpine


COPY requirements.pip ./requirements.pip


# Avoid pip cache, use consistent command line with other uses, and merge simple layers

RUN python3 -m pip install --upgrade --no-cache-dir pip && \

    python3 -m pip install --upgrade --no-cache-dir setuptools


# Combine update and add into same layer, clear cache explicitly at end

RUN apk update && apk add --no-cache --virtual .build-deps gcc python3-dev musl-dev openssl-dev libffi-dev g++ && \

    python3 -m pip install -r requirements.pip --no-cache-dir && \

    apk --purge del .build-deps && rm -rf /var/cache/apk/*

不要指望它會做很多事情(您已經(jīng)--no-cache-dir在大型pip操作中使用過),但它確實(shí)有用。pandas是一個巨大的單體包,依賴于其他巨大的單體包;您可以在這里完成的工作是有限度的。


查看完整回答
反對 回復(fù) 2022-06-28
?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個贊

請記住,如果您不使用 Alpine,則不需要編譯器,因?yàn)槟梢灾皇褂幂喿?。這使一切變得更簡單......例如,您不需要安裝然后卸載編譯器。稍微大一點(diǎn),但只有一點(diǎn)點(diǎn)。

(有關(guān)我為什么不喜歡 Alpine Linux 的更多信息,請參見此處:https ://pythonspeed.com/articles/base-image-python-docker-images/ )


查看完整回答
反對 回復(fù) 2022-06-28
  • 2 回答
  • 0 關(guān)注
  • 394 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號