文章列表
2 分钟阅读

Dockerfile 入门:构建自己的应用镜像


系列:容器部署基础

第 2 / 10 篇

  1. Docker 安装与使用教程:从零部署第一个容器服务
  2. Dockerfile 入门:构建自己的应用镜像
  3. Docker Compose 使用指南:管理多容器服务
  4. Docker 数据卷与备份:数据库容器怎么保护数据
  5. Docker 网络与端口映射:容器之间怎么通信
  6. Docker 日志和排障:logs、exec、inspect、stats
  7. 用 Docker 部署一个 Python Web 项目
  8. Nginx 反向代理入门:静态文件、HTTPS 和 Web 服务转发
  9. HTTPS 和证书部署指南:Let’s Encrypt、Cloudflare、Nginx 怎么配
  10. Docker 生产环境部署注意事项:镜像、日志、数据卷和健康检查

学 Docker 不能只会 docker run。只要你要部署自己的应用,就绕不开 Dockerfile。它描述的是“如何把应用打成镜像”。

最小 Dockerfile

先从最小版本开始更容易理解。下面这个例子适合普通 Python 脚本或很小的 Web 服务,重点是看清每一行发生在构建阶段还是运行阶段。

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]

构建:

Terminal window
docker build -t my-app .
docker run --rm my-app

如果构建失败,先看依赖安装那一步;如果运行失败,再看 CMD 指向的入口文件是否存在。

指令说明

FROM 基础镜像
WORKDIR 工作目录
COPY 复制文件
RUN 构建时执行命令
CMD 容器启动时默认命令

RUN 发生在构建镜像时,CMD 发生在容器启动时。

层缓存

依赖文件先复制,源码后复制,是为了利用缓存:

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

只改业务代码时,不需要重新安装依赖。

常见问题

不要把 .env.gitnode_modules 复制进镜像。写 .dockerignore

.git
.env
node_modules
__pycache__

Docker 基础可以先看 Docker 安装与使用教程:从零部署第一个容器服务

总结

Dockerfile 的重点是可复现。基础镜像、依赖安装、源码复制、启动命令写清楚,应用就能在不同机器上用同样方式运行。下一步可以看 Docker Compose 使用指南:管理多容器服务