部署你的flask应用到docker

简介: 部署你的flask应用到docker

主要分三步,制作镜像并导出,导入镜像,启动flask应用。该教程没有采用Dockerfile的方式,因为是直接将开发用python环境包,拷贝到生产用环境包。但是当笔者用这种方式完成镜像的保存后,发现就一个环境包+不到10个python文件,磁盘占用已达到7~8G的大小。相信开发用的python包中有很多库,是该应用没有涉及到的。如果用Dockerfile的方式,就可以比较精准控制哪些包是必须的,从而放到镜像内。故提醒哪些关注镜像大小的朋友谨慎入坑。

导出镜像
  1. 查看已有的基础镜像
docker images # 跟docker image ps效果一样
  1. 从基础镜像运行一个容器,并退出
docker run --name flask-app -it <镜像名> /bin/bash
exit
  1. 如果想重新进入
docker start <容器ID>
docker exec -it <容器ID> /bin/bash
exit
  1. 查看正在运行或已经停止工作的容器列表,获得想要拷贝环境包的容器名
docker ps -a
  1. 将python环境包拷贝该容器
docker cp miniconda3_withpytorch.zip <容器ID>:/home/
  1. 进入容器,在这个比较干净的ubuntu环境中安装unzip
apt-get update
apt-get install unzip #还应该安装netstat工具
  1. 解压python环境包,并删除压缩包,退出
unzip miniconda3_withpytorch.zip
rm miniconda3_withpytorch.zip
exit
  1. 将添加了环境包的容器名保存为镜像
docker commit flask-app topo-service:v1
  1. 可查看镜像列表
docker images
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
topo-service   v1        2450d3fa63dc   23 seconds ago   5.4GB
  1. 仅仅是拷贝了一个2G左右的压缩包后解压,镜像就膨胀到5.4G。
  2. 将保存的镜像导出到指定目录,确保到处前该镜像已经创建并停止。
docker save -o /home/user/myapp.tar myapp:latest
导入镜像
  1. 将压缩包.tar考入到目标机器。
  2. 在命令行中使用 docker load 命令来导入镜像:
docker load -i myapp.tar
  1. 导入完成后,可以使用 docker images 命令查看已导入镜像的列表。
启动

启动容器,并将flask中暴露的端口映射成外部机器暴露的端口

docker run -p 8299:8299 -it topo-service:latest /bin/bash

进入容器内指定目录,启动flask服务

/home/your/path/python servicecase.py

启动工作完成,最后退出容器Ctrl + P + Q,不关闭容器,查看外部端口使用情况

netstat -anp | grep 8099

如果有输出,说明容器内的服务端程序启动成功,且端口正常暴露。

其他常用命令速递

删除容器

要删除已停止的容器,可以使用以下命令:

docker rm <容器ID>

其中,<容器ID>为要删除的容器的ID。如果要删除多个容器,可以在命令后面添加多个容器ID。

如果要删除所有已经停止的容器,可以使用以下命令:

docker container prune

退出容器

docker exec -it <容器ID> /bin/bash
docker attach <容器ID>
以上两种方式进入容器的方式,使用exit退出,均会导致容器停止。包括run -it从镜像启动的容器。
Ctrl + P + Q退出容器不停止运行
相关文章
|
2天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
17 1
|
2天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
11 1
Flask框架在Python面试中的应用与实战
|
3天前
|
存储 测试技术 文件存储
【Docker项目实战】使用Docker部署Sun-Panel导航面板
【4月更文挑战第19天】使用Docker部署Sun-Panel导航面板
54 7
|
3天前
|
监控 数据挖掘 Docker
《Docker 简易速速上手小册》第8章 Docker 在企业中的应用(2024 最新版)
《Docker 简易速速上手小册》第8章 Docker 在企业中的应用(2024 最新版)
21 0
|
6天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
42 1
|
7天前
|
缓存 监控 数据库
Flask性能优化:打造高性能Web应用
【4月更文挑战第16天】本文介绍了提升Flask应用性能的七大策略:优化代码逻辑,减少数据库查询,使用WSGI服务器(如Gunicorn、uWSGI),启用缓存(如Flask-Caching),优化数据库操作,采用异步处理与并发(如Celery、Sanic),以及持续监控与调优。通过这些手段,开发者能有效优化Flask应用,适应大型或高并发场景,打造高性能的Web服务。
|
7天前
|
监控 安全 数据库
Flask应用部署指南:从开发到生产环境
【4月更文挑战第16天】本文是Flask应用从开发到生产的部署指南,涵盖开发环境准备、应用开发、部署方案选择、生产环境配置、应用部署、监控与维护。确保安装Python、Flask及依赖库,使用文本编辑器或IDE编写代码,关注应用安全与性能。选择WSGI服务器、Docker或云服务平台部署,配置生产环境,确保安全性,然后部署应用并进行监控维护,定期更新修复问题,保证应用稳定运行。
|
7天前
|
JSON 安全 API
Flask-Login与Flask-RESTful:扩展你的应用功能
【4月更文挑战第16天】本文介绍了两个实用的Flask扩展——Flask-Login和Flask-RESTful。Flask-Login提供用户认证和会话管理,简化了登录、注销和保护路由的逻辑。而Flask-RESTful则助力构建RESTful API,支持多种HTTP方法和请求解析。通过这两个扩展,开发者能轻松增强Flask应用的功能性,实现安全的用户认证和高效的API交互。
|
8天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
10天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
35 3