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

python項目以docker形式打包部署詳細流程

 更新時間:2024年08月30日 08:34:29   作者:做夢都在改BUG  
Docker是一個開源項目,為開發(fā)人員和系統(tǒng)管理員提供了一個開放平臺,可以將應用程序構建、打包為一個輕量級容器,并在任何地方運行,這篇文章主要給大家介紹了關于python項目以docker形式打包部署的詳細流程,需要的朋友可以參考下

一、前言

在很久很久以前,我已經(jīng)聽過Docker的大名,當時服務著急上線雖然考慮過用Docker來部署我的服務,但是因為趕期的原因放棄了。

這兩天因為華為云服務器到期,而且阿里云服務器優(yōu)惠力度特別大的原因,我要把華為云服務器里的工程遷移到阿里云。

遷移的過程中,大量的時間精力浪費在了重裝python,加載依賴,遷移項目,配置端口等環(huán)境配置的工作上。

我在想,如果當時用了Docker部署,我至于受這氣?

于是,一不做二不休,就花了點時間把部署以docker的形式部署了。

在部署前,我以為是一件多么苦難的事,結果,操作后才發(fā)現(xiàn),原來最難的一步是跨出第一步。

二、docker安裝

還好,在之前我半途而廢的過程中,我把經(jīng)驗已經(jīng)積累下來了。

需要注意的是Docker桌面目前僅支持以下幾個操作系統(tǒng)

我的服務器是CentOS,所以這個桌面應該是用不了了,但是影響應該不大。因為Docker引擎目前支持絕大多數(shù)操作系統(tǒng)。

1. CentOS安裝Docker的先決條件

1.1 確認自己的系統(tǒng)版本

如果需要安裝Docker引擎,需要的系統(tǒng)版本必須是7、8、9的版本。并且官方建議Linux內(nèi)核為3.10及以上。

lsb_release -a

版本為7.9,符合條件。

uname -r

內(nèi)核為3.10。符合條件。

1.2 啟用centos-extras存儲庫

官方說明,該存儲庫默認情況下處于啟用狀態(tài),但是如果你之前禁用過它,則需要重新啟用它。

yum repolist enabled

可以看到,extras存儲庫已啟用

如果你之前不巧,使用過以下命令或者其他命令禁用過extras存儲庫:

sudo vi /etc/yum.repos.d/CentOS-Base.repo

enabled為1 表示正在啟用,為0表示已被禁用。

在進行更改后,建議清除YUM緩存,以確保使用最新的倉庫配置。

sudo yum clean all

溫馨提示,不要隨便禁用庫。

2. 卸載舊版本(如果之前安裝過的話)

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

因為,我沒安裝過舊版Docker,所以這里顯示沒有刪除任何東西。

3. 選擇安裝方式

  • 官方推薦通過設置Docke存儲庫的方式安裝,便于安裝和升級。
  • 也可以在官方下載 RPM 包,手動安裝,然后管理純靠手動升級。適合安裝在無法訪問外網(wǎng)的內(nèi)網(wǎng)系統(tǒng)上。
  • 在測試和開發(fā)環(huán)境中,您可以使用自動化的便捷腳本來安裝 Docker。

這邊使用官方推薦的存儲庫安裝。

4. 安裝流程

4.1 設置倉庫

首先需要安裝一個工具包yum-util,它提供了yum-config-manager功能:

sudo yum install -y yum-utils

這個是官網(wǎng)的中央倉庫,國內(nèi)速度會有一些慢。

sudo yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo

國內(nèi)的朋友推薦再加一個阿里云的鏡像倉庫,體驗會好很多。

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.2 選擇版本安裝

官網(wǎng)給出了直接安裝最新版本和安裝指定版本的指令。

  • 直接安裝最新版本

需要一起安裝 Docker Engine、containerd 和 Docker Compose

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 選擇指定版本安裝

首先列出所有版本

yum list docker-ce --showduplicates | sort -r

框住的就是版本號,選擇指定版本,然后使用下面的命令進行安裝。

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin

<VERSION_STRING>部分換為指定版本號即可。

5. 啟動運行docker

1. 啟動 Docker。

sudo systemctl start docker

2. 通過運行映像來驗證 Docker 引擎安裝是否成功。hello-world

sudo docker run hello-world

6. 卸載 Docker 引擎

1. 卸載 Docker Engine、CLI、containerd 和 Docker Compose 包:

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

2. 主機上的image、containerd或自定義配置文件不會自動刪除,需要手動執(zhí)行。

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

三、python項目Dockerfile編寫。

提前聲明,Dockerfile雖然看起來有點復雜,但是其實還是挺容易理清的??梢韵葏⒖枷挛疫@個工程的Dockerfile,其實并不復雜。

FROM python:3.6

# 設置工作目錄
WORKDIR /app

# 復制項目文件到容器中
COPY . /app

# 如果你的鏡像中沒有 tzdata,則需要安裝它
# 注意:python:3.6 官方鏡像可能已包含 tzdata
# RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*

# 設置時區(qū)為東八區(qū)(中國標準時間)
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

# 安裝依賴
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

# 暴露端口
EXPOSE 7010

# 設置容器啟動時運行的命令
CMD ["python3", "api.py"]

1. 選擇基礎鏡像

FROM python:3.6
  • 作用:指定基礎鏡像為 python:3.6。
  • 注意事項:我這里是python項目,選擇的是python的鏡像,如果是nginx或者java項目,需要設置對應的景象。

2. 設置工作目錄

WORKDIR /app
  • 作用:設置工作目錄為 /app。
  • 注意事項:這個目錄的設置就見仁見智,有的喜歡用project,有的喜歡什么都不設,看公司規(guī)范和個人習慣。我們只需要確保后續(xù)的文件操作都是基于這個工作目錄的。

3. 復制項目文件到容器中

COPY . /app
  • 作用:將當前上下文中的所有文件和目錄復制到鏡像的 /app 目錄下。這里直接用當前目錄就行。
  • 注意事項:可以使用 .dockerignore 文件排除不需要的文件和目錄,以減少鏡像大小。規(guī)則和gitignore一個路數(shù)。需要確保的是敏感文件(如密鑰、密碼等)不會被復制到鏡像中。

4. 安裝 tzdata(可選)

# RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
  • 作用:安裝 tzdata 以確保時區(qū)設置能夠正確工作。(可選)
  • 注意事項:如果基礎鏡像已經(jīng)包含 tzdata,則可以省略此步驟。

5. 設置容器時區(qū)

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
  • 作用:設置容器的時區(qū)為東八區(qū)(中國標準時間)。這個是docker老生常談的問題,他的時區(qū)需要自己更正。
  • 注意事項:確保應用或服務需要這個特定的時區(qū)設置。國內(nèi)的一般應該都需要,不然打個日志都不確定是啥時候的了。

6. 安裝 Python 依賴

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
  • 作用:下載需要的第三方庫。
  • 注意事項:這個requirements.txt,直接用pipreqs生成就行。需要注意的是要掛個國內(nèi)的 PyPI 鏡像來安裝 Python 依賴,不然依賴下載太慢了。我這里是使用清華大學的鏡像。

7. 暴露端口

EXPOSE 7010
  • 作用:聲明容器在運行時應該監(jiān)聽 7010 端口。
  • 注意事項:沒啥需要注意的,自己設置需要的端口就行。

8. 設置容器啟動時運行的命令

CMD ["python3", "api.py"]
  • 作用:設置容器啟動時默認執(zhí)行的命令。
  • 注意事項:根據(jù)個人需要設置就行。如果你的應用需要特定的環(huán)境變量或配置,可以在 CMD 之前使用 ENV 指令來設置它們。

四、docker鏡像打包

編寫完dockerfile,我們一般喜歡放在需要打包的地方的根路徑,然后直接運行

docker build -t opendrop . 
  • pythondemo改成自己想要的鏡像的名字。

運行之后,docker會自動完成dockerfile里面的每一個步驟。打包完成后,我們就可以看到images。

大家直接docker images 即可看到。

如果要重新打包,需要先刪除原來的鏡像,執(zhí)行以下命令即可。

docker rmi a9765c2d0703(鏡像id)

操作如下:

五、根據(jù)鏡像啟動容器

根據(jù)鏡像創(chuàng)建容器執(zhí)行以下命令

`docker run -d -p 要映射的本機端口:docker中項目運行的端口 鏡像名稱`

我這里端口都是7010,你們根據(jù)需要自行配置。

docker run  -d -p 7010:7010 opendrop

然后用docker ps就能看到執(zhí)行的容器了。

如果想看項目日志,可以執(zhí)行以下命令進入docker查看。

docker exec -it 3843cbd6fb40(容器id) /bin/bash

  • 退出時使用 ctrl + D 退出

docker 容器相關常用命令

1. 停止容器

docker stop 【容器id】
  • 停止一個或多個正在運行的容器。

2. 重啟容器

docker restart 【容器id】
  • 重啟一個或多個容器。

3. 刪除容器

docker rm 【容器id】
  • 刪除一個或多個容器。參數(shù)-f:強制刪除容器,即使容器正在運行。

4. 導出/導入容器

docker export 【容器id】 > file.tar
docker import file.tar 【鏡像名字】
  • 將容器導出為tar文件;從tar文件導入容器為鏡像

總結 

到此這篇關于python項目以docker形式打包部署的文章就介紹到這了,更多相關python以docker打包部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python列表刪除元素del、pop()和remove()的區(qū)別小結

    Python列表刪除元素del、pop()和remove()的區(qū)別小結

    這篇文章主要給大家介紹了關于Python列表刪除元素del、pop()和remove()的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • python 添加用戶設置密碼并發(fā)郵件給root用戶

    python 添加用戶設置密碼并發(fā)郵件給root用戶

    這篇文章主要介紹了python 添加用戶設置密碼并發(fā)郵件給root用戶的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • 關于python中.xpath的使用問題

    關于python中.xpath的使用問題

    根據(jù)xpath定位到了tr,注意瀏覽器自動生成了tbody,在python中要把自動生成的tbody層級去掉,這樣要怎么操作呢?下面通過代碼給大家介紹下python中.xpath的使用問題,感興趣的朋友一起看看吧
    2021-11-11
  • Django和Ueditor自定義存儲上傳文件的文件名

    Django和Ueditor自定義存儲上傳文件的文件名

    這篇文章主要介紹了Django和Ueditor自定義存儲上傳文件的文件名,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 利用matplotlib實現(xiàn)根據(jù)實時數(shù)據(jù)動態(tài)更新圖形

    利用matplotlib實現(xiàn)根據(jù)實時數(shù)據(jù)動態(tài)更新圖形

    今天小編就為大家分享一篇利用matplotlib實現(xiàn)根據(jù)實時數(shù)據(jù)動態(tài)更新圖形,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python反射操作對象屬性方法詳解

    Python反射操作對象屬性方法詳解

    這篇文章主要介紹了Python反射操作對象屬性方法詳解,在Python面對對象中,通過字符串的形式去操作對象的屬性方法就稱之為反射(在Python中一切事物都是可以為對象),需要的朋友可以參考下
    2023-08-08
  • pytorch loss反向傳播出錯的解決方案

    pytorch loss反向傳播出錯的解決方案

    這篇文章主要介紹了pytorch loss反向傳播出錯的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • python內(nèi)存泄漏排查技巧總結

    python內(nèi)存泄漏排查技巧總結

    這篇文章主要給大家分享了python內(nèi)存泄漏排查技巧總結,工作過程中服務難免遇到內(nèi)存泄漏問題,下面文章就給大家總結一些排查下技巧,具有一定的參考價值,需要的朋友可以參考一下
    2021-12-12
  • python人工智能tensorflow常見損失函數(shù)LOSS匯總

    python人工智能tensorflow常見損失函數(shù)LOSS匯總

    這篇文章主要為大家介紹了python人工智能tensorflowf常見損失函數(shù)LOSS匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Django DRF認證組件流程實現(xiàn)原理詳解

    Django DRF認證組件流程實現(xiàn)原理詳解

    這篇文章主要介紹了Django DRF認證組件流程實現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08

最新評論