部署你的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退出容器不停止运行
相关文章
|
10月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
4183 4
|
10月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
852 52
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
10月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
457 5
|
10月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
2891 8
|
10月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
8446 8
|
10月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1283 4
|
Linux Docker Python
centos 启动停止docker,并部署 flask 容器化应用
centos 启动停止docker,并部署 flask 容器化应用
314 0
|
API 网络安全 Docker
docker 部署flask&matplotlib应用
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Flask是一个使用 Python 编写的轻量级 Web 应用框架。本文介绍通过Dockerfile生成镜像,对外部署通过API接口的方式调用绘图服务。
1309 0
docker 部署flask&matplotlib应用
|
Ubuntu 安全 应用服务中间件
部署 Flask 应用
部署 Flask 应用
1201 0