亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

教你如何通過編寫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)容復制到位于 /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)建上下文復制到鏡像中,但它們之間有一些重要的區(qū)別:

1.基本功能:

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

2.對壓縮文件的處理:

  • COPY:不會處理壓縮文件,如果源文件是一個 .tar、.gz 或其他壓縮格式的文件,它將被復制到鏡像中,但不會解壓。
  • 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 也可能導致緩存失效。

4.最佳實踐:

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

5.安全性:

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

6.目標路徑:

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

總結(jié):在 Dockerfile 中,應優(yōu)先考慮使用 COPY 指令來復制本地文件或目錄到鏡像中。只有在需要特定功能(如從遠程 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)容復制到位于 /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)文章

  • 靜態(tài)pod 創(chuàng)建使用示例詳解

    靜態(tài)pod 創(chuàng)建使用示例詳解

    這篇文章主要為大家介紹了靜態(tài)pod 創(chuàng)建使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • SpringCloud基于Docker和Docker-Compose的項目部署過程

    SpringCloud基于Docker和Docker-Compose的項目部署過程

    本文介紹了如何卸載舊版本Docker、更新系統(tǒng)、安裝Docker及其依賴,并設(shè)置國內(nèi)鏡像源以加快下載速度,詳細說明了如何安裝Docker Compose、配置鏡像加速器,并展示了如何使用Docker Compose部署SpringCloud項目,提供了更新和重啟容器的方法
    2024-10-10
  • docker部署nginx及nginx.conf文件配置方式

    docker部署nginx及nginx.conf文件配置方式

    這篇文章主要介紹了docker部署nginx及nginx.conf文件配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Docker配置文件docker-compose.yml使用指南

    Docker配置文件docker-compose.yml使用指南

    本文主要介紹了Docker配置文件docker-compose.yml使用指南,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Docker文件映射實現(xiàn)主機與容器間目錄的雙向映射

    Docker文件映射實現(xiàn)主機與容器間目錄的雙向映射

    本地文件系統(tǒng)和容器中的文件系統(tǒng)之間的交互是一項必不可少的功能,本文主要介紹了Docker文件映射實現(xiàn)主機與容器間目錄的雙向映射,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • docker安裝nginx并配置ssl證書的方法步驟

    docker安裝nginx并配置ssl證書的方法步驟

    本文主要介紹了docker安裝nginx并配置ssl證書的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Docker中部署flink集群的兩種方式

    Docker中部署flink集群的兩種方式

    這篇文章主要介紹了Docker中部署flink集群的兩種方式,本文將通過 2 種方式在 docker 中部署 flink standalone 集群,集群中共有 4 個節(jié)點,分別是 1 個 jobManager 節(jié)點和 3 個 taskManager 節(jié)點,需要的朋友可以參考下
    2024-02-02
  • docker的基本使用及使如何用Docker 運行D435i

    docker的基本使用及使如何用Docker 運行D435i

    這篇文章主要介紹了docker的基本使用及使如何用Docker 運行D435i,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • vscode中啟用docker擴展顯示無權(quán)限的問題解決

    vscode中啟用docker擴展顯示無權(quán)限的問題解決

    這篇文章主要介紹了如何解決vscode中啟用docker擴展顯示無權(quán)限的問題,并介紹允許VSCode進入Docker內(nèi)部進行調(diào)試的插件,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • kubernetes作用領(lǐng)域總結(jié)

    kubernetes作用領(lǐng)域總結(jié)

    在本文里我們給大家整理關(guān)于kubernetes作用領(lǐng)域以及可以做的項目和思路,有興趣的朋友們參考下。
    2019-06-06

最新評論