我是碼頭工人的新手,我不完全確定為什么這是有效的。--user我嘗試在不提供pip3安裝文件的參數(shù)的情況下編寫 dockerfile requirements.txt,但由于某種原因,將安裝輸出從${INSTALL}目錄復(fù)制到${APP}目錄對(duì)我來(lái)說(shuō)不起作用。我怎樣才能寫這個(gè),這樣我就不需要依賴--user提供的參數(shù)pip3?現(xiàn)在使用上述參數(shù)是有效的,但我無(wú)法讓它做我想做的事情,這真的讓我煩惱。我使用以下命令構(gòu)建圖像:docker image build --no-cache -t apptest .DockerfileFROM python:3.8-alpine as baseENV APP="/app"ENV INSTALL="/install"ENV LOC="/root/.local"ENV LOCBIN="${LOC}/bin"ENV PATH $PATH:${LOC}:${LOCBIN}FROM base as builderWORKDIR ${INSTALL}COPY ./requirements.txt requirements.txt#install all dependenciesRUN apk add --no-cache curl python3 pkgconfig python3-dev openssl-dev libffi-dev musl-dev make gccRUN pip3 install --user --no-cache-dir -r requirements.txtFROM baseCOPY --from=builder ${LOC} ${LOC}COPY --from=builder ${LOCBIN} ${LOCBIN}COPY ./src/ ${APP}COPY ./src/Cogs/ ${APP}/CogsCOPY ./src/Documentation/ ${APP}/DocumentationCOPY ./src/Models/ ${APP}/ModelsCOPY ./src/OneNight/ ${APP}/OneNightWORKDIR ${APP}#start the serviceENTRYPOINT [ "python3", "service.py" ]
1 回答

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)你安裝 Python 包時(shí),代碼會(huì)到處都是。例如,庫(kù)進(jìn)入站點(diǎn)包,腳本進(jìn)入 bin/ 等。因此,您需要將所有內(nèi)容安裝在一處,以便于復(fù)制。您的選擇
--user
基本上是虛擬環(huán)境,或者復(fù)制許多不同的目錄。話雖如此,您可能不需要多階段構(gòu)建。你想要一個(gè)在這里,因?yàn)槟阏谑褂镁幾g器。但您可能只需要一個(gè)編譯器,因?yàn)槟褂玫氖?Alpine Linux。對(duì)于普通的 Linux 發(fā)行版,大多數(shù) Python 包在 PyPI 上都有二進(jìn)制預(yù)編譯輪,所以很多時(shí)候你根本不需要編譯器。
切換到基于 Debian 的基礎(chǔ)映像 (?python:3.8-slim-buster
) 很可能允許您無(wú)需編譯器即可安裝所有內(nèi)容。
添加回答
舉報(bào)
0/150
提交
取消