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

安裝完成之后,便可以直接創(chuàng)建虛擬環(huán)境了,使用命令virtualenv env1進(jìn)行創(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)境。進(jìn)入到Scripts目錄,在該目錄下輸入activate.bat命令,即可激活Python虛擬環(huán)境.

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

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


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

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

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

4.app中的內(nèi)容其實(shí)就是Python項(xiàng)目根目錄以及子目錄文件,直接將新建的hello.py放到app目錄下
5.編寫(xiě)Dockerfile,創(chuàng)建一個(gè)文件叫Dockerfile,內(nèi)容如下:
最好是先執(zhí)行pip install -r requirements.txt -i https://pypi.douban.com/simple/命令,確認(rèn)無(wú)誤,再編寫(xiě)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后面有一個(gè)點(diǎn),這里的hello-test是鏡像的名稱(chēng),隨意命名

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

保存為鏡像文件
docker save ubuntu>ubuntu.tar
保存Ubuntu為ubuntu.tar文件
拆分文件、合并文件
如何文件較大傳輸耗時(shí),可以切割文件,分詞傳輸,再合并文件即可。
split -b 500m log.txt newfile #切分文件log.txt,按照500MB進(jìn)行切分 cat newfile* > orifile #合格文件為整個(gè)
加載鏡像文件
docker load -i redis5014.tar
解壓鏡像文件,查看鏡像
docker images
找到對(duì)應(yīng)的鏡像,執(zhí)行鏡像
docker run -it 鏡像ID
啟動(dòng)容器
先查看容器是否開(kāi)啟
docker ps
如果發(fā)現(xiàn)未開(kāi)啟,顯示所有容器
docker ps -a
開(kāi)啟指定的容器
docker start 容器ID
開(kāi)啟容器失敗,按照如下操作:
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:/#
進(jìn)入容器
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
完整語(yǔ)句
sudo docker run -it -v /home/ubuntu/anti/docker_test:/code 2286df316633 /bin/bash
刪除鏡像、容器
刪除鏡像
直接刪除鏡像
docker rmi 鏡像ID
強(qiáng)制刪除鏡像
docker rmi -f image_id
刪除容器
刪除容器
docker rm 容器ID
如果刪除不掉,先關(guān)閉容器,再刪除
docker stop 容器ID
強(qiáng)制刪除容器
docker rm -f container_id
優(yōu)雅地刪除鏡像的最佳做法是:先停止容器,再刪除容器,最后刪除鏡像。
優(yōu)雅地刪除容器的最佳做法是:先停止容器,再刪除容器。
參考文獻(xiàn)
- 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項(xiàng)目打包成docker鏡像上傳到服務(wù)器并在docker中運(yùn)行的文章就介紹到這了,更多相關(guān)Python打包成docker鏡像上傳服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python項(xiàng)目打包并部署到Docker詳細(xì)步驟
- python項(xiàng)目以docker形式打包部署詳細(xì)流程
- docker打包python鏡像的全教程分享
- 詳解如何使用Docker打包Python項(xiàng)目
- python?flask項(xiàng)目打包成docker鏡像發(fā)布的過(guò)程
- 一文教會(huì)你用Docker打包Python運(yùn)行環(huán)境
- docker打包Python環(huán)境的過(guò)程詳解
- docker python如何實(shí)現(xiàn)打包的方法
- Docker 打包python的命令詳解
- Docker打包一個(gè)Python腳本的實(shí)現(xiàn)方法
相關(guān)文章
python3 實(shí)現(xiàn)一行輸入,空格隔開(kāi)的示例
今天小編就為大家分享一篇python3 實(shí)現(xiàn)一行輸入,空格隔開(kāi)的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
Python判斷是否json是否包含一個(gè)key的方法
今天小編就為大家分享一篇Python判斷是否json是否包含一個(gè)key的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Python利用PyMuPDF模塊實(shí)現(xiàn)快速轉(zhuǎn)換PDF文件
PDF是一種廣泛使用的文件格式,可以在任何設(shè)備上查看和打印,那么如何用Python和PyMuPDF制作你想要大小的PDF文件呢,本文就來(lái)和大家詳細(xì)講講2023-08-08
Python集成測(cè)試提高軟件質(zhì)量關(guān)鍵步驟探究
Python是一門(mén)強(qiáng)大的編程語(yǔ)言,提供了眾多工具和庫(kù),用于執(zhí)行高效的集成測(cè)試,本文將深入介紹Python集成測(cè)試的概念、方法和最佳實(shí)踐,并通過(guò)豐富的示例代碼演示如何提高軟件質(zhì)量和減少潛在的缺陷2024-01-01
selenium?UI自動(dòng)化實(shí)戰(zhàn)過(guò)程記錄
如果大家有做過(guò)web的自動(dòng)化測(cè)試,相信對(duì)于selenium一定不陌生,測(cè)試人員經(jīng)常使用它來(lái)進(jìn)行自動(dòng)化測(cè)試,下面這篇文章主要給大家介紹了關(guān)于selenium?UI自動(dòng)化實(shí)戰(zhàn)的相關(guān)資料,需要的朋友可以參考下2021-12-12
Django xadmin開(kāi)啟搜索功能的實(shí)現(xiàn)
今天小編就為大家分享一篇Django xadmin開(kāi)啟搜索功能的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
python爬蟲(chóng)要用到的庫(kù)總結(jié)
在本篇內(nèi)容中小編給大家整理的是關(guān)于python爬蟲(chóng)要用到的庫(kù)總結(jié)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-07-07
利用python實(shí)現(xiàn)凱撒密碼加解密功能
這篇文章主要介紹了利用python實(shí)現(xiàn)凱撒密碼加解密功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03

