將本地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)境進行隔離。
準備打包
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利用PyMuPDF模塊實現(xiàn)快速轉(zhuǎn)換PDF文件
PDF是一種廣泛使用的文件格式,可以在任何設(shè)備上查看和打印,那么如何用Python和PyMuPDF制作你想要大小的PDF文件呢,本文就來和大家詳細講講2023-08-08Python集成測試提高軟件質(zhì)量關(guān)鍵步驟探究
Python是一門強大的編程語言,提供了眾多工具和庫,用于執(zhí)行高效的集成測試,本文將深入介紹Python集成測試的概念、方法和最佳實踐,并通過豐富的示例代碼演示如何提高軟件質(zhì)量和減少潛在的缺陷2024-01-01