docker部署nginx项目

docker部署nginx项目

浏览次数:
信息来源: 用户投稿
更新日期: 2026-03-23
文章简介

nginx做为服务器,mongo为数据库支持,flask为python语言的web框架,利用docker的容器特性,可以简单地部署在linux服务器上项目准备 |__run.py简

2025阿里云双十一服务器活动

nginx做为服务器,mongo为数据库支持,flask为python语言的web框架,利用docker的容器特性,可以简单地部署在linux服务器上

项目准备

|__run.py

简要说明

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

src目录为flask应用的python代码

docker的详细配置

docker-compose配置

build:https://www.fruan.com/post/mongo

-"https://www.fruan.com/post/mongo/db:/data/db"

mongo_initdb_root_username:root

mongo_initdb_root_password:123456

build:https://www.fruan.com/post/flask

-https://www.fruan.com/src:/home/web

build:https://www.fruan.com/post/nginx

-"https://www.fruan.com/post/nginx/log:/var/log/nginx"

-"https://www.fruan.com/:/usr/share/nginx/html"

restart:always

mongodb的配置

/mongo/dockerfile的内容如下

runln-snf/usr/share/zoneinfo/$tz/etc/localtime&&echo$tz>/etc/timezone

envworkdir/usr/local/work

envauto_run_dir/docker-entrypoint-initdb.d

envinstall_mongo_shellsetup.sh

copyhttps://www.fruan.com/post/$install_mongo_shell$auto_run_dir/

runchmod+x$auto_run_dir/$install_mongo_shell

/mongo/setup.sh的内容如下

该文件的目的是,启动mongodb后创建一个密码为test的用户test,并赋予它数据库test的读写操作

db.auth('root','123456');

db.createuser({user:'test',pwd:'test',roles:[{role:'readwrite',db:'test'}]});

db.createcollection("user");

eof

flask应用的配置

/flask/dockerfile的内容如下

runln-snf/usr/share/zoneinfo/$tz/etc/localtime&&echo$tz>/etc/timezone

addrequirements.txt/home/web/requirements.txt

runpip3install-ihttps://pypi.douban.com/simple/-rrequirements.txt

cmdgunicorn-w4-b0.0.0.0:5000run:app

/src/app/run.py的代码

docker部署nginx项目

app=create_app('default')

#app.run()

nginx的配置

/nginx/dockerfile的内容如下

runln-snf/usr/share/zoneinfo/$tz/etc/localtime&&echo$tz>/etc/timezone

copyconf/nginx.conf/etc/nginx/nginx.conf

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

error_log/var/log/nginx/error.logwarn;

include/etc/nginx/mime.types;

default_typeapplication/octet-stream;

log_formatmain'$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.logmain;

gzip_typestext/plainapplication/x-javascripttext/cssapplication/xmltext/javascriptapplication/x-httpd-phpimage/jpegimage/gifimage/png;

gzip_disable"msie[1-6]\.";

root/usr/share/nginx/html;

alias/usr/share/nginx/html/src/app/static/;

#checksforstaticfile,ifnotfoundproxytoapp

proxy_passhttp://192.168.0.2:5000;#发布在阿里云上,应填写内网ip

proxy_set_headerx-forwarded-for$proxy_add_x_forwarded_for;

proxy_set_headerhost$http_host;

proxy_set_headerx-real-ip$remote_addr;

}

启动部署

  1. 进入docker-flie目录cddocker-flie

  2. 启动dockerdocker-composeup

  3. 本地部署浏览器输入127.0.0.1即可

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

踩坑吐槽

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

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

addsetup.sh/data/setup.sh

cmd["/data/setup.sh"]

2flask应用无法连接mongo,本文使用link方式。

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

'host':'mongo',#127.0.0.1host地址一定要写你配置的--link的名字

}

本地测试时改回127.0.0.1

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

以上就是如何使用Docker部署Nginx+Flask+Mongo的应用的详细内容,更多请关注主机测评网其它相关文章!

标签:
Linux服务器的攻击级别分为那几种(linux服务器安全攻防)
« 上一篇
返回列表
下一篇 »

如本文对您有帮助,就请抽根烟吧!