redash二次开发和制作镜像

简介:

上一篇文章,我们简单的测试了一下服务器环境和docker基础镜像。并没有涉及我们自己编写的flask python程序。

现在,我们就要把我们自己的flask程序,放进docker镜像。

但是比较遗憾的是,本篇没有图形界面操作了。

想继续图形操作的,请自行查阅docker hub自动生成镜像。需配合github。

以后会写这个文章。暂时没有,下次写了,再更新链接。

一:编写flask

这个就不说了吧,我这教部署呢,怎么写flask,另找高明。

测试用的flask代码如下所示:

venv文件夹是虚拟环境。上传的时候就不要上传了。

二:查阅官方文档(本章节,几乎就是翻译作者页面的,拣重点说一些。)

这个官方有点大,就是基础镜像维护者写的,关于基础镜像的使用说明。

1. QuickStart  例子一

your Dockerfile like:

FROM tiangolo/uwsgi-nginx-flask:python3.6
COPY ./app /app

Create a main.py file (it should be named like that and should be in your app directory) with:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World from Flask"

if __name__ == "__main__":
    # Only for debugging while developing
    app.run(host='0.0.0.0', debug=True, port=80)

You should now have a directory structure like:

.
├── app
│   └── main.py
└── Dockerfile

快速使用,编写了两个文件:Dockerfile,main.py

并展示了相对结构,main.py在app目录下。

2.QuickStart for bigger projects structured as a Python package 例子二

可以下载示例代码https://github.com/tiangolo/uwsgi-nginx-flask-docker/releases/download/v0.3.5/example-flask-package-python3.6.zip

Your file structure would look like:

.
├── app
│   ├── app
│   │   ├── api
│   │   │   ├── api.py
│   │   │   ├── endpoints
│   │   │   │   ├── __init__.py
│   │   │   │   └── user.py
│   │   │   ├── __init__.py
│   │   │   └── utils.py
│   │   ├── core
│   │   │   ├── app_setup.py
│   │   │   ├── database.py
│   │   │   └── __init__.py
│   │   ├── __init__.py
│   │   ├── main.py
│   │   └── models
│   │       ├── __init__.py
│   │       └── user.py
│   └── uwsgi.ini
└── Dockerfile

可以看出

app/app目录是flask代码,入口文件为main.py

app目录包含app/app目录,还包含一个uwsgi.ini

根目录除了app目录,还有一个Dockerfile

uwsgi.ini文件内容如下:

[uwsgi]
module = app.main
callable = app

Dockerfile文件如下:

FROM tiangolo/uwsgi-nginx-flask:python3.6

COPY ./app /app

有兴趣的可以自己跑一下这两个例子,例子一没有源码下载,例子二有源码可以下载。

用法:

把所有源码按照文件结构穿到服务器上。

在有Dockerfile的目录下执行

docker build -t myimage .      (编译镜像,别忘了最后那个点。)

docker run -d --name mycontainer -p 80:80 myimage (运行镜像)

  • Build your Flask image:
docker build -t myimage .
  • Run a container based on your image:
docker run -d --name mycontainer -p 80:80 myimage

三:传输文件

看起来只需要引用一个Docker镜像,然后添加 app目录进去。看着好简单啊。

用示例代码操刀改吧。

把示例代码复制进本地某个目录,我的是D: emp

删除app/app目录下的所有东西,flask程序。

把我在第一节写的flask示例代码放进去。(不包含venv, .idea,一个是虚拟环境,一个是想法)

最终目录结构如下:

.
├── app
│   ├── app
│   │   ├── main.py
│   │   ├── static
│   │   └── templates
│   └── uwsgi.ini
└── Dockerfile

4 directories, 3 files

查看例二的Dockerfile

FROM tiangolo/uwsgi-nginx-flask:python3.6

COPY ./app /app

但是这个镜像不知道是基于什么生成的,测试890M还多。我还是换称alpine做基础的吧。

我们用的Dockerfile:

FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7
COPY ./app /app

winscp上传到你的服务器把。任意目录都可以。

四:编译镜像

会用winscp,那么会用putty么?

随便你用什么了。反正是进入linux服务器的shell命令模式。

进入你上传的目录。

docker build -t flask001 .
docker run -d --name flask001 -p 80:80 flask001
 
[root@NUC temp]# docker build -t flask001 .
Sending build context to Docker daemon 6.144 kB
Step 1/2 : FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7
 ---> 669935bdcef7
Step 2/2 : COPY ./app /app
 ---> 3ca5300a9319
Removing intermediate container bba18e9f8c86
Successfully built 3ca5300a9319
[root@NUC temp]# clear
[root@NUC temp]# docker build -t flask001 .
Sending build context to Docker daemon 6.144 kB
Step 1/2 : FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7
 ---> 669935bdcef7
Step 2/2 : COPY ./app /app
 ---> Using cache
 ---> 3ca5300a9319
Successfully built 3ca5300a9319
[root@NUC temp]# docker run -d --name flask001 -p 80:80 flask001
5a94bb2d644c0a5cc2826dea5106950c5c2c33f282167f5dcfb4d624a8d8d628
[root@NUC temp]# 

五:运行镜像

 docker run -d --name flask001 -p 80:80 flask001

这行就是运行镜像为容器的命令了。

访问你的服务器IP,试试看吧。

hello world

完成。

下一节讲集成包。【参考docker 部署 flask(二)编写及生成镜像。 - 走看看

redash二次开发
https://xixuebin.github.io/2019-05-28-103541-ch.html
https://blog.csdn.net/guzhenping/article/details/87784834
http://t.zoukankan.com/rongfengliang-p-11234255.html

https://gitee.com/mirrors/redash


https://gitee.com/mirrors/redash.git
https://github.com/getredash/redash.git

docker启动redash
1、制作redash的image。修改了某个py文件如何制作镜像?
2、制作redash的dockerfile
3、deployment部署、启动、测试


日常rd开发完功能后合入到master,随后通过gitlab进行镜像构建,构建完成后生成新的image,通过deployment更新新的镜像,随后部署服务【这个过程涉及到监控和CI,后续还需要考虑CD】
大数据/数据库:mysql、mongoDB、hive、hdfs、spark
中间件:redis、rabbitmq、kafka

工程学
1、从github上拉代码本地修改测试,合入到网上的master分支
2、在master上拉出release分支,随后进行CI
3、在CI结束后选择节点进行CD

https://blog.csdn.net/weixin_42273374/article/details/82016922【从github上下载zip文件,然后解压,在本地部署。这一项实现了修改某个功能,上传到网上、下载,在本地部署】

方案一:从github下载代码到gitlab上,将分支拉到本地,修改完成后推送到master上,然后构建镜像,然后容器化部署测试【实战gitlab的部署和CICD】
方案二:找一个redash的容器化镜像,根据这个镜像进行修改,将修改后的重新编译镜像【推送到开源的镜像仓库上】,利用这个镜像在虚拟机上运行测试
找一个镜像,修改一些内容,本地构建docker file,生成新镜像,启动,

制作redash的镜像
https://blog.csdn.net/weixin_36350504/article/details/113996854
https://www.cnblogs.com/jhao/p/15753390.html
redash 版本更新
https://chenjiehua.me/linux/redash-upgrade.html
https://www.dazdata.com/docs/refresh/94.html

二次开发
https://xixuebin.github.io/2019-05-28-103541-ch.html
https://zhuanlan.zhihu.com/p/31292944
https://blog.csdn.net/guzhenping/article/details/87784834

容器化部署
https://www.365seal.com/y/xJvBal2mnb.html

redash增加orcal源
http://t.zoukankan.com/rongfengliang-p-11234255.html

gitlab实现CICD【还需要构建私有的镜像仓库,将生成的镜像存储到仓库中】
http://t.zoukankan.com/hzhhhbb-p-13966904.html
https://www.cnblogs.com/hzhhhbb/p/13966904.html

redash的版本更新
先搞几个redash的版本更新【增加插件还有代码修改的】,例如每个版本之间的差异是怎样的,然后手动测试一下,看看是否能够实现版本更新

redash支持ldap【https://chenjiehua.me/linux/redash-upgrade.html
redash支持excel【
redash支持oracle【第一个https://www.cnblogs.com/rongfengliang/p/11234255.html,第二个https://blog.csdn.net/weixin_42273374/article/details/83746438,第三个https://blog.csdn.net/h1101723183/article/details/107661030
redash删除url【第一个https://blog.csdn.net/weixin_38506560/article/details/115692235。第二个https://blog.csdn.net/qq_42455809/article/details/100081691。注释:阅读源码,找到关键代码位置,修改,测试,打包docker镜像。


构建docker镜像【举例】
方法一:登录到容器内部,执行yum install -y vim,退出容器,docker commit命令保存,执行docker image ls 能够查看到刚刚创建的镜像
方法二:新建docker file,添加如下两行,执行docker build -t blackbinbin/docker-centos-vim ./
FROM centos
RUN yum install -y vim

实例
http://t.zoukankan.com/jackadam-p-8444294.html
https://www.cnblogs.com/shouwangrenjian/p/16499447.html


实战
https://blog.csdn.net/uniqueweimeijun/article/details/103787275【部署成功】
第一步:将nginx容器增加了vim,需要把这个打包,同时替换compose中的nginx的版本,然后启动,验证是否有vim
==目前做到了在nginx里面增加vim,接下来有两个选择,第一种在此容器的基础上打镜像,上传到docker hub上,然后在compose中下载引用【https://www.cnblogs.com/functionMC/p/16564426.html】,第二种方法是把镜像从docker hub上下载下来,然后使用docker file的from 以这个镜像为基础,然后run apt-get install vim去打镜像,随后在启动容器测试,成功后上传到docker hub上
第二步:修改py文件,将整个项目打成镜像,然后部署测试
https://www.cnblogs.com/shouwangrenjian/p/16499447.html
http://t.zoukankan.com/jackadam-p-8444294.html【参考第二个wiki,下载zip,解压,在redash目录下创建dockerfile,然后进行build,可以在本地进行测试,成功后,将镜像上传到docker hub上【在容器内部apt-get安装vim测试提示命令不存在,在安装vim前执行apt-get update即可,随后在build】,测试成功】
https://chenjiehua.me/linux/redash-upgrade.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值