汇知百科
白蓝主题五 · 清爽阅读
首页  > 系统软件

如何构建Docker镜像

准备一个简单的项目

假设你正在开发一个基于 Python Flask 的小型网页应用,现在想把它打包成 ref="/tag/2019/" style="color:#EB6E00;font-weight:bold;">Docker 镜像部署到服务器上。这时候,你就需要构建自己的 Docker 镜像。

Docker 镜像是容器运行的基础,它包含了运行某个程序所需的所有依赖、库和配置文件。构建镜像不是什么高深操作,核心就是写好一个 Dockerfile 文件,然后执行命令生成镜像。

编写 Dockerfile

Dockerfile 是一个文本文件,里面写了一系列指令,告诉 Docker 怎么一步步构建镜像。比如你的 Flask 项目结构如下:

myapp/

├── app.py
├── requirements.txt
└── Dockerfile

其中 app.py 是主程序,requirements.txt 列出了依赖包。接下来在项目根目录创建 Dockerfile,内容可以这样写:

FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["python", "app.py"]

逐行解释一下:
FROM 指定基础镜像,这里用的是官方的 Python 3.9 轻量版;
WORKDIR 设置工作目录,后续操作都在这个目录下进行;
COPY 把本地文件复制到镜像里;
RUN 在镜像中执行命令,这里是安装依赖;
EXPOSE 声明容器运行时监听的端口;
CMD 定义容器启动后默认运行的命令。

构建并验证镜像

打开终端,进入项目目录,执行构建命令:

docker build -t my-flask-app .

其中 -t 是给镜像打标签,方便后续引用。命令执行完后,可以用下面这句查看本地镜像列表:

docker images

你会看到 my-flask-app 出现在列表中。接着启动容器测试:

docker run -p 5000:5000 my-flask-app

如果一切正常,访问 http://localhost:5000 就能看到你的网页了。

一些实用技巧

为了加快构建速度,可以把 requirements.txt 单独先复制并安装依赖。这样只要依赖没变,后续修改代码时就能利用缓存,不用每次都重装包。

还可以添加 .dockerignore 文件,类似 .gitignore,用来排除不必要的文件,比如日志、虚拟环境目录、IDE 配置等,避免它们被复制进镜像导致体积变大。

如果你的应用需要连接数据库或使用环境变量,可以在 Dockerfile 中用 ENV 设置默认值,或者通过 docker run 命令传入。

构建镜像的过程其实就像做一道菜:准备好食材(代码和依赖),写下菜谱(Dockerfile),然后按步骤炒一锅(docker build)。只要菜谱写清楚,谁来做都能出锅一样的味道。