Docker+Flask问题望解答

问题遇到的现象和发生背景

有关于Docker+Gunicon+Niginx+Flask 的一系列问题

我是自学的想大家问好!
刚开始写程序,很多不懂请各位指教。我写好的flask应用已经可以在本地虚拟环境运行了,但由于项目需要,以及我是自学,看了很多教程之后我选择了Docker+Gunicon+Niginx+Flask方式来部署我的应用。虽然大家们写的教程都很详细,但涉及很多基础知识盲区(可能很多人都不认为这是需要写在教程里的),所以有很多疑惑希望有朋友指教!


首先我对Docker+Gunicon+Niginx+Flask的理解是:

1.在本地用Docker打包好我的应用镜像传到Docker hub
2.在服务器端安装Docker+Gunicon+Niginx这3个东西
3.然后把之前已经上传的镜像从Docker hub 拉下来

这样就部署好了!

那么如果上述理解没有错的话,我就有以下疑惑了:

  1. 本地环境如何安装Docker? 不安装又如何在本地生成镜像?我搜了很多教程都是把本地电脑变成一个服务器,里面内置一个Docker的教程,并不是说我仅用Docker来进行本地打包。我理解要安装Docker这种东西,是要用类似PIP命令之类的,像安装flask一样的命
  2. 我在本地写flask是用虚拟环境的,那么我是在虚拟环境下,执行打包docker命令吗?还是全局环境下安装+打包呢?
  3. 如果是要在本地打包好的镜像,修改了代码之后,是整个镜像重新在服务器上pull下来,还是只替换某个文件即可呢?(也就是说用xftp之类的软件,直接替换文件就可以了)

抱歉问题太多!主要是对整个架构和结构不太理解!

这篇文章:docker部署flask应用 也许能够解决你的问题,你可以看下

其实还有很多问题,看了很多教程都没有说明白:

  1. 本地写的flask是在虚拟环境下的,那么是不是docker也是要把虚拟环境打包进去?具体的文件夹结构怎么摆放的(其实这类小问题最坑,但往往很多老手觉得“大家应该知道吧”?)https://blog.csdn.net/weixin_44491423/article/details/123358368
    这是最多人看的相关话题,但都没说清楚。

  2. 如果不打包虚拟环境,那么打包的时候要deleted本地的虚拟环境(也就是ven文件夹)?那写flask的时候要重新装虚拟环境?每次写完又delete,上传镜像?不可能吧?

  3. 没有一个教程讲明白本地怎么打包镜像的。都说:本地要配置一个Dockerfile文件,那是不是以为着有了这个文件=打包了?这里实在不理解,我所理解的打包本地镜像文件类似于zip的操作,不好意思不懂就问,希望有明确的答案(虽然我不理解为什么写了这个文件就等于打包成镜像了,实际上啥都没做)

抱歉,实在不太理解