Docker部署Flask网站

news/2024/5/15 13:58:56/文章来源:https://blog.csdn.net/victorwjw/article/details/123034725

最近练练手,防止忘了,在docker上部署了下Flask网站。先单步进行,后面可以通过docker compose直接部署。

1. docker运行mysql,数据持久化到宿主机本地硬盘

docker run --name mysql-flask -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

参数介绍

  • --name mysql-flask                                   #  容器的命名
  • -d                                                              #后台运行
  • -p 3310:3306                                           #对外暴露端口号3310(映射容器内端口3306)
  • -v /home/mysql/conf:/etc/mysql/conf.d     #配置文件挂载到宿主机的  /home/mysql/conf
  • -v /home/mysql/data:/var/lib/mysql            #数据挂载到宿主机的  /home/mysql/data
  • -e MYSQL_ROOT_PASSWORD=123456    #设置mysql的root用户的密码是:·123456

 mysql在docker容器中进行部署,然后使用数据卷挂载的方式将mysql的数据持久化到时宿主机。通过映射,在宿主机本地就可以看到创建的数据库和mysql的配置文件

此处说明一点,docker删除容器时,要用docker rm -v 命令来删除,或者启动时加--rm参数(停止时自动删除),否则遗留很多孤立的Volume占着空间

docker exec -it mysql-flask bash  即可进入容器

2.对Flask网站编写dockfile,来生成镜像 (Flask网站并未打包进去,而是挂载到容器)

FROM python:3.7#COPY . /home/flask  #需要把代码打到镜像里时用COPY requirement.txt /home/RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo 'Asia/Shanghai' >/etc/timezone && \
pip install -r /home/requirement.txt -i https://pypi.douban.com/simple/EXPOSE 5000
WORKDIR /home/flask
CMD ["uwsgi","/home/flask/uwsgi.dev.ini"]#CMD python app.py runserver 0.0.0.0:80  #用python启动

此处采用uwsgi的web服务来启动,同时要编写好uwsgi的ini文件(下面为uswgi.dev.ini范例)

[uwsgi]
chdir=/home/flask
wsgi-file=/home/flask/app.py
home=/home/flask/venv
callable=app
http=0.0.0.0:5000py-autoreload=1
reload-mercy = 1
worker-reload-mercy = 1

重要的一点:代码中数据库Host要改,改为宿主机IP或者用docker compose部署的server名

然后运行构建镜像,  docker build -t [镜像名称] [Dockerfile的路径]

docker build -t flask:1.0 ./      

通过 docker images 就可以查看到构建的镜像

docker run -it --name flask --rm -p 5000:5000 -v /flask:/home/flask:rw flask:1.0

发现uwsgi已经运行,用宿主机的ip:5000就可以访问了

3.简单的用docker compose直接部署

docker-compose 通过一个 yaml 模板文件来统一管理多个容器的配置,如网络、数据卷、执行指令、环境变量、资源限制等等。

docker-compose.yml文件

version: '3.3'services: nginx:image: nginx:latestports: - "80:80"volumes: - "/home/nginx/html:/usr/share/nginx/html"- "/home/nginx/nginx.conf:/etc/nginx/nginx.conf"privileged: true  #解决权限问题mysql:image: mysql:latestports: - "3306:3306"volumes: - "/home/mysql/conf:/etc/mysql/conf.d"- "/home/mysql/data:/var/lib/mysql"privileged: true  #解决权限问题environment: - MYSQL_ROOT_PASSWORD=123456flask:image: flask:1.0container_name: flaskv1restart: alwaysvolumes: - "/flask:/home/flask"ports: - "5000:5000"#其他容器使用links可以将mysql容器的ip记录到该容器中, 再通过连接 mysql:3306 可以访问数据库。links: - mysqldepends_on: - mysql

当然build也可以写进去,可以根据当前目录下的Dockerfile构建镜像

最后,运行docker-compose up  就会根据yml文件依次创建services服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_872448.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信公众平台开发详解——由浅入深(微网站、LBS云、Api接口调用、服务号高级接口)

微信公众平台开发详解——由浅入深(微网站、LBS云、Api接口调用、服务号高级接口) 分享一套微信公众平台官方代码教程,由易到难,深入浅出的讲解微信公众平台各种常见功能的开发。 课程内容包括: Api接口调用 lbs应用…

网站性能

一、不同角度的网站性能 普通用户认为的网站性能 网站性能对于普通用户来说,最直接的体现就是响应时间。用户在浏览器上直观感受到的网站响应速度,即从客户端发送请求,到服务器返回响应内容的时间。 做为网站开发人员来说,网站性能…

网站埋点(百度统计)

网站埋点,看数据分析,可以直接用百度统计,功能非常全,自己重新开发一个的话,费时费力,没必要。 https://tongji.baidu.com/web/welcome/basic demo演示 使用教程 1、注册登录 2、登录后新增你的网站 …

CTF Crypto/MISC 在线工具网站

2020.4.2 增加了新佛曰的网站 2020.4.6 添加了Linux系统调用网站 2020.5.25 增加了base58的编码网站,跳舞小人密码,alphabet minimoys密码网站,JS混淆解密网站 在线解码 Unicode(HTML)编码解码:http://www…

houseoforange_hitcon_2016(House of orange, unsorted bin attack,FSOP)

目录 题目分析利用原理house of orangeFSOP 漏洞利用Exp 题目分析 只有添加,显示,编辑三个功能,没有删除 添加函数,最多只能添加四次,每次添加会依次执行malloc(0x10),malloc(name_size),calloc(8),name_size最大为8 H…

javabean+servlet+JSP页面做购物网站 (附效果图+源码)

一个简单的jsp购物网站 概要需求用到的技术效果图登录页登陆结果购物页消费记录页管理用户信息和商品信息数据库格式 踩过的坑jdbc进行数据库操作java动作指令结合jsp脚本jdbc操作数据库查某个变量源码 概要 复习一下学校里学的javabean,写了个简单的购物网站&…

用asp.net写的一个购物网站

文章目录 一、数据库设计二、登录注册三、功能说明以及运行1.首页2.商品分类3.热门零食4.推荐零食5.商品详情页6.我的购物车7.立即购买8.提交订单 总结 一、数据库设计 二、登录注册 1.登录界面 2.注册界面 首先先在数据库表users中插入几条数据,表示这是已经注册…

用前端写的一个网站

文章目录 一、网站首页1.导航栏2.轮播图3.网格系统 二、热门人物三、热门推荐四、国产动漫五、热血日漫六、个人资料设置七、注册登录总结 一、网站首页 1.导航栏 采用了bootstrap导航条组建。用超链接实现跳转。并同时使该网页对应的导航条处于被选中的状态。当鼠标悬停放在该…

基于ASP.Net写的一个购物网站

网站运行录像 在这里 链接:https://pan.baidu.com/s/1NaFNKnQ3UEorasadRf7EIA 提取码:1i6v 复制这段内容后打开百度网盘手机App,操作更方便哦 可以下载观看。 本网站前端利用了如下技术&a…

springboot实现基本购物网站

本项目部分页面来自天天生鲜项目(原项目使用django编写),本项目中所用到的框架: spring boot mybatis jpa bootstrap redis freemaker 实现注册及登录界面: 用户名需满足:非空,长度2-20位. 密码需满足:为6-20位字母、数字的组合. 卖家与买家信息使用不同的数据…

HTML+CSS简单应用实例——购物网站的制作(一)

HTMLCSS简单应用实例——购物网站的制作(一) 这是一个用CSS、HTML、JS制作的简单的购物网站,这篇文章是主页,在后面文章中依次有登录页、商品页、客服页面等。有很多不足之处,希望大家能给我指出来。 先看一下效果图…

HTML+CSS简单应用实例——购物网站的制作(二)注册页面

HTMLCSS简单应用实例——购物网站的制作(二)注册页面 接上一篇文章,本片文章是注册页面。 下面是效果图: 分析:上方欢迎注册是DIV,下面是表单,点击登录按钮会出现注册成功提示。下方为脚本,同…

HTML+CSS简单应用实例——购物网站的制作(三)

HTMLCSS简单应用实例——购物网站的制作(三) 本页面是商品页面。 下面是效果图: 分析:上方大牌女装为DIV,下面是一个滚动图,年度爆款限时五折是table,今日热门活动也是一个大table&#xff…

HTML+CSS简单应用实例——购物网站的制作(四)

HTMLCSS简单应用实例——购物网站的制作(四) 本页面是第二个商品页面,做了个限时抢购的页面。 下面是效果图: 分析:上方限时抢购和12点准时开抢是两个DIV,下面每个商品是一个单独的DIV,总体是一个大的D…

HTML+CSS简单应用实例——购物网站的制作(五)

HTMLCSS简单应用实例——购物网站的制作(五) 本页面是第三个商品页面。 下面是效果图: 分析:上方淘淘超市是一个DIV,下面超值套装每个商品是一个DIV,美容护肤是一个大表格。下面是脚本。 具体代码&…

HTML+CSS简单应用实例——购物网站的制作(六)

HTMLCSS简单应用实例——购物网站的制作&#xff08;六&#xff09; 本页面是一个反馈问卷页面。 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘淘网问卷</title><s…

HTML+CSS简单应用实例——购物网站的制作(七)

HTMLCSS简单应用实例——购物网站的制作&#xff08;七&#xff09; 本页面是客服页面。 效果图&#xff1a; 分析&#xff1a;上方是一个DIV&#xff0c;下面是两个表格&#xff0c;表格里有列表。 具体代码&#xff1a; <!DOCTYPE html> <html><head>&…

专访AJAX发明人:AJAX并不适合所有网站

他从未想到AJAX可以获得这么大的成功&#xff0c;但他也表示并非所有的网站都适合用AJAX技术。 新浪科技讯 2007年3月2日&#xff0c;中国互联网协会与Google(谷歌)公司联合主办“Internet 互联网世纪论坛”&#xff0c;AJAX技术的发明人Jesse James Garrett在会议期间接受新浪…

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构&#xff0c; 亿万用户网站MySpace的成功秘密 、 Flickr架构 、 YouTube网站架构 、 PlentyOfFish 网站架构学习 、 WikiPedia技术架构学习笔记 。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构方面的知…

从上百幅架构图中学大型网站建设经验(上)

从上百幅架构图中学大型网站建设经验&#xff08;上&#xff09; 引言 近段时间以来&#xff0c;通过接触有关海量数据处理和搜索引擎的诸多技术&#xff0c;常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外&#xff0c;更为架构图背后所隐藏的设…