广告
返回顶部
首页 > 资讯 > 数据库 >Docker如何部署Nginx+Flask+Mongo
  • 505
分享到

Docker如何部署Nginx+Flask+Mongo

2024-04-02 19:04:59 505人浏览 独家记忆
摘要

小编给大家分享一下Docker如何部署Nginx+flask+MonGo,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用Doc

小编给大家分享一下Docker如何部署Nginx+flask+MonGo,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

使用Docker部署Nginx+Flask+Mongo的应用

Nginx做为服务器,Mongo为数据库支持,Flask为python语言的WEB框架,利用Docker的容器特性,可以简单地部署在linux服务器上

项目准备

项目主要目录如下

__ project-name
    |__ docker-file
        |__ ningx
            |__ Dockerfile
            |__ conf
                |__ nginx.conf
        |__ flask
            |__ Dockerfile
            |__ requirements.txt
        |__ mongo
            |__ Dockerfile
            |__ setup.sh
        |__ docker-compose.yml
    |__ src
        |__ app
            |__ ...
        |__ run.py

简要说明

docker-file目录为docker部署的配置文件

src目录为flask应用的Python代码

Docker的详细配置

docker-compose配置

version: '2.2'
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

mongoDB的配置

/mongo/Dockerfile的内容如下

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

/mongo/setup.sh的内容如下

该文件的目的是,启动MongoDB后创建一个密码为test的用户test,并赋予它数据库test的读写操作
#!/bin/bash
mongo <<EOF
use admin;
db.auth('root', '123456');
use dmx_aluminum;
db.createUser({user:'test',pwd:'test',roles:[{role:'readWrite',db:'test'}]});
db.createCollection("user");
EOF

Flask应用的配置

/flask/Dockerfile的内容如下

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

/src/app/run.py的代码

此处注释了调试用的 app.run(),发布时用gunicorn启动
from app import create_app
app = create_app('default')
app.debug=False
# if __name__ == '__main__':
#    app.run()

Nginx的配置

/nginx/Dockerfile的内容如下

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

/nignx/conf/nginx.conf的内容如下

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  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    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;

        }
    }


}

启动部署

  1. 进入docker-flie目录 cd docker-flie
  2. 启动docker docker-compose up
  3. 查看容器状态 docker ps
  4. 本地部署浏览器输入 127.0.0.1即可

最后出现类似docker_file_nginx_1,docker_file_mongo_1, docker_file_flask_1的3个容器,说明成功!!!

踩坑吐槽

  • 1 mongol容器中的初始化文件需要放在 docker-entrypoint-initdb.d 目录下

本人做过如下尝试,会显示 mongdb未启动。

ADD setup.sh /data/setup.sh
RUN chmod +x /data/setup.sh
CMD ["/data/setup.sh"]
  • 2 flask应用无法连接mongo,本文使用link方式。

在数据库的配置应相应写成:

MONGODB_SETTINGS = {
        'db': 'test',
        'host': 'mongo',  # 127.0.0.1 host地址一定要写你配置的--link的名字
        'username': 'test',
        'password': 'test',
        'port': 27017
    }

本地测试时改回127.0.0.1

3 nginx中配置使用的代理模式,其中执行flask应用的IP,应为内网IP

以上是“Docker如何部署Nginx+Flask+Mongo”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: Docker如何部署Nginx+Flask+Mongo

本文链接: https://www.lsjlt.com/news/53565.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Docker如何部署Nginx+Flask+Mongo
    小编给大家分享一下Docker如何部署Nginx+Flask+Mongo,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用Doc...
    99+
    2022-10-18
  • Docker上如何部署Nginx
    本篇内容主要讲解“Docker上如何部署Nginx”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker上如何部署Nginx”吧!1.从 docker 下载 Nginx 镜像docker&n...
    99+
    2023-06-30
  • Flask + Gunicorn + Nginx的部署方式
    本篇内容介绍了“Flask + Gunicorn + Nginx的部署方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!WSGI容器——Gu...
    99+
    2023-06-04
  • docker-compose部署nginx+php
    1、首先拉取nginx及php镜像 docker pull nginx:1.21.6 docker pull php:7.4.28-fpm 2、创建本地目录 mkdir /home/nginx-php...
    99+
    2023-09-09
    php nginx docker
  • Docker中怎么部署nginx
    这篇“Docker中怎么部署nginx”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Docker中怎么部署nginx”文章吧...
    99+
    2023-06-27
  • docker nginx如何部署多个项目
    今天小编给大家分享一下docker nginx如何部署多个项目的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2022-10-19
  • Docker+Nginx如何部署单页应用
    本篇内容介绍了“Docker+Nginx如何部署单页应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发...
    99+
    2022-10-19
  • docker/docker-compose 部署 nginx+mysql+wordpress 实战
    1. 网络架构图 MariaDB 作为后面的关系型数据库,端口号是 3306; WordPress 是中间的应用服务器,使用 MariaDB 来存储数据,它的端口是 80; Nginx 是前面的反向...
    99+
    2023-09-06
    docker nginx mysql
  • docker怎么部署nginx应用
    要部署Nginx应用,您可以使用Docker来进行部署。下面是一些步骤可以帮助您完成此过程:1. 首先,您需要安装Docker,可以...
    99+
    2023-10-20
    docker nginx
  • Docker挂载资料卷部署Nginx
    简介 上一篇总结了下docker内mysql的资料卷设置方式,走b/s方向怎么能忘记nginx呢?今天来补上这一篇。 Nginx资料卷 nginx的作用有很多,比如正向代理、反向代理...
    99+
    2022-11-13
  • windows下Docker部署Flask的详细教程
    Docker默认安装路径是在C盘,Windows中修改Docker**默认安装****路径方法: 1.先创建 D:\Program Files\Docker 目录 2.运行命令,创建...
    99+
    2023-01-18
    Docker部署Flask windows Docker部署Flask
  • Docker上部署Nginx的方法步骤
    目录1.从 docker 下载 Nginx 镜像2.创建挂载目录3.为了保证文件的正确性,建议先进入容器把对应的文件给复制出来4.接下来修改下 default.conf 文件就好了5...
    99+
    2022-11-13
  • Docker中部署nginx服务的方案
    目录1、下载nginx镜像2、查看下载的镜像3、启动nginx镜像4、查看启动的nginx5、访问启动的nginx5.1、linux开放防火墙端口5.2、阿里云服务器需要配置安全组规...
    99+
    2022-11-16
    Docker部署nginx Docker安装nginx docker安装nginx配置
  • 【Docker】docker部署springboot+vue+mysql+nginx前后端分离项目【部署实战篇】
    文章目录 0、安装docker并准备一个springboot-vue前后端分离项目前后端打包放到服务器上1、docker 安装jdk2、docker 安装mysql通过Docker命令进入My...
    99+
    2023-09-03
    docker spring boot vue.js
  • Nginx Gunicorn flask项目部署思路分析详解
    目录部署目的部署思路gunicorn启动flasknginx指向gunicorn部署目的 之前聊了很多flask的知识点,那么完成一个flask项目之后,该这么让大家使用呢,直接放...
    99+
    2022-12-08
    Nginx Gunicorn flask部署 Nginx 项目部署
  • Docker部署php运行环境(php-fpm+nginx)
    前言 如果使用docker去部署一套php的运行环境,我们需要构建出nginx、php-fpm两个容器,nginx通过fast_cgi协议去转发php-fpm中的端口,从而实现web server的搭建,接下来以php的laravel框架为...
    99+
    2023-09-15
    docker php nginx php-fpm
  • Docker部署Nginx并配置反向代理
    准备工作 在docker内部署任何应用,都需要先下载对应的镜像;下载镜像之前,需要先搜索镜像来确认该镜像是否存在: docker search nginx 从列表可以看到,dock...
    99+
    2022-11-13
  • Docker部署nginx+php环境,简单可用!
    第一步:安装Docker 访问下面地址,根据你的需要下载安装docker运行环境。 下载docker desktophttps://www.docker.com/ 如果你是Windows、macOS(Intel/M1)、Linux桌面OS,...
    99+
    2023-09-25
    docker nginx 容器
  • Docker rocketmq如何部署
    这篇文章给大家分享的是有关Docker rocketmq如何部署的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。准备工作在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需...
    99+
    2023-06-22
  • Docker如何部署Node.js
    本篇内容主要讲解“Docker如何部署Node.js”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker如何部署Node.js”吧!项目结构`-- docker-node&nbs...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作