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的代码

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;
}
启动部署
进入docker-flie目录cddocker-flie
启动dockerdocker-composeup
本地部署浏览器输入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的应用的详细内容,更多请关注主机测评网其它相关文章!
本文来源:国外服务器--docker部署nginx项目
本文地址:https://www.idcbaba.com/guowai/4404.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



