成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

django開發(fā)-在Docker中部署django項目

galois / 2432人閱讀

摘要:今天整理了一下如何在中部署項目。執(zhí)行可以查看容器出錯的具體原因。若上述容器都成功運行,則在瀏覽器中輸入時,視圖會返回相應(yīng)的結(jié)果。以交互方式進入容器后,進入數(shù)據(jù)庫,會看到在數(shù)據(jù)庫中生成了相應(yīng)的表。

今天整理了一下如何在docker中部署django項目。

1.環(huán)境如下:

python3.6  django2.0.5  nginx  mysql5.7  gunicorn

2.項目結(jié)構(gòu)如下:

由于僅僅是測試,項目比較簡單,復(fù)雜的項目也是這個流程。

通過上面的結(jié)構(gòu),我們需要編寫的文件包括

blog/Dockerfile, blog/gunicorn.conf, blog/start.sh, nginx/Doickerfile, nginx/nginx.conf, docker-conpose.yml

3.blog/Dockerfile(基礎(chǔ)鏡像使用的是python:3.6,而不是ubuntu、centos。如果是ubuntu、cenos,Dockerfile文件中需要配置python環(huán)境):

FROM python:3.6    # 選擇基礎(chǔ)鏡像,這里的基礎(chǔ)鏡像也可以選擇ubuntu,centos等,但是下面的配置就會發(fā)生變化

# 創(chuàng)建工作目錄
RUN mkdir /blog  

#設(shè)置工作目錄
WORKDIR /blog

#將當前目錄加入到工作目錄中
ADD . /blog
RUN pip3 install -r requirements.txt
#對外暴露端口
EXPOSE 80 8080 8000 5000
#設(shè)置環(huán)境變量
ENV SPIDER=/blog

4.blog/gunicorn.conf:

workers=2
bind="0.0.0.0:8000"
proc_name="blog"

5.blog/start.sh:

#!/bin/bash
python manage.py collectstatic --noinput&&
python manage.py makemigrations&&
python manage.py migrate &&
gunicornblog.wsgi:application -c gunicorn.conf

6.nginx/Dockerfile:

FROM nginx    # nginx鏡像,最好是先拉取到本地


# 對外暴露端口
EXPOSE 80 8000

RUN rm /etc/nginx/conf.d/default.conf  # 刪除原有配置文件
ADD nginx.conf  /etc/nginx/conf.d/   # 添加配置文件
RUN mkdir -p /usr/share/nginx/html/static  # 創(chuàng)建靜態(tài)資源文件夾

7.nginx/nginx.conf:

server {
    listen      80;
    server_name localhost;

    location /static {
        alias /usr/share/nginx/html/static;
    }

    location / {
        proxy_pass http://web:8000;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

8.docker-compose.yml:

version: "3"

services:


db:
    image: mysql:5.7  # mysql鏡像,最好先拉取到本地
    environment:
      - MYSQL_HOST=localhost
      - MYSQL_DATABASE=docker
      - MYSQL_USER=root
      - MYSQL_PASSWORD=wyzane
      - MYSQL_ROOT_PASSWORD=wyzane
    volumes:
      - /home/wyzane/pyprojects/db:/var/lib/mysql  # 將宿主機與容器中的文件映射
    restart: always  # 若容器運行出現(xiàn)問題,會自動重啟容器

  web:
    build: ./blog
    ports:
    - "8000:8000"
    volumes:
    - ./blog:/blog
    - /tmp/logs:/tmp
    command: bash start.sh  # 執(zhí)行命令,有多種格式
    links:
    - db
    depends_on:
    - db
    restart: always

nginx:
    build: ./nginx
    ports:
    - "80:80"
    volumes:
    - ./blog/static:/usr/share/nginx/html/static:ro
    links:
    - web
    depends_on:
    - web
    restart: always

9.依次執(zhí)行以下命令:
docker-compose build
docker-compose up -d

10.執(zhí)行完成后,通過
docker images 命令可以查看新增了2個鏡像
docker ps 命令可以查看啟動了3個容器

多執(zhí)行幾次docker ps,當容器的STATUS是以Restarting開頭時,表示這個容器運行時發(fā)生了錯誤。執(zhí)行docker logs CONTAINERID可以查看容器出錯的具體原因。

若上述容器都成功運行,則在瀏覽器中輸入http://127.0.0.1:80/api/v1/articles/info/時,視圖會返回相應(yīng)的結(jié)果。
以交互方式進入容器:

docker exec -it CONTAINERID /bin/bash

后,進入mysql數(shù)據(jù)庫,會看到在數(shù)據(jù)庫中生成了相應(yīng)的表。

11.運行中遇到的問題,在運行3個容器后,web容器一直報錯,通過
docker logs CONTAINERID查看主要錯誤信息如下:

django.db.utils.OperationalError: (2003, "Can"t connect to MySQL server on "mariadb55" (111 "Connection refused")")

解決方案在這里 https://stackoverflow.com/que...
主要是在settings.py中,將database配置中的HOST值改成db,而不是127.0.0.1,指向docker-compose.yml中的db服務(wù)

參考自 https://blog.csdn.net/hbnn111...

今天就聊到這里,如有疑問,歡迎交流!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27547.html

相關(guān)文章

  • django開發(fā)-Docker部署django項目

    摘要:今天整理了一下如何在中部署項目。執(zhí)行可以查看容器出錯的具體原因。若上述容器都成功運行,則在瀏覽器中輸入時,視圖會返回相應(yīng)的結(jié)果。以交互方式進入容器后,進入數(shù)據(jù)庫,會看到在數(shù)據(jù)庫中生成了相應(yīng)的表。 今天整理了一下如何在docker中部署django項目。 1.環(huán)境如下: python3.6 django2.0.5 nginx mysql5.7 gunicorn 2.項目結(jié)構(gòu)如下:...

    MonoLog 評論0 收藏0
  • [譯] 如何使用 Docker 組件開發(fā) Django 項目?

    摘要:按照指示,分別安裝和,然后測試安裝結(jié)果接下來,根據(jù)以下項目結(jié)構(gòu)從克隆一份項目或自己創(chuàng)建項目現(xiàn)在我們準備容器運行開啟,只需運行這個命令設(shè)置一個新的開發(fā)環(huán)境。 原文地址:Django Development With Docker Compose and Machine 以下為譯文 Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器...

    forsigner 評論0 收藏0
  • [原]打造數(shù)據(jù)產(chǎn)品的快速原型:DjangoDocker之旅

    摘要:而大多數(shù)數(shù)據(jù)科學(xué)研究的場景下,更快的速度也意味著更早地發(fā)現(xiàn)問題和完成檢驗假設(shè)的閉環(huán)。通常,數(shù)據(jù)科學(xué)被認為研究成果立即應(yīng)用到生產(chǎn)環(huán)境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數(shù)據(jù)科學(xué)研究中,快速驗證想法是非常關(guān)鍵的一環(huán),而如何快速開發(fā)出數(shù)據(jù)產(chǎn)品則可以有效推動整個數(shù)據(jù)科學(xué)項...

    zhoutao 評論0 收藏0
  • [原]打造數(shù)據(jù)產(chǎn)品的快速原型:DjangoDocker之旅

    摘要:而大多數(shù)數(shù)據(jù)科學(xué)研究的場景下,更快的速度也意味著更早地發(fā)現(xiàn)問題和完成檢驗假設(shè)的閉環(huán)。通常,數(shù)據(jù)科學(xué)被認為研究成果立即應(yīng)用到生產(chǎn)環(huán)境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數(shù)據(jù)科學(xué)研究中,快速驗證想法是非常關(guān)鍵的一環(huán),而如何快速開發(fā)出數(shù)據(jù)產(chǎn)品則可以有效推動整個數(shù)據(jù)科學(xué)項...

    zhangqh 評論0 收藏0
  • 使用Docker開發(fā)Django項目

    摘要:背景當多個項目且某些包無法兼容時,通常我們使用虛擬環(huán)境即可解決。但事實上不僅僅只能用于線上應(yīng)用部署,我們的開發(fā)調(diào)試環(huán)境也可以使用。 背景 當多個Python項目且某些包無法兼容時,通常我們使用虛擬環(huán)境即可解決。 但是在團隊中多個環(huán)境其實相對比較固定了,較少變更,如果換電腦或者新人加入需要重新一個一個配置虛擬環(huán)境并安裝相應(yīng)的包,會耗費很多時間,而且由于重新安裝的包依賴可能會有版本變更導(dǎo)致...

    MASAILA 評論0 收藏0

發(fā)表評論

0條評論

galois

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<