最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用k8s部署Django項目的方法步驟

 更新時間:2019年01月14日 08:14:21   作者:Darcy''''''''s Blog  
這篇文章主要介紹了使用k8s部署Django項目的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

接觸了一下docker和k8s,感覺是非常不錯的東西。能夠方便的部署線上環(huán)境,而且還能夠更好的利用機器的資源,感覺是以后的大趨勢。最近剛好有一個基于django的項目,所以就把這個項目打包到docker里面,放到k8是里面運行,順便學(xué)習(xí)下k8s和docker的使用。

docker

為什么使用docker?

我覺得docker最大的好處是部署的時候比較方便,一個預(yù)先打包好的docker鏡像,可以在任何安裝有docker的機器上面直接運行,不用再安裝其他任何的依賴環(huán)境。不管是在開發(fā)、測試、還是發(fā)布階段,都能節(jié)省很多安裝依賴和配置文件的時間,真正做到了Build once, Run anywhere。

docker在我的項目中怎么使用?

在我的項目中,我主要使用dockerfile來生成項目的鏡像。我們都知道docker是按照層的思想來構(gòu)建一個鏡像的,我的鏡像的最底層的操作系統(tǒng)使用的是centos7,再接著安裝python相關(guān)的工具和庫,然后安裝項目所需求的庫,最后再把項目拷到鏡像中。

FROM centos:7

ENV LC_ALL=en_US.utf-8 LANG=en_US.utf-8
RUN yum install -y https://centos7.iuscommunity.org/ius-release.rpm && \
 yum install -y python36u python36u-libs python36u-devel python36u-pip mysql-devel gcc which && \
 pip3.6 install pipenv

COPY Pipfile Pipfile.lock /my_app/
WORKDIR /my_app
RUN pipenv sync

COPY my_app_site /my_app/my_app_site
COPY gunicorn_config.py /my_app/gunicorn_config.py
COPY resource/nginx.conf /my_app/resource/nginx.conf

RUN mkdir /static/ && \
 cd my_app_site && \
 pipenv run python manage.py collectstatic && \
 cd my_app_site && \
 rm -f local_settings.py

WORKDIR /my_app

EXPOSE 8000
CMD pipenv run gunicorn my_app_site.wsgi -c gunicorn_config.py --log-file logs/gunicorn.log

在dockerfile中,每個RUN命令都會構(gòu)建新的層,我這邊之所以在dockerfile中使用三個RUN命令,是為了能夠盡量的減少重復(fù)的構(gòu)建過程。每次在構(gòu)建鏡像的時候docker都會判斷每層的內(nèi)容是否有修改,如果沒有修改的話,就不需要重復(fù)的構(gòu)建。所以在應(yīng)用開發(fā)的過程中,上面的dockerfile最多也就重新構(gòu)建最后一層和倒數(shù)第二層(在項目有新包加入的時候才重新構(gòu)建倒數(shù)第二層,不然正常情況下就只會重新構(gòu)建最后一層)。

k8s

為什么使用k8s?

k8s的功能非常強大。不過簡單的來說,k8s是用來管理容器的一個工具。有了k8s以后我們就能讓k8s自動的去拉取docker鏡像,并且根據(jù)需要來啟動、關(guān)閉、調(diào)度docker容器,實現(xiàn)一些自動化運維操作。

k8s在我的項目中怎么使用?

我使用了yaml文件定義了一個k8s部署,下面是具體的文件示例:

# ------------------- MyApp Deployment ------------------- #

kind: Deployment
apiVersion: apps/v1beta2
metadata:
 labels:
 k8s-app: my_app
 name: my_app
spec:
 replicas: 2
 revisionHistoryLimit: 10
 selector:
 matchLabels:
 k8s-app: my_app
 template:
 metadata:
 labels:
 k8s-app: my_app
 spec:
 volumes:
 - name: nginx-config
 emptyDir: {}
 - name: static-dir
 emptyDir: {}
 containers:
 - name: my_app-web
 image: my_app:latest
 ports:
 - containerPort: 8000
  protocol: TCP
 volumeMounts:
 - name: nginx-config
  mountPath: /etc/nginx/conf.d/
 - name: static-dir
  mountPath: /usr/share/nginx/html/my_app/static
 command: ["/bin/sh"]
 args: ["-c", "cp resource/nginx.conf /etc/nginx/conf.d/ && \
  cp /static/* /usr/share/nginx/html/my_app/static -rf && \
  pipenv run gunicorn my_app.wsgi -c gunicorn_config.py"]
 - name: my_app-nginx
 image: nginx:1.15.8
 ports:
  - containerPort: 8899
  protocol: TCP
 volumeMounts:
  - name: nginx-config
  mountPath: /etc/nginx/conf.d/
  - name: static-dir
  mountPath: /usr/share/nginx/html/my_app/static
 livenessProbe:
  httpGet:
  scheme: HTTP
  path: /
  port: 8899
  initialDelaySeconds: 30
  timeoutSeconds: 30
---

# ------------------- MyApp Service ------------------- #

kind: Service
apiVersion: v1
metadata:
 labels:
 k8s-app: my_app
 name: my_app
spec:
 ports:
 - port: 8899
 targetPort: 8899
 selector:
 k8s-app: my_app
 type: NodePort

django項目在部署的時候需要用到nginx服務(wù)器,所以在部署的時候我在同一個pod里面也加入了一個nginx鏡像,不過為了少打包一個新的nginx鏡像(帶有nginx配置文件和靜態(tài)文件的nginx鏡像),我在兩個容器之間使用volumes來共享django靜態(tài)文件和nginx配置文件。

總結(jié)

以上就是我使用docker和k8s來部署django項目的一個示例,文章里面沒有包含一些具體的docker和k8s的介紹,是因為這些內(nèi)容比較多,在這篇小文章里面放不下,感興趣的同學(xué)可以去他們官網(wǎng)詳細(xì)了解。最后我只想說,docker和k8s真是好東西,沒有用過的同學(xué)趕緊去試試吧!希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python實現(xiàn)梯度下降求解邏輯回歸

    python實現(xiàn)梯度下降求解邏輯回歸

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)梯度下降求解邏輯回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • python保留小數(shù)位的三種實現(xiàn)方法

    python保留小數(shù)位的三種實現(xiàn)方法

    本文給大家分享python保留小數(shù)位的三種方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • 使用Python檢查CPU型號并彈出警告信息

    使用Python檢查CPU型號并彈出警告信息

    本教程將指導(dǎo)你如何編寫一個Python程序,該程序能夠在啟動時檢查計算機的CPU型號,如果檢測到CPU型號包含“I3”,則會彈出一個警告窗口,感興趣的小伙伴跟著小編一起來看看吧
    2024-12-12
  • 詳解Python中type與object的恩怨糾葛

    詳解Python中type與object的恩怨糾葛

    估計很多人都會有這樣一個困惑,object?的類型是?type,但它同時又是?type?的基類,這是怎么做到的?帶著這個疑問,我們開始本文的內(nèi)容
    2023-04-04
  • 關(guān)于Qt6中QtMultimedia多媒體模塊的重大改變分析

    關(guān)于Qt6中QtMultimedia多媒體模塊的重大改變分析

    如果您一直在 Qt 5 中使用 Qt Multimedia,則需要對您的實現(xiàn)進(jìn)行更改。這篇博文將嘗試引導(dǎo)您完成最大的變化,同時查看 API 和內(nèi)部結(jié)構(gòu)
    2021-09-09
  • Python爬取酷狗MP3音頻的步驟

    Python爬取酷狗MP3音頻的步驟

    這篇文章主要介紹了Python爬取酷狗MP3音頻的步驟,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • 用Python寫腳本,實現(xiàn)完全備份和增量備份的示例

    用Python寫腳本,實現(xiàn)完全備份和增量備份的示例

    下面小編就為大家分享一篇用Python寫腳本,實現(xiàn)完全備份和增量備份的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解Python中的整除運算及其應(yīng)用場景

    詳解Python中的整除運算及其應(yīng)用場景

    在Python編程中,整除運算(也稱為整商運算)是一個常見的操作,它用于計算兩個數(shù)相除后的整數(shù)部分,下面就跟隨小編一起來了解一下它的語法,工作原理和實際應(yīng)用案例吧
    2024-11-11
  • Python中的浮點數(shù)原理與運算分析

    Python中的浮點數(shù)原理與運算分析

    這篇文章主要介紹了Python中的浮點數(shù)原理與運算分析,結(jié)合實例形式分析了Python浮點數(shù)操作的常見錯誤,并簡單解釋了浮點數(shù)運算的原理與比較運算實現(xiàn)方法,需要的朋友可以參考下
    2017-10-10
  • python實現(xiàn)識別手寫數(shù)字 python圖像識別算法

    python實現(xiàn)識別手寫數(shù)字 python圖像識別算法

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)識別手寫數(shù)字,python圖像識別算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論

吉木萨尔县| 中方县| 呼玛县| 余江县| 阿鲁科尔沁旗| 谷城县| 德安县| 曲水县| 阜平县| 三原县| 海原县| 阜宁县| 和静县| 漳平市| 通道| 甘洛县| 尚志市| 金塔县| 惠东县| 怀集县| 顺平县| 乌兰县| 廊坊市| 精河县| 溧阳市| 徐闻县| 淮北市| 云林县| 连州市| 通渭县| 光山县| 朝阳市| 吴忠市| 内乡县| 龙口市| 邮箱| 文水县| 九寨沟县| 治县。| 黎城县| 浪卡子县|