將項目部署到linux下的docker容器中


此時docker是已經安裝好的狀態

序言:介紹一下需要運行的Python項目的結構:

 

 

 平時在PyCharm里面運行該工程,只要直接運行server.py文件即可

 

 

 

現在希望將該工程,部署到docker里面,使用容器啟動:

 

步驟如下:

 

1:創建一個上傳到Linux系統文件夾(文件名任意)

docker_EF_NFCS是要上傳到Linux系統,生成Docker鏡像的文件夾

 

 

 

docker_EF_NFCS文件夾下面有兩個東東,

一個Dockerfile文件(沒有后綴名)
Dockerfile 是一個文本文件,其內包含了一條條的指令(Instruction),每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。有了 Dockerfile,就可以創建我們所需要的鏡像

Dockerfile文件內容如下:

 

 

 

#基於的基礎鏡像
FROM python:3.7

#代碼添加到code文件夾
ADD ./EF_NFCS /code

# 設置code文件夾是工作目錄
WORKDIR /code

# 安裝支持
RUN pip install -r requirements.txt

CMD ["python", "/code/package/server.py"]

--------------------------------------

最后一條命令,就是說,當啟動容器時候,執行server.py程序。

 

一個EF_NFCS(任意起的名字)文件夾:包含工程的代碼,和運行工程所需要的環境列表
所以,EF_NFCS文件夾,有兩個成員package和requirements.txt

 

 

package就是Python項目的package(整個源碼所在目錄)直接復制過來的
requirements.txt生成方法:
cmd命令,進入到【D:\python\EF_NFCS】目錄,也就是工程目錄,package的同級目錄,

執行命令:pip freeze > requirements.txt

 

 

就在該目錄下生成了一個requirements.txt文件:

如下圖,可能很大,因為沒有配合virtualenv ,就把整個環境中的包都列出來,

沒關系,我們可以刪除我們此工程中,不需要的組件

 

2:上傳到linux環境,生成鏡像

2.1:我們將docker_EF_NFCS文件夾,壓縮成zip包,上傳到Linux虛擬機系統中的某個路徑下面

 

 

2.2:解壓:

     執行命令:unzip docker_EF_NFCS.zip

2.3:進入docker_EF_NFCS文件夾:

 

 

2.4:創建鏡像:

         執行命令:docker build -t ef_nfcs_img .

         ef_nfcs_img 為創建的鏡像名稱,. 表示當前目錄(docker_EF_NFCS)

 

 

 

 

查看鏡像是否創建成功:

執行命令:docker images

 

 

可以看到ef_nfcs_img的鏡像,已經存在了

 

3:運行鏡像,生成並啟動容器
執行命令:docker run -it -p 9060:9060 --name ef_nfcs ef_nfcs_img

-it:表示交互式終端的容器,非啟動后立刻結束的容器

-p 9060:9060:表示將docker的9060端口,映射到Linux虛擬機的9060端口

                        也就是說,訪問Linux虛擬機的9060端口,就是在訪問docker容器的9060端口

--name ef_nfcs:給容器取個名字,嫌麻煩可以省去

ef_nfcs_img:容器是用哪個鏡像啟動的(一個容器,必須依賴一個鏡像啟動)

 

 和原來用PyCharm啟動的效果一致:

 

 

 

 

 

 這就OK啦

 

 

4:一些實用命令

退出容器又不關閉容器:Ctrl + P + Q

比如這種情況:

 

 

 

直接輸入exit 會退出且關閉容器,工程就stop了

或者Ctrl + C,會報錯KeyboardInterrupt,工程就也stop了

再訪問就訪問不了了:

 

 

此時,就需要使用命令:docker start 容器ID,去再啟動容器后,就可以繼續訪問工程了,

使用命令:

docker exec -it 容器ID /bin/bash

或者

docker attach  容器ID,重新進入容器后,可查看程序打印的日志

 

 

但是,如果使用Ctrl + P + Q退出容器,就不會中斷工程,等於退出容器后,還可訪問容器的工程,

再進入,也是使用命令:docker attach  容器ID

 

ctrl+d 退出容器且關閉, docker ps 查看無

ctrl+p+q 退出容器但不關閉

 

查看安裝的docker:yum list installed | grep docker

查看容器:docker ps -a

查看鏡像:docker images

刪除容器:docker rm 容器ID

刪除鏡像:docker rmi 鏡像ID/鏡像名

安裝rz上傳,sz下載的命令:yum -y install lrzsz

docker inspect 容器ID:返回一個Json文件記錄Docker容器的配置和狀態信息

 

將容器導出到容器的鏡像文件 : docker export 容器ID > update.tar

用容器的鏡像文件創建一個新靜像:docker import - 鏡像名 < update.tar 

 

創建完成之后,生成並啟動鏡像的容器:docker run -it  鏡像名

不行就在后面加一個/bin/bash ,然后進入code的package目錄,手動啟動程序:python server.py

比如報錯:Error response from daemon: No command specified

 

 

 

鏡像保存為鏡像文件: docker save -o update1.tar update(update是一個已經存在的鏡像)

從鏡像文件加載生成新鏡像:docker load < update1.tar

 

>>>>>>>>>>>>>>>BYE BYE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM