創建flask容易,那麼部署就比較麻煩了,配這個,配那個,更新…………python
因此我從構建,就考慮部署的問題,使用docker部署。mysql
程序都打包進docker,本博客有相關文章。linux
pycharn直接建立一個空白的flask項目就行了nginx
本博客有相關文章。sql
在服務器上建立以下:docker
/storage/temp/
├── app
│ ├── app ,這個目錄裏面就是flask源碼,一個文件,兩個目錄
│ │ ├── main.py
│ │ ├── static
│ │ └── templates
│ └── uwsgi.ini 這個是uwsgi的配置
├── dockerfile 這個是dockerfile,生成鏡像的文件
└── rebuild.sh 爲了中止容器,刪除容器,啓動容器寫的腳本。flask
具體看syncthing同步教程。瀏覽器
[uwsgi]
module = app.main
callable = app
就這三行,就是指示flask入口文件,bash
比這個鏡像做者多了一個設置中國時區,中國源,別的沒啥。服務器
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
總是忘記關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
給rebuild.sh運行權限後,直接運行就能夠了。
在瀏覽器輸入你linux服務器地址:8800就能夠看到helloworld。
例:http://192.168.1.3:8800
若是你沒有手動上傳flask源碼目錄,用syncthing同步的話,那麼之後更新源碼,直接rebuild就行了,方便不少。