亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用k8s部署Django項(xiàng)目的方法步驟

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

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

docker

為什么使用docker?

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

docker在我的項(xiàng)目中怎么使用?

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

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

k8s

為什么使用k8s?

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

k8s在我的項(xiàng)目中怎么使用?

我使用了yaml文件定義了一個(gè)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項(xiàng)目在部署的時(shí)候需要用到nginx服務(wù)器,所以在部署的時(shí)候我在同一個(gè)pod里面也加入了一個(gè)nginx鏡像,不過(guò)為了少打包一個(gè)新的nginx鏡像(帶有nginx配置文件和靜態(tài)文件的nginx鏡像),我在兩個(gè)容器之間使用volumes來(lái)共享django靜態(tài)文件和nginx配置文件。

總結(jié)

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

相關(guān)文章

  • 解決tensorflow測(cè)試模型時(shí)NotFoundError錯(cuò)誤的問(wèn)題

    解決tensorflow測(cè)試模型時(shí)NotFoundError錯(cuò)誤的問(wèn)題

    今天小編就為大家分享一篇解決tensorflow測(cè)試模型時(shí)NotFoundError錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python基于opencv實(shí)現(xiàn)的人臉識(shí)別(適合初學(xué)者)

    Python基于opencv實(shí)現(xiàn)的人臉識(shí)別(適合初學(xué)者)

    OpenCV是一個(gè)基于BSD許可開(kāi)源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python基于opencv實(shí)現(xiàn)的人臉識(shí)別,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),本文的教程非常適合初學(xué)者,需要的朋友可以參考下
    2022-03-03
  • python爬蟲(chóng)中抓取指數(shù)的實(shí)例講解

    python爬蟲(chóng)中抓取指數(shù)的實(shí)例講解

    在本篇文章里小編給大家整理了關(guān)于python爬蟲(chóng)中抓取指數(shù)的實(shí)例講解內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2020-12-12
  • python工具快速為音視頻自動(dòng)生成字幕(使用說(shuō)明)

    python工具快速為音視頻自動(dòng)生成字幕(使用說(shuō)明)

    這篇文章主要介紹了python工具快速為音視頻自動(dòng)生成字幕(使用說(shuō)明),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • python 對(duì)類(lèi)的成員函數(shù)開(kāi)啟線程的方法

    python 對(duì)類(lèi)的成員函數(shù)開(kāi)啟線程的方法

    今天小編就為大家分享一篇python 對(duì)類(lèi)的成員函數(shù)開(kāi)啟線程的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 基于python 將列表作為參數(shù)傳入函數(shù)時(shí)的測(cè)試與理解

    基于python 將列表作為參數(shù)傳入函數(shù)時(shí)的測(cè)試與理解

    這篇文章主要介紹了基于python 將列表作為參數(shù)傳入函數(shù)時(shí)的測(cè)試與理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python測(cè)試框架pytest介紹

    Python測(cè)試框架pytest介紹

    這篇文章主要介紹了Python測(cè)試框架pytest介紹,Pytest是一個(gè)非常成熟的全功能的python測(cè)試框架,有簡(jiǎn)單靈活易上手、支持參數(shù)化等優(yōu)點(diǎn),下面其相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • python如何將兩張圖片生成為全景圖片

    python如何將兩張圖片生成為全景圖片

    這篇文章主要為大家詳細(xì)介紹了python如何將兩張圖片生成為全景圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 如何基于Python按行合并兩個(gè)txt

    如何基于Python按行合并兩個(gè)txt

    這篇文章主要介紹了如何基于Python按行合并兩個(gè)txt,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python通用循環(huán)的構(gòu)造方法實(shí)例分析

    Python通用循環(huán)的構(gòu)造方法實(shí)例分析

    這篇文章主要介紹了Python通用循環(huán)的構(gòu)造方法,結(jié)合實(shí)例形式分析了Python常見(jiàn)的交互循環(huán)、哨兵循環(huán)、文件循環(huán)、死循環(huán)等實(shí)現(xiàn)與處理技巧,需要的朋友可以參考下
    2018-12-12

最新評(píng)論