• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Docker部署Nginx+Flask+Mongo的应用介绍(附代码)

mysql 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

本篇文章给大家带来的内容是关于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/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 设置工作目录ENV WORKDIR /usr/local/workENV AUTO_RUN_DIR /docker-entrypoint-initdb.dENV INSTALL_MONGO_SHELL setup.shRUN 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/bashmongo <<EOFuse 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/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 设置工作区RUN mkdir -p /home/webWORKDIR /home/web# 添加依赖ADD requirements.txt /home/web/requirements.txtRUN 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_appapp = create_app('default')app.debug=False# if __name__ == '__main__':#    app.run()

Nginx的配置

/nginx/Dockerfile的内容如下

FROM nginx:1.14# 设置时区ENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 复制配置COPY conf/nginx.co<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码网@</strong>nf /etc/nginx/nginx.conf

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Docker部署Nginx+Flask+Mongo的应用介绍(附代码)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址