Docker 中的 Python 3 镜像概述

引言

在现代软件开发中,容器化技术为应用的构建、测试和部署提供了极大的便利。Docker 是当前最流行的容器化平台之一。Python 作为一种广受欢迎的编程语言,常被用于数据分析、Web 开发等多个领域。在这篇文章中,我们将详细讨论如何使用 Docker 的 Python 3 镜像来构建和运行 Python 应用程序,并提供实用的代码示例。

什么是 Docker 镜像?

Docker 镜像是一个轻量级、可执行的独立软件包,包含运行某个软件所需的所有内容,包括代码、运行时、库及其依赖项。每个镜像都是在一个只读文件系统中构建的,可以从这个基础上实例化出容器。

为什么使用 Python 3 镜像?

使用 Python 3 镜像,有几个重要的优势:

  1. 环境一致性:确保在开发、测试和生产环境中使用完全相同的依赖。
  2. 快速部署:可以快速启动和关闭 Python 应用程序。
  3. 资源隔离:每个容器都是相互隔离的,确保了应用间不会相互干扰。

使用 Python 3 镜像的基本流程

下面我们将通过创建一个简单的 Python Flask 应用来演示如何使用 Python 3 镜像。

1. 安装 Docker

在你的系统中安装 Docker。可以参考 [Docker 官方文档](

2. 创建项目结构

在你的工作目录中创建如下的项目结构:

my_flask_app/
├── app.py
└── Dockerfile
  • 1.
  • 2.
  • 3.
3. 编写 Flask 应用

app.py 文件中,编写一个简单的 Flask 应用:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Docker with Python 3!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
4. 创建 Dockerfile

Dockerfile 中,指定基础镜像和应用设置。以下是一个示例 Dockerfile:

# 使用官方 Python 3 镜像作为基础镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /usr/src/app

# 复制要求文件并安装依赖
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 使容器监听特定端口
EXPOSE 5000

# 启动应用
CMD ["python", "./app.py"]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
5. 创建要求文件

在项目根目录创建 requirements.txt 文件,添加 Flask 依赖:

Flask==2.0.1
  • 1.
6. 构建 Docker 镜像

在项目根目录下,使用以下命令构建 Docker 镜像:

docker build -t my_flask_app .
  • 1.
7. 运行 Docker 容器

构建完成后,运行容器:

docker run -p 5000:5000 my_flask_app
  • 1.

现在打开浏览器,访问 http://localhost:5000,你将看到“Hello, Docker with Python 3!”

ER 图示例

在构建应用程序时,通常会涉及多种实体和它们之间的关系。下面是一个简单的ER图表示了一个 Flask 应用可能涉及的用户和帖子实体。

USER int id string username string email POST int id string title string content int user_id has

总结

在这篇文章中,我们介绍了如何使用 Docker Python 3 镜像来构建一个简单的 Flask 应用。通过这一过程,我们了解了 Docker 镜像的基础知识、创建 Dockerfile 的方法,以及如何使用命令行工具构建和运行容器。容器化不仅简化了开发流程,而且大大提高了应用的可移植性和一致性。

通过实践这些步骤,你将会更加熟悉 Docker 的强大功能。如果你还没有开始使用 Docker,今天就是一个好的开始吧!