手把手教你:Docker 容器化部署 Python Flask Web 应用
准备工作
1. 创建 Flask 应用
2. 编写 Dockerfile
3. 编写 docker-compose.yml
4. 构建镜像和运行容器
5. 停止和删除容器
总结
本文将引导你使用 Docker 容器化部署一个简单的 Python Flask Web 应用。我们将详细介绍如何编写 Dockerfile
和 docker-compose.yml
文件,以及如何进行镜像构建和容器编排,最终使你的 Flask 应用能够在 Docker 容器中稳定运行。
准备工作
在开始之前,请确保你已经安装了 Docker 和 Docker Compose。你可以从 Docker 官网下载并安装:
同时,你需要具备一定的 Python 和 Flask 基础知识。
1. 创建 Flask 应用
首先,创建一个简单的 Flask 应用。创建一个名为 app.py
的文件,内容如下:
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, Docker!' if __name__ == '__main__': app.run(debug=True, host='0.0.0.0')
这个简单的 Flask 应用定义了一个根路由 /
,访问该路由会返回 "Hello, Docker!"。
接下来,创建一个 requirements.txt
文件,用于指定 Flask 应用的依赖:
Flask
2. 编写 Dockerfile
在项目根目录下,创建一个名为 Dockerfile
的文件,内容如下:
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
解释一下 Dockerfile
的每一行:
FROM python:3.9-slim-buster
: 指定基础镜像为 Python 3.9 slim 版本,基于 Debian Buster。这是一个轻量级的镜像,适合用于生产环境。WORKDIR /app
: 设置工作目录为/app
,后续的命令会在该目录下执行。COPY requirements.txt .
: 复制requirements.txt
文件到工作目录。RUN pip install --no-cache-dir -r requirements.txt
: 安装requirements.txt
中指定的 Python 依赖。--no-cache-dir
可以减少镜像大小。COPY . .
: 复制当前目录下的所有文件到工作目录。EXPOSE 5000
: 声明容器暴露的端口为 5000。Flask 应用默认监听 5000 端口。CMD ["python", "app.py"]
: 定义容器启动时执行的命令。这里使用python app.py
启动 Flask 应用。
3. 编写 docker-compose.yml
为了方便管理和运行容器,我们可以使用 Docker Compose。在项目根目录下,创建一个名为 docker-compose.yml
的文件,内容如下:
version: "3.9" services: web: build: . ports: - "5000:5000" volumes: - .:/app environment: - FLASK_DEBUG=1
解释一下 docker-compose.yml
的每一项:
version: "3.9"
: 指定 Docker Compose 文件的版本。services
: 定义服务。web
: 定义一个名为web
的服务。build: .
: 指定使用当前目录下的Dockerfile
构建镜像。- `ports:
- "5000:5000"
: 将主机的 5000 端口映射到容器的 5000 端口。这样可以通过
http://localhost:5000` 访问 Flask 应用。
- "5000:5000"
- `volumes:
- .:/app
: 将当前目录挂载到容器的
/app` 目录。这样可以实现代码的实时更新,方便开发。
- .:/app
- `environment:
- FLASK_DEBUG=1
: 设置环境变量
FLASK_DEBUG=1`,启用 Flask 的调试模式。
- FLASK_DEBUG=1
4. 构建镜像和运行容器
现在,我们可以使用 Docker Compose 构建镜像和运行容器了。在项目根目录下,执行以下命令:
docker-compose up --build
--build
参数会强制重新构建镜像。Docker Compose 会读取 docker-compose.yml
文件,自动构建镜像并启动容器。你可以在终端看到 Flask 应用的输出。
打开浏览器,访问 http://localhost:5000
,你应该能看到 "Hello, Docker!"。这表明你的 Flask 应用已经成功运行在 Docker 容器中了。
5. 停止和删除容器
要停止和删除容器,可以执行以下命令:
docker-compose down
这个命令会停止并删除 Docker Compose 创建的所有容器、网络和卷。
总结
本文详细介绍了如何使用 Docker 容器化部署一个简单的 Python Flask Web 应用。通过编写 Dockerfile
和 docker-compose.yml
文件,我们可以轻松地构建镜像和运行容器,实现应用的快速部署和管理。希望这篇文章能帮助你更好地理解和使用 Docker。下次部署应用的时候,就不用再手动配置环境了,是不是很方便?快去试试吧!