將本地Python項目打包成docker鏡像上傳到服務(wù)器并在docker中運行
Docker環(huán)境
- windows11
- Docker下載地址:https://docs.docker.com/desktop/install/windows-install/
創(chuàng)建虛擬環(huán)境
虛擬環(huán)境可以搭建獨立的Python運行環(huán)境,使得單個項目的運行環(huán)境與其他項目互不影響。

安裝完成之后,便可以直接創(chuàng)建虛擬環(huán)境了,使用命令virtualenv env1進行創(chuàng)建
C:\Users\china>virtualenv env1 Using base prefix 'c:\\program files\\python36' New python executable in C:\Users\china\env1\Scripts\python.exe Installing setuptools, pip, wheel...done.
其中activate.bat文件,表示激活虛擬環(huán)境。進入到Scripts目錄,在該目錄下輸入activate.bat命令,即可激活Python虛擬環(huán)境.

退出虛擬環(huán)境
在當(dāng)前目錄下輸入命令deactivate.bat即可

pycharm使用虛擬環(huán)境
1、打開Pycharm,然后依次點擊左上方的file->Settings
2、之后依次Project->Project Interpreter,使用虛擬環(huán)境的python解釋器,下載需要的包,環(huán)境進行隔離。


準(zhǔn)備打包
1.創(chuàng)建好虛擬環(huán)境后,在項目中創(chuàng)建一個hello.py,內(nèi)容簡單寫一些

2.將項目依賴庫進行導(dǎo)出,使用pip freeze > requirements.txt命令
我們在虛擬環(huán)境中下載好代碼需要的包之后,將依賴庫進行導(dǎo)出,會生成requirements.txt文件,里面保存的是包環(huán)境
如果python的版本和包的版本存在沖突,可以將requirements.txt中包的版本去掉,這樣就會自動下載對應(yīng)的包

3.在桌面上新建一個文件夾,文件夾內(nèi)容如下

4.app中的內(nèi)容其實就是Python項目根目錄以及子目錄文件,直接將新建的hello.py放到app目錄下
5.編寫Dockerfile,創(chuàng)建一個文件叫Dockerfile,內(nèi)容如下:
最好是先執(zhí)行pip install -r requirements.txt -i https://pypi.douban.com/simple/命令,確認無誤,再編寫Dockerfile文件
#基于的基礎(chǔ)鏡像 FROM python:3.7.9 #代碼添加當(dāng)前目錄所有內(nèi)容到code文件夾 ADD . /code # 設(shè)置code文件夾是工作目錄 WORKDIR /code # 安裝支持 RUN pip install -r requirements.txt -i https://pypi.douban.com/simple/ CMD ["python", "./app/predict/select_data_combine.py"]
6.執(zhí)行docker build -t hello-test .這里注意,hello-test后面有一個點,這里的hello-test是鏡像的名稱,隨意命名

7.執(zhí)行docker run -it hello-test,可以看到輸入了請求百度返回的HTML信息和我在hello.py文件中打印的Hello Docker~

保存為鏡像文件
docker save ubuntu>ubuntu.tar
保存Ubuntu為ubuntu.tar文件
拆分文件、合并文件
如何文件較大傳輸耗時,可以切割文件,分詞傳輸,再合并文件即可。
split -b 500m log.txt newfile #切分文件log.txt,按照500MB進行切分 cat newfile* > orifile #合格文件為整個
加載鏡像文件
docker load -i redis5014.tar
解壓鏡像文件,查看鏡像
docker images
找到對應(yīng)的鏡像,執(zhí)行鏡像
docker run -it 鏡像ID
啟動容器
先查看容器是否開啟
docker ps
如果發(fā)現(xiàn)未開啟,顯示所有容器
docker ps -a
開啟指定的容器
docker start 容器ID
開啟容器失敗,按照如下操作:
docker exec -it 6198ef53d943 bash Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running docker commit 6198ef53d943 sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33 docker run -it ace7ca65e6e bash root@72d38a8c787d:/#
進入容器
sudo docker exec -it 容器ID bash
退出容器
exit
復(fù)制物理路徑到容器指定路徑
將本地文件復(fù)制到docker容器中
docker cp 本地文件路徑 容器ID/容器NAME:容器內(nèi)路徑
docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez 1faca6a70742:/opt/rabbitmq/plugins
或者
docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez rabbit:/opt/rabbitmq/plugins
完整語句
sudo docker run -it -v /home/ubuntu/anti/docker_test:/code 2286df316633 /bin/bash
刪除鏡像、容器
刪除鏡像
直接刪除鏡像
docker rmi 鏡像ID
強制刪除鏡像
docker rmi -f image_id
刪除容器
刪除容器
docker rm 容器ID
如果刪除不掉,先關(guān)閉容器,再刪除
docker stop 容器ID
強制刪除容器
docker rm -f container_id
優(yōu)雅地刪除鏡像的最佳做法是:先停止容器,再刪除容器,最后刪除鏡像。
優(yōu)雅地刪除容器的最佳做法是:先停止容器,再刪除容器。
參考文獻
- https://www.cnblogs.com/xiao-apple36/p/12810941.html
- https://blog.csdn.net/songlh1234/article/details/110400673
- https://stackoverflow.com/questions/29599632/container-is-not-running
- https://blog.csdn.net/u014282578/article/details/127866389
總結(jié)
到此這篇關(guān)于將本地Python項目打包成docker鏡像上傳到服務(wù)器并在docker中運行的文章就介紹到這了,更多相關(guān)Python打包成docker鏡像上傳服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Python利用random生成一個列表內(nèi)的隨機數(shù)
這篇文章主要介紹了詳解Python利用random生成一個列表內(nèi)的隨機數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Pymysql實現(xiàn)往表中插入數(shù)據(jù)過程解析
這篇文章主要介紹了Pymysql實現(xiàn)往表中插入數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
深入解析Python如何利用PyUSB輕松操控USB設(shè)備
本文將從?基礎(chǔ)概念、安裝配置、核心?API、實戰(zhàn)案例、調(diào)試技巧到高級應(yīng)用,系統(tǒng)性地介紹?PyUSB,幫助你掌握如何用?Python?高效、安全地與?USB?設(shè)備交互,感興趣的小伙伴可以了解下2026-01-01
Jupyter安裝拓展nbextensions及解決官網(wǎng)下載慢的問題
這篇文章主要介紹了Jupyter安裝拓展nbextensions及解決官網(wǎng)下載慢的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Playwright中Assertions斷言的方法實現(xiàn)
在編寫測試時,我們使用assert語句來斷言一段條件并以此為基礎(chǔ)條件,我們要么通過測試,要么不通過測試,Playwright給我們提供了另一個API,可以以一種更易讀的方式用來執(zhí)行相同的判斷2026-01-01
Python?torch.fft.rfft()函數(shù)用法示例代碼
大家應(yīng)該都知道新舊版的torch中的傅里葉變換函數(shù)在定義和用法上有所不同,下面這篇文章主要給大家介紹了關(guān)于Python?torch.fft.rfft()函數(shù)用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04

