91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-28 17:42:01 來源:腳本之家 閱讀:381 作者:Darcy''''''''s Blog 欄目:開發技術

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

docker

為什么使用docker?

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

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

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

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

k8s

為什么使用k8s?

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

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服務器,所以在部署的時候我在同一個pod里面也加入了一個nginx鏡像,不過為了少打包一個新的nginx鏡像(帶有nginx配置文件和靜態文件的nginx鏡像),我在兩個容器之間使用volumes來共享django靜態文件和nginx配置文件。

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

田林县| 聂拉木县| 房产| 梨树县| 陵川县| 武功县| 息烽县| 库伦旗| 富源县| 图们市| 休宁县| 仁怀市| 乳源| 青阳县| 育儿| 新余市| 华容县| 灵山县| 溆浦县| 绥宁县| 赣州市| 枣庄市| 古丈县| 海口市| 樟树市| 舒兰市| 家居| 工布江达县| 五大连池市| 大余县| 航空| 三台县| 灵璧县| 甘泉县| 永丰县| 汉阴县| 全椒县| 石渠县| 靖西县| 教育| 灌云县|