如何把Flask应用程序部署到Docker中
2023-03-07 09:47:12 时间
什么是Docker
Docker 是一种容器化工具,可以更轻松地使用容器创建、部署和运行应用程序。
这个不是本文的重点,具体概念可以找一下相关的文章。
如何配置项目
项目的目录结构
创建一个flask-docker的应用,应用程序的目录结构如下:
**flask-docker**
├── app.py
├── Dockerfile
├── requirements.txt
文件内容说明
app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello world! Flask Docker!!'
if __name__ == "__main__":
app.run(debug=True)
现在,直接在命令行运行python app.py来测试这个 Flask的hello world 应用程序
python app.py
我们应该会得到类似于下面的输出结果:
* Serving Flask app 'app' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
Dockerfile内容:
#使用的基础镜像
FROM python:3.8.10
#设置工作目录
WORKDIR /app
#复制requirements.txt
COPY requirements.txt requirements.txt
#安装依赖包
RUN pip install -r requirements.txt
#复制当前目录下的内容到docker中
COPY . .
#启动命令
ENTRYPOINT [ "python", "-m" , "flask", "--app","app.py", "run", "--host=0.0.0.0","--port=8000"]
Dockerfile的基本内容,具体的解释已经在文件中,这里就不多说了
如何构建 Docker 镜像
接下来,就是构建Docker镜像。主要使用“docker build
”命令,具体如下。
docker build --tag flask-docker .
如何查看镜像
通过“docker images” 可以查看所有的镜像,具体如下:
docker images
命令执行后,输出如下所示:
REPOSITORY TAG IMAGE ID CREATED SIZE
flask-docker latest cd52b70b361a About an hour ago 912MB
python 3.8.10 587b1bc803b3 7 months ago 885MB
如何运行容器
接下来就可以使用docker run
命令,运行image。
docker run --name flask-docker-v1 -dit -p 8000:8000 flask-docker:latest
运行结束后,可以通过http://localhost:8000进行验证
如何查看容器
我们可以使用“docker ps"命令来查看当前有哪些容器在运行,具体命令如下:
docker ps
输出如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a173935297cd flask-docker "python -m flask ru…" 5 minutes ago Up 5 minutes 0.0.0.0:8000->8000/tcp good_wescoff
如何停止容器
要停止当前正在运行的容器,我们可以执行“docker stop"命令,具体命令如下:
docker stop <container-id>
如何删除容器
docker rm <container-id>
相关文章
- 新增功能 – 用于提升可用性和性能的 AWS Global Accelerator
- Firecracker – 无服务器计算的轻量级虚拟化
- Amazon Comprehend Medical —— 针对医疗保健客户的自然语言处理
- 联网速度为 100 Gbps 的新 C5n 实例
- java bean入门
- 新 – AWS Marketplace 推出 Private Marketplace,让软件采购管理变得更轻松
- 新增功能 – AWS Transfer for SFTP – 适用于 Amazon S3 的完全托管式 SFTP 服务
- 11 月 27 日,星期二:re:Invent 大会今日举行开源会议
- 新增功能 – AWS DataSync – 数据传输自动化和加速
- 宣布推出 Firecracker 开源技术:适用于无服务器计算的安全、快速的 microVM
- AWS RoboMaker – 开发、测试、部署和管理智能机器人应用程序
- 开源机器人操作系统 (ROS) 与 AWS RoboMaker
- 欢迎来到 AWS re:Invent 2018
- 2018 年 re:Invent 大会上的 AWS 预览和预发布 – Midnight Madness
- AWS 参加 2018 年北美 KubeCon + CloudNativeCon
- 11 月 26 日,星期一:re:Invent 大会今日举行开源会议
- Kubernetes Ingress 与 AWS ALB Ingress 控制器的配合使用
- Amazon S3 公有访问阻止 – 为您的账户和存储桶提供又一层保护
- 新增功能 – 使用 Amazon Comprehend 训练自定义文档分类器
- EC2 Auto Scaling 组推出多个实例类型和购买选项