国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

susheng / 3604人閱讀

摘要:總結(jié)本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很,但是相信對(duì)一些人還是有用的。

背景

手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼docker化,用于持續(xù)部署。

技術(shù)架構(gòu)

原來(lái)的代碼使用gunicorn+gevent+supervisor+flask+DB的架構(gòu);具體的細(xì)節(jié)如下:

本地服務(wù)器搭建了一個(gè)nginx域名服務(wù)器,里面區(qū)分PC端還是手機(jī)端;
訪問(wèn)域名通過(guò)nginx,訪問(wèn)前端靜態(tài)頁(yè)面的內(nèi)容
靜態(tài)頁(yè)面中加載指定地址的數(shù)據(jù),提供數(shù)據(jù)的服務(wù)由flask后端提供接口;
后端提供的接口,通過(guò)訪問(wèn)redis緩存和mongodb數(shù)據(jù)庫(kù),返回相應(yīng)的數(shù)據(jù);

docker-compose

上篇文章說(shuō)了flask項(xiàng)目是怎么拆分和組合的,但是上次僅僅是使用docker,多個(gè)容器之間使用的--link連接起來(lái)的,本篇文章將介紹如何使用docker-compose代替原來(lái)的多個(gè)docker命令;

docker compose是什么可以自行搜索,我直接上我的docker-compose.yml

    version: "3"
    
    services:
         flask:
            image: "flask:latest"
            restart: always
            depends_on:
              - mongoDB 
           - redisDB
            tty: true
            stdin_open: false
            environment:
              SLEEP_SECOND: 10
            container_name: flask
            logging:
              driver: "json-file"
              options:
                max-size: "200M"
                max-file: "10"
            command: "gunicorn manage:app -k gevent -w 4 -b 0.0.0.0"
            volumes:
              - $HOME/logs:/app/logs

            networks:
              - inline-network
            ports:
              - "8000:8000"
    
          matrix:
            image: "flask:latest"
            restart: always
            depends_on:
              - mongoDB
              - redisDB
            tty: true
            stdin_open: false
            environment:
              SLEEP_SECOND: 10
            container_name: matrix
            command: "flask matrix"
            volumes:
              - $HOME/logs:/app/logs
              - /etc/localtime:/etc/localtime
            networks:
             - inline-network
    
          broadcast:
            image: "flask:latest"
            restart: always
            depends_on:
              - mongoDB
              - redisDB
            tty: true
            stdin_open: false
            environment:
              SLEEP_SECOND: 10
            container_name: broadcast
            command: "flask broadcast"
            volumes:
              - $HOME/logs:/app/logs
              - /etc/localtime:/etc/localtime
            networks:
              - inline-network
    
        redisDB:
          image: "redis:latest"
          container_name: redis
          restart: always
          networks:
            inline-network:
              aliases:
                - redis
          ports:
            - "6379:6379"
    
        mongoDB:
          image: "mongo:latest"
          restart: always
          container_name: mongo
          ports:
            - "27017:27017"
          volumes:
            - /var/lib/mongo:/data/db
          networks:
            inline-network:
              aliases:
                - mongo
    
    networks:
      inline-network:
        driver: "bridge"
    
```

解釋?zhuān)核械膯?dòng)的dontainer都在inline-network網(wǎng)絡(luò)環(huán)境中,所以可以直接使用aliases指定的名字作為數(shù)據(jù)庫(kù)連接時(shí)候的host,本來(lái)是不打算將數(shù)據(jù)庫(kù)的端口的,只給flask用,但是后面由于切換的時(shí)候是現(xiàn)切換數(shù)據(jù)庫(kù),在切換后段flask的鏡像,所以就將數(shù)據(jù)庫(kù)端口和宿主機(jī)綁定了。

其中flask、matrix、broadcast,都是之前代碼中的功能,使用supervisor啟動(dòng)的,現(xiàn)在多帶帶啟動(dòng)三個(gè)docker進(jìn)程去完成。

前端docker

前端的PC端和移動(dòng)端,都使用npm構(gòu)建成dist文件,然后通過(guò)nginx定向到指定的dist文件內(nèi)容就可以,所以我們對(duì)前端的代碼也進(jìn)行了docker化,使用的是nginx;

dockerfile:

FROM nginx:1.15-alpine

COPY dist/ /usr/share/nginx/html

COPY default.conf /etc/nginx/conf.d/default.conf

ENTRYPOINT nginx -g "daemon off;"

default.conf

 server {
     listen       80;
     server_name  localhost;
 
     #charset koi8-r;
     #access_log  /var/log/nginx/host.access.log  main;
 
     location / {
         root   /usr/share/nginx/html;
         index  index.html index.htm;
         try_files $uri $uri/ /index.html;
     }
 
 
     #error_page  404              /404.html;
 
     # redirect server error pages to the static page /50x.html
     #
     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
         root   /usr/share/nginx/html;
     }
 }

PC端和移動(dòng)端使用的dockerfile和default.conf都是上面的;

在服務(wù)其部署的時(shí)候,只需要部署域名服務(wù),將PC端和移動(dòng)端的docker鏡像映射到宿主機(jī)的8088和8087端口,服務(wù)器nginx配置中根據(jù)PC請(qǐng)求和移動(dòng)端的請(qǐng)求,定位到指定的PC/移動(dòng)端nginx鏡像即可。

總結(jié)

本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很LOW,但是相信對(duì)一些人還是有用的。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/43896.html

相關(guān)文章

  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:背景手里有一個(gè)項(xiàng)目,代碼按照前端代碼庫(kù)后端代碼庫(kù)分別在上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼化,用于持續(xù)部署。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是...

    Berwin 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:背景手里有一個(gè)項(xiàng)目,代碼按照前端代碼庫(kù)后端代碼庫(kù)分別在上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼化,用于持續(xù)部署。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是...

    leon 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:背景手里有一個(gè)項(xiàng)目,代碼按照前端代碼庫(kù)后端代碼庫(kù)分別在上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼化,用于持續(xù)部署。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是...

    kumfo 評(píng)論0 收藏0
  • Flask+python3+supervisor+redis+docker+nginx技術(shù)架構(gòu)web

    摘要:總結(jié)本次鏡像化大概花了一周的時(shí)間,包括測(cè)試和解決一些坑,很多知識(shí)點(diǎn)包括原來(lái)的項(xiàng)目都不是太熟悉,所以記錄一下,可能回頭會(huì)發(fā)現(xiàn)這些很,但是相信對(duì)一些人還是有用的。 背景 手里有一個(gè)web項(xiàng)目,代碼按照前端代碼庫(kù)、后端代碼庫(kù)分別在GitHub上,分散帶來(lái)的結(jié)果是,不容易持續(xù)集成,比如你可能需要很多的job去保證一個(gè)項(xiàng)目的正常運(yùn)作,但是這個(gè)項(xiàng)目也不是特別大,所以嘗試將代碼融合,于此同時(shí)將代碼d...

    mo0n1andin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<