flask项目结构(二)创建flask,同步docker
简介:#
建立flask容易,那么部署就比较麻烦了,配这个,配那个,更新…………
所以我从构建,就考虑部署的问题,使用docker部署。
程序都打包进docker,本博客有相关文章。
pycharn直接创建一个空白的flask项目就好了
1.安装docker并自动启动#
本博客有相关文章。
2.创建生成镜像的目录#
在服务器上创建如下:
/storage/temp/
├── app
│ ├── app ,这个目录里面就是flask源码,一个文件,两个目录
│ │ ├── main.py
│ │ ├── static
│ │ └── templates
│ └── uwsgi.ini 这个是uwsgi的配置
├── dockerfile 这个是dockerfile,生成镜像的文件
└── rebuild.sh 为了停止容器,删除容器,启动容器写的脚本。
3.配置syncthing同步#
具体看syncthing同步教程。
4.配置uwsgi.ini#
[uwsgi]
module = app.main
callable = app
就这三行,就是指示flask入口文件,
5.编写dockerfile#
比这个镜像作者多了一个设置中国时区,中国源,别的没啥。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | FROM tiangolo /uwsgi-nginx-flask :python3.6-alpine3.7 MAINTAINER jackadam<jackadam@sina.com> #变更源 # 安装包源切到中科大, 国内访问加速 RUN { \ echo 'http://mirrors.ustc.edu.cn/alpine/v3.7/main' ; \ echo 'http://mirrors.ustc.edu.cn/alpine/v3.7/community' ; \ echo 'http://mirrors.ustc.edu.cn/alpine/edge/main' ; \ echo 'http://mirrors.ustc.edu.cn/alpine/edge/community' ; \ echo 'http://mirrors.ustc.edu.cn/alpine/edge/testing' ; \ } > /etc/apk/repositories && \ # 设置默认时区为亚洲/上海 (没有北京可选) apk add --no-cache --upgrade apk-tools && \ apk add --no-cache tzdata && \ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo "Asia/Shanghai" > /etc/timezone && \ apk del tzdata #复制flask源码 COPY . /app /app |
7.编写自动重建脚本rebuild.sh#
老是忘记关selinux,放这里吧。
我的80已经给别的容器了,这里就映射8800吧,链接了mariadb。
echo 暂停selinux
setenforce 0
echo 停止容器 docker stop Flask_Test echo 删除容器 docker rm Flask_Test echo 重建镜像 docker build -t flask_test . echo 启动容器 docker run -d -t --restart=always --privileged --name Flask_Test -p 8800:80 --link My_mariadb:mysql flask_test
echo 重新打开selinux
setenforce 1
8.启动#
给rebuild.sh运行权限后,直接运行就可以了。
9.测试#
在浏览器输入你linux服务器地址:8800就可以看到helloworld。
例:http://192.168.1.3:8800
如果你没有手动上传flask源码目录,用syncthing同步的话,那么以后更新源码,直接rebuild就好了,方便很多。
作者:上官飞鸿
出处:https://www.cnblogs.com/jackadam/p/8665098.html
版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现