欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你如何通過編寫dockerfile部署python項目

 更新時間:2024年07月26日 09:45:02   作者:現(xiàn)實、狠殘酷  
Dockerfile是一個放置在項目根目錄下的描述文件,可以利用 Docker 命令基于該文件構(gòu)建一個鏡像,下面這篇文章主要給大家介紹了關(guān)于如何通過編寫dockerfile部署python項目的相關(guān)資料,需要的朋友可以參考下

docker命令總覽

docker通過dockerfile構(gòu)建鏡像常用命令

# 創(chuàng)建鏡像(進入dockerfile所在的路徑)
docker build -t my_image:1.0 .

# 查看鏡像
docker images

# 創(chuàng)建容器
docker run -dit --restart=always -p 9700:9700 --name my_container my_image:1.0 

# 查看容器
docker ps -a

# 進入容器
docker exec -it my_container /bin/bash

# 退出容器
exit

# 暫停容器
docker stop my_container 

# 刪除容器
docker rm my_container 

dockerfile編寫

# 使用官方的Python運行時作為父鏡像
FROM python:3.10
# 設(shè)置工作目錄為/app
WORKDIR /app
# 將當前目錄內(nèi)容復(fù)制到位于 /app 的容器中
COPY . /app
# 安裝任何需要的包
RUN pip install torch-2.0.0+cpu-cp310-cp310-linux_x86_64.whl
RUN pip install torchvision-0.15.1+cpu-cp310-cp310-linux_x86_64.whl
RUN pip install --no-cache-dir -r requirements_new.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 將/etc/localtime鏈接到上海時區(qū)文件
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 對外暴露的端口號
EXPOSE 9700
# 定義環(huán)境變量
ENV model = gpt-4-vision-preview
# 當容器啟動時運行python app.py
CMD ["python", "app.py"]

dockerfile中COPY與ADD的區(qū)別

在 Dockerfile 中,COPY 和 ADD 指令都用于將文件或目錄從構(gòu)建上下文復(fù)制到鏡像中,但它們之間有一些重要的區(qū)別:

1.基本功能:

  • COPY:將本地文件或目錄復(fù)制到鏡像中。
  • ADD:將本地文件、目錄或遠程文件 URL 的內(nèi)容復(fù)制到鏡像中。如果源文件是一個 URL,并且目標文件不存在,則 ADD 指令還會下載和解壓 URL 指向的文件(如果它是壓縮的)。

2.對壓縮文件的處理:

  • COPY:不會處理壓縮文件,如果源文件是一個 .tar、.gz 或其他壓縮格式的文件,它將被復(fù)制到鏡像中,但不會解壓。
  • ADD:如果源文件是一個壓縮文件(如 .tar、.tar.gz、.tgz、.bz2、.xz 等),則 ADD 指令會自動解壓該文件到目標目錄(如果指定了的話)。

3.構(gòu)建緩存:

  • COPY 和 ADD 都會受益于 Docker 的構(gòu)建緩存。但是,由于 ADD 會處理 URL 和解壓文件,因此它可能更難以有效地使用緩存。如果遠程文件的內(nèi)容更改,或者壓縮文件的內(nèi)容更改,即使解壓后的內(nèi)容沒有更改,ADD 也可能導(dǎo)致緩存失效。

4.最佳實踐:

通常,推薦使用 COPY 指令,因為它更直觀、更簡單,并且更容易理解。當需要復(fù)制本地文件或目錄到鏡像時,COPY 是首選。
如果需要從遠程 URL 下載文件,或者需要解壓壓縮文件到鏡像中,可以使用 ADD 指令。但是,請注意 ADD 的一些潛在問題,如緩存失效和不必要的復(fù)雜性。

5.安全性:

  • 使用 ADD 從遠程 URL 下載文件可能會引入安全風險,因為遠程文件的內(nèi)容可能不受控制。如果可能,最好從受信任的源下載文件,并使用 COPY 指令將文件復(fù)制到鏡像中。

6.目標路徑:

  • 對于 COPY 和 ADD,如果目標路徑不存在,Docker 將嘗試創(chuàng)建它。但是,如果目標路徑是一個文件而不是目錄,并且該文件已經(jīng)存在,則操作將失敗。

總結(jié):在 Dockerfile 中,應(yīng)優(yōu)先考慮使用 COPY 指令來復(fù)制本地文件或目錄到鏡像中。只有在需要特定功能(如從遠程 URL 下載文件或解壓壓縮文件)時,才使用 ADD 指令。

將容器轉(zhuǎn)化為鏡像和鏡像壓縮解壓

# 將容器轉(zhuǎn)化為鏡像
docker commit my_container  my_image:1.2

# 將鏡像轉(zhuǎn)為壓縮包
docker save -o my_package.tar my_image:1.2

# 刪除原鏡像
docker rmi my_image:1.2

# 將壓縮包解壓得到鏡像
docker load –i my_package.tar

將鏡像推送到私有倉庫

# 標記鏡像
docker tag logistics_park:base 10.82.27.215:10081/ai_platform/logistics_park:base

# 將鏡像推送到私有倉庫
docker push 10.82.27.215:10081/ai_platform/logistics_park:base

根據(jù)基礎(chǔ)鏡像創(chuàng)建docker容器

docker pull python:3.10
# 創(chuàng)建容器不進入
docker run -dit --name=p1 python:3.10
# 進入容器
docker exec -it p1 bash
# 創(chuàng)建文件夾
mkdir app
# 推出容器
exit
# 將需要的依賴拷貝到鏡像指定目錄
docker cp torchvision-0.15.1+cpu-cp310-cp310-linux_x86_64.whl p1:app/
# 升級pip
pip3 install --upgrade pip

# 安裝需要的依賴(加上鏡像源)
pip install -r requirements_new.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 退出容器
exit
# 將容器打包為鏡像(確保容器正在運行)
docker commit p1 logistics_park:base
# 標記鏡像
docker tag logistics_park:base 10.82.27.215:10081/ai_platform/logistics_park:base
# 將鏡像推送到私有倉庫
docker push 10.82.27.215:10081/ai_platform/logistics_park:base
# 構(gòu)建鏡像
docker build -t logistics_park:v1.0 .
# 容器運行命令:
docker run -dit --restart=always -p 9700:9700 --name logistics_park logistics_park:v1.0

通過基礎(chǔ)鏡像創(chuàng)建容器的dockefile

# 使用官方的Python運行時作為父鏡像
FROM 10.82.27.215:10081/ai_platform/logistics_park:base
# 設(shè)置工作目錄為/app
WORKDIR /app
# 將當前目錄內(nèi)容復(fù)制到位于 /app 的容器中
COPY . /app
# 將/etc/localtime鏈接到上海時區(qū)文件
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 驗證時區(qū)
RUN date
# 對外暴露的端口號
EXPOSE 9700
# 定義環(huán)境變量
# ENV model = gpt-4-vision-preview
# 當容器啟動時運行python app.py
CMD ["python", "app.py"]

總結(jié) 

到此這篇關(guān)于如何通過編寫dockerfile部署python項目的文章就介紹到這了,更多相關(guān)dockerfile部署python項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker容器與宿主機的數(shù)據(jù)交互方式總結(jié)

    docker容器與宿主機的數(shù)據(jù)交互方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于docker容器與宿主機的數(shù)據(jù)交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問題

    docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問題

    這篇文章主要介紹了docker compose idea CreateProcess error=2 系統(tǒng)找不到指定的文件的問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • docker 查看容器日志命令的實現(xiàn)

    docker 查看容器日志命令的實現(xiàn)

    這篇文章主要介紹了docker 查看容器日志命令的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Mobaxterm解鎖Docker的技巧

    Mobaxterm解鎖Docker的技巧

    Mobaxterm是一款功能強大的工具,可以幫助開發(fā)者更高效地使用Docker,通過結(jié)合Docker和Mobaxterm,你可以輕松地管理Docker容器、運行Docker應(yīng)用,并實現(xiàn)遠程訪問,本文給大家介紹Mobaxterm解鎖Docker的詳細過程,感興趣的朋友一起看看吧
    2025-05-05
  • Docker中的COPY指令和ADD指令詳解

    Docker中的COPY指令和ADD指令詳解

    COPY?和?ADD?都是?Dockerfile?中的指令,有著類似的作用。它們允許我們將文件從特定位置復(fù)制到?Docker?鏡像中,這篇文章主要介紹了Docker中的COPY指令和ADD指令,需要的朋友可以參考下
    2022-06-06
  • docker 的volumes清理步驟

    docker 的volumes清理步驟

    文章介紹了如何在Docker中清理volumes以釋放磁盤空間,包括查看所有卷、查找未使用的卷、清理未使用的卷、手動刪除特定卷、檢查卷的使用情況、清理卷中的數(shù)據(jù)、預(yù)防措施以及遷移Docker數(shù)據(jù)目錄等步驟,感興趣的朋友一起看看吧
    2025-03-03
  • 使用Docker-compose離線部署Django應(yīng)用的方法

    使用Docker-compose離線部署Django應(yīng)用的方法

    這篇文章主要介紹了使用Docker-compose離線部署Django應(yīng)用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Docker命令行輸出格式化完全指南

    Docker命令行輸出格式化完全指南

    在Docker中大多數(shù)的輸出命令都支持--format 選項,用于控制輸出,下面這篇文章主要給大家介紹了關(guān)于Docker命令行輸出格式化的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • docker中nginx的location轉(zhuǎn)發(fā)不生效的解決

    docker中nginx的location轉(zhuǎn)發(fā)不生效的解決

    這篇文章主要介紹了docker中nginx的location轉(zhuǎn)發(fā)不生效的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • docker-compose網(wǎng)絡(luò)配置-?IP?主機名?hosts配置方式

    docker-compose網(wǎng)絡(luò)配置-?IP?主機名?hosts配置方式

    這篇文章主要介紹了docker-compose網(wǎng)絡(luò)配置-?IP?主機名?hosts配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論