Rumah > Operasi dan penyelenggaraan > Nginx > Cara menggunakan Docker untuk menggunakan aplikasi Nginx+Flask+Mongo

Cara menggunakan Docker untuk menggunakan aplikasi Nginx+Flask+Mongo

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-05-14 16:16:06
ke hadapan
1325 orang telah melayarinya

nginx digunakan sebagai pelayan, mongo ialah sokongan pangkalan data, dan flask ialah rangka kerja web bahasa python Menggunakan ciri bekas docker, ia boleh digunakan dengan mudah pada pelayan Linux

<.>

Persediaan projek

Direktori utama projek adalah seperti berikut

__ project-name
  |__ docker-file
    |__ ningx
      |__ dockerfile
      |__ conf
        |__ nginx.conf
    |__ flask
      |__ dockerfile
      |__ requirements.txt
    |__ mongo
      |__ dockerfile
      |__ setup.sh
    |__ docker-compose.yml
  |__ src
    |__ app
      |__ ...
    |__ run.py
Salin selepas log masuk

Penerangan ringkas

The Direktori fail docker ialah fail konfigurasi yang digunakan oleh docker

Direktori src ialah kod python bagi aplikasi flask

Konfigurasi terperinci Docker< . /dockerfile adalah seperti berikut

version: &#39;2.2&#39;
services:
 mongo:
  build: ./mongo
  volumes:
   - "./mongo/db:/data/db"
  restart: always
  ports:
   - "27017:27017"
  environment:
   mongo_initdb_root_username: root
   mongo_initdb_root_password: 123456
 flask:
  build: ./flask
  links:
   - mongo
  ports:
   - "5000:5000"
  expose:
   - "5000"
  volumes:
   - ../src:/home/web
 nginx:
   build: ./nginx
   links:
    - flask
   volumes:
    - "./nginx/log:/var/log/nginx"
    - "../:/usr/share/nginx/html"
   ports:
    - "80:80"
    - "8080:8080"
    - "443:443"
   restart: always
Salin selepas log masuk
/mongo/setup.sh Kandungannya adalah seperti berikut

Tujuan fail ini adalah untuk mencipta ujian pengguna dengan kata laluan ujian selepas memulakan mongodb, dan berikannya operasi baca dan tulis ujian pangkalan data

from mongo:3.6
# 设置时区
env tz=asia/shanghai
run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo $tz > /etc/timezone
# 设置工作目录
env workdir /usr/local/work
env auto_run_dir /docker-entrypoint-initdb.d
env install_mongo_shell setup.sh
run mkdir -p $workdir
# 复制数据库的初始化命令
copy ./$install_mongo_shell $auto_run_dir/
run chmod +x $auto_run_dir/$install_mongo_shell
Salin selepas log masuk

aplikasi kelalang Konfigurasi


/flask/dockerfile adalah seperti berikut

#!/bin/bash
mongo <<eof
use admin;
db.auth(&#39;root&#39;, &#39;123456&#39;);
use dmx_aluminum;
db.createuser({user:&#39;test&#39;,pwd:&#39;test&#39;,roles:[{role:&#39;readwrite&#39;,db:&#39;test&#39;}]});
db.createcollection("user");
eof
Salin selepas log masuk

/src/app/run.py kod

Berikut ialah ulasan untuk menyahpepijat app.run(), mulakan dengan gunicorn apabila menerbitkan

from python:3.6
# 设置时区
env tz=asia/shanghai
run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo $tz > /etc/timezone

# 设置工作区
run mkdir -p /home/web
workdir /home/web
# 添加依赖
add requirements.txt /home/web/requirements.txt
run pip3 install -i https://pypi.douban.com/simple/ -r requirements.txt

# 使用gunicorn启动应用
cmd gunicorn -w 4 -b 0.0.0.0:5000 run:app
Salin selepas log masuk

konfigurasi nginx


Kandungan /nginx/dockerfile adalah seperti berikut

Kandungan
from app import create_app
app = create_app(&#39;default&#39;)
app.debug=false
# if __name__ == &#39;__main__&#39;:
#  app.run()
Salin selepas log masuk

/nignx/conf/nginx.conf adalah seperti berikut

from nginx:1.14
# 设置时区
env tz=asia/shanghai
run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo $tz > /etc/timezone
# 复制配置
copy conf/nginx.conf /etc/nginx/nginx.conf
Salin selepas log masuk

Mulakan penggunaan


Masukkan direktori docker-flie cd docker-flie

Mulakan docker docker-compose up

Lihat status kontena docker ps

    Penyerahan setempat Masukkan 127.0.0.1 dalam penyemak imbas
  1. Akhir sekali, tiga bekas serupa dengan docker_file_nginx_1, docker_file_mongo_1, docker_file_flask_1 muncul, menunjukkan kejayaan! ! !
  2. Ulas pada pit
  3. 1 Fail permulaan dalam bekas mongol perlu diletakkan dalam direktori docker-entrypoint-initdb.d
  4. Saya telah mencuba perkara berikut, tetapi ia akan menunjukkan bahawa mongdb belum bermula.

    user nginx;
    worker_processes 1;
    
    error_log /var/log/nginx/error.log warn;
    pid    /var/run/nginx.pid;
    
    events {
      worker_connections 1024;
    }
    
    
    http {
      include    /etc/nginx/mime.types;
      default_type application/octet-stream;
    
      log_format main &#39;$remote_addr - $remote_user [$time_local] "$request" &#39;
               &#39;$status $body_bytes_sent "$http_referer" &#39;
               &#39;"$http_user_agent" "$http_x_forwarded_for"&#39;;
    
      access_log /var/log/nginx/access.log main;
    
      sendfile    on;
      #tcp_nopush   on;
    
      keepalive_timeout 65;
    
      # 开启gzip
      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      #gzip_http_version 1.0;
      gzip_comp_level 1;
      gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary off;
      gzip_disable "msie [1-6]\.";
    
      server {
        listen 80;
        server_name localhost;
        keepalive_timeout 5;
        root /usr/share/nginx/html;
    
        location /static/ {
          alias /usr/share/nginx/html/src/app/static/;
        }
    
        location / {
          # checks for static file, if not found proxy to app
          try_files $uri @flask_app;
        }
    
        location @flask_app {
          proxy_pass http://192.168.0.2:5000; # 发布在阿里云上,应填写内网ip
          proxy_redirect off;
          proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
          proxy_set_header host $http_host;
          proxy_set_header x-real-ip $remote_addr;
    
          #proxy_buffers 8 32k;
          #proxy_buffer_size 64k;
    
        }
      }
    
    
    }
    Salin selepas log masuk
  5. 2 Aplikasi kelalang tidak boleh bersambung ke mongo. Artikel ini menggunakan kaedah pautan.

Konfigurasi pangkalan data hendaklah ditulis dengan sewajarnya:

add setup.sh /data/setup.sh
run chmod +x /data/setup.sh
cmd ["/data/setup.sh"]
Salin selepas log masuk
Tukar kembali kepada 127.0.0.1 apabila menguji secara setempat
3 Mod proksi yang digunakan dalam konfigurasi nginx, di mana kelalang dilaksanakan Ip aplikasi hendaklah ip intranet

Atas ialah kandungan terperinci Cara menggunakan Docker untuk menggunakan aplikasi Nginx+Flask+Mongo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Gunakan persekitaran snmp dalam docker
daripada 1970-01-01 08:00:00
0
0
0
Panggilan API merentas bekas Docker
daripada 1970-01-01 08:00:00
0
0
0
docker: format rujukan tidak sah
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan