1. 確定本地庫的位置和格式
- 首先,你需要明確本地庫的位置和格式。如果是 Python 庫,它可能是以
.whl
(wheel 格式)、.tar.gz
(壓縮包格式)或者是一個包含原始碼的目錄形式存在。
2. 使用 COPY 或 ADD 指令(對於簡單的本地庫檔案)
- COPY 指令:
- 如果本地庫是一個簡單的檔案(如
.whl
或.tar.gz
),可以使用COPY
指令將其複製到映象中。假設你的本地庫檔名為mylib.whl
,並且你的 Dockerfile 的工作目錄(透過WORKDIR
指令設定)為/app
,那麼可以在 Dockerfile 中新增以下內容:
- 如果本地庫是一個簡單的檔案(如
FROM python:3.10 - slim
WORKDIR /app
COPY mylib.whl /app/mylib.whl
- 對於包含原始碼的目錄也是類似的。假設你的本地庫原始碼目錄為
mylib_src
,可以這樣複製:
COPY mylib_src /app/mylib_src
COPY /path/to/venv/lib/python3.8/site-packages/flask /app/flask
COPY /path/to/venv/lib/python3.8/site-packages/* /app/
- ADD 指令(功能更強大,但有一些注意事項):
ADD
指令和COPY
指令類似,但ADD
有一些額外的功能,比如它可以自動解壓某些型別的壓縮檔案。不過,因為它的自動解壓功能可能會導致一些意外情況(例如解壓後的檔案覆蓋了其他重要檔案),所以使用時需要謹慎。如果你的本地庫是一個.tar.gz
檔案,並且你想利用ADD
的解壓功能,可以這樣寫:
ADD mylib.tar.gz /app/
這樣,ADD
指令會將mylib.tar.gz
檔案複製到/app/
目錄下並解壓。需要注意的是,如果mylib.tar.gz
解壓後的目錄結構和/app/
目錄下已有的檔案和目錄有衝突,可能會出現問題。
3. 在映象中安裝本地庫(以 Python 庫為例)
- 對於.whl 檔案格式:
- 在將
.whl
檔案複製到映象後,可以使用pip
來安裝。假設已經將mylib.whl
複製到/app/mylib.whl
,可以在 Dockerfile 中新增以下內容:
- 在將
RUN pip install /app/mylib.whl
- 對於包含原始碼的目錄格式:
- 如果是將本地庫的原始碼目錄(如
mylib_src
)複製到映象中,也可以使用pip
來安裝。通常情況下,需要先進入該目錄(假設複製後的目錄在/app/mylib_src
),然後執行pip
安裝:
- 如果是將本地庫的原始碼目錄(如
RUN cd /app/mylib_src && pip install.
這裡的.
表示當前目錄,即/app/mylib_src
,pip
會安裝該目錄下的庫。
- 對於解壓後的庫(透過 ADD 解壓):
- 如果是透過
ADD
指令解壓了本地庫,並且解壓後的目錄為/app/mylib
(假設情況),可以進入該目錄然後使用pip
安裝:
- 如果是透過
RUN cd /app/mylib && pip install.