简介:

建立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

比这个镜像作者多了一个设置中国时区,中国源,别的没啥。

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就好了,方便很多。

flask项目结构(二)创建flask,同步docker的更多相关文章

  1. 一个比较良好的flask项目结构

    一个比较良好的flask项目结构 project/ app/                    # 整个程序的包目录 static/                 # 静态资源文件 js/    ...

  2. flask项目结构(四)使用sqlalchemy和alembic

    简介 其实我不是啥正经人,错了,不是啥正经程序员,所能想到的估计也就码农一级吧,高级程序员,搞什么算法,什么人工智能,大数据计算…………离我还太遥远. 但是这并不妨碍我继续学习,继续写垃圾小程序. 反 ...

  3. flask项目结构(三)使用蓝图

    简介: Flask中的蓝图旨在针对这些情况: 把一个应用分解成一系列的蓝图.对于大型的应用是理想化的:一个项目能实例化一个应用, 初始化一些扩展,以及注册一系列的蓝图. 以一个 URL 前缀和/或子域 ...

  4. flask项目结构(一)mariadb

    简介: 本文主要是根据自己所学,创建一个flask项目,使用sqlalchemy,alembic,mariadb,bootstrap,APScheduler,selenium,request…………技 ...

  5. Flask项目实战:创建电影网站-创世纪(1)

    以后要养成写博客的习惯,用来做笔记.本人看的东西很多很杂,但因为工作中很少涉及,造成看了之后就忘,或者看了就看了,但是没有融入的自己的知识体系里面. 写博客一方面是做记录,一方面是给这段时间业余学习的 ...

  6. python web开发之flask框架学习(1) 创建flask项目

    python 开发越来越火,作为菜鸟,也应该学习一下,感觉还可以,记录下来,方便学习参考. 不管做什么开发首先肯定是安装环境,这里我用的是pycharm,python3.如果不清楚怎么安装环境可以去网 ...

  7. flask项目结构(五)使用数据库

    简介: 基础搭建好了,开始读写数据库吧.毕竟写的程序,也没什么高深的,就是CRUD,中文说是增删改查. 一:在数据库中增加测试数据. 在项目根目录建立init_test.py from config ...

  8. flask项目结构(六)快速开发后台flask-admin

    简介: Flask-admin 相当django的xadmin吧! 快速装配一个后台用来管理数据. Flask-admin也是有使用局限性的,他只适合开发小型快速的应用,不适合那种大型并发性高,逻辑复 ...

  9. python flask 项目结构

    1. 今天学习遇到一个问题,以前项目比较简单,所有的@app.route 都是写在一个文件app.py 中的,然后启动也是在这个文件中启动app.run .但是我今天 想写一个新的模块, 于是我新启了 ...

随机推荐

  1. 原生dom事件注册和移除事件的封装

    var addEvent = (function() { var setListener; setListener = false; return function(el, ev, fn) { if ...

  2. js数组,字符串,json互相转换函数有哪些

    js数组,字符串,json互相转换函数有哪些 一.总结 一句话总结: JSON.stringify(arr) JSON.parse(jsonString) str.split('') array.jo ...

  3. appium自动化测试 环境搭建

    最 近接手的项目是移动端自动化测试 ,需要用的appium ,头一回使用, 项目特点:1)数据有时效性,需要在短时间内验证大量数据, 2) 人工去一个一个核对发现不了太多BUG. 环境搭建:参考虫师的 ...

  4. ROS的安装和卸载

    Robot Operating System (ROS) 是一个得到广泛应用机器人系统的软件框架,它包含了一系列的软件库和工具用于构建机器人应用.从驱动到最先进的算法,以及强大的开发者工具,ROS 包 ...

  5. JavaScript动态加载资源

    //动态加载样式 function dynamicLoadingCss(path){ if(!path || path.length === 0){ return false; } var head ...

  6. Confluence 6 应该如何在我的空间中组织内容

    页面和博客 你在 Confluence 中创建的任何内容,从会议记录到回顾和任何中间的内容,不管来源是博客和页面. 你的主页将是任何访问你网站中的用户首先看到的内容.为了让用户更加容易的找到他们需要查 ...

  7. 数据库SQLserver(课本)

    一.SQL server的部署 1.数据库的基本概念 数据库通常是一个由行和列组成的二维表 数据表中的行通常叫做记录或元祖 数据表中的列通常叫做字段或属性 2.主键和外键 主键:定义主键可以保证数据的 ...

  8. 02 爬虫数据解析之re,xpath,beautifulsoup

    一.正则匹配 简单用法演示: 字符: print(re.findall(".","abccc31223dn哈哈")) ### . 匹配除了换行符以外的任意字符, ...

  9. Python Signal 信号

    https://blog.csdn.net/kongxx/article/details/50976802 http://blog.itpub.net/7728585/viewspace-214206 ...

  10. element-ui radio 再次点击取消选中

    <el-radio-group v-model="radio2"> <el-radio @click.native.prevent="clickitem ...