国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 00:36:38
字體:
供稿:網(wǎng)友

接觸了一下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:7ENV LC_ALL=en_US.utf-8 LANG=en_US.utf-8RUN 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 pipenvCOPY Pipfile Pipfile.lock /my_app/WORKDIR /my_appRUN pipenv syncCOPY my_app_site /my_app/my_app_siteCOPY gunicorn_config.py /my_app/gunicorn_config.pyCOPY resource/nginx.conf /my_app/resource/nginx.confRUN mkdir /static/ && / cd my_app_site && / pipenv run python manage.py collectstatic && / cd my_app_site && / rm -f local_settings.pyWORKDIR /my_appEXPOSE 8000CMD 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: DeploymentapiVersion: apps/v1beta2metadata: labels: k8s-app: my_app name: my_appspec: 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: ServiceapiVersion: v1metadata: labels: k8s-app: my_app name: my_appspec: ports: - port: 8899 targetPort: 8899 selector: k8s-app: my_app type: NodePort            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜新| 如东县| 灵山县| 若尔盖县| 申扎县| 白水县| 潍坊市| 墨脱县| 寿阳县| 内黄县| 玛曲县| 富川| 沾化县| 双柏县| 拉孜县| 玉林市| 泰和县| 穆棱市| 东宁县| 德庆县| 平利县| 祁门县| 丘北县| 辉南县| 大渡口区| 长岛县| 于田县| 江阴市| 三河市| 绥化市| 巴彦县| 汾西县| 赫章县| 昌都县| 怀仁县| 萝北县| 临湘市| 汉阴县| 西吉县| 青浦区| 游戏|