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

教你如何通過編寫dockerfile部署python項(xiàng)目

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

docker命令總覽

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

# 創(chuàng)建鏡像(進(jìn)入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

# 進(jìn)入容器
docker exec -it my_container /bin/bash

# 退出容器
exit

# 暫停容器
docker stop my_container 

# 刪除容器
docker rm my_container 

dockerfile編寫

# 使用官方的Python運(yùn)行時(shí)作為父鏡像
FROM python:3.10
# 設(shè)置工作目錄為/app
WORKDIR /app
# 將當(dāng)前目錄內(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鏈接到上海時(shí)區(qū)文件
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 對(duì)外暴露的端口號(hào)
EXPOSE 9700
# 定義環(huán)境變量
ENV model = gpt-4-vision-preview
# 當(dāng)容器啟動(dòng)時(shí)運(yùn)行python app.py
CMD ["python", "app.py"]

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

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

1.基本功能:

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

2.對(duì)壓縮文件的處理:

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

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

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

4.最佳實(shí)踐:

通常,推薦使用 COPY 指令,因?yàn)樗庇^、更簡單,并且更容易理解。當(dāng)需要復(fù)制本地文件或目錄到鏡像時(shí),COPY 是首選。
如果需要從遠(yuǎn)程 URL 下載文件,或者需要解壓壓縮文件到鏡像中,可以使用 ADD 指令。但是,請(qǐng)注意 ADD 的一些潛在問題,如緩存失效和不必要的復(fù)雜性。

5.安全性:

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

6.目標(biāo)路徑:

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

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

將鏡像推送到私有倉庫

# 標(biāo)記鏡像
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)建容器不進(jìn)入
docker run -dit --name=p1 python:3.10
# 進(jìn)入容器
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/
# 升級(jí)pip
pip3 install --upgrade pip

# 安裝需要的依賴(加上鏡像源)
pip install -r requirements_new.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 退出容器
exit
# 將容器打包為鏡像(確保容器正在運(yùn)行)
docker commit p1 logistics_park:base
# 標(biāo)記鏡像
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 .
# 容器運(yùn)行命令:
docker run -dit --restart=always -p 9700:9700 --name logistics_park logistics_park:v1.0

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

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

總結(jié) 

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

相關(guān)文章

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

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

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

    SpringCloud基于Docker和Docker-Compose的項(xiàng)目部署過程

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

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

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

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

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

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

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

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

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

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

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

    docker的基本使用及使如何用Docker 運(yùn)行D435i

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

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

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

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

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

最新評(píng)論