Docker 与 Compose
IronFlock 应用以 Docker 镜像的形式打包。Dockerfile 定义了应用代码的运行时环境。
Dockerfile
每个应用都需要在根目录中放置一个 Dockerfile。该文件从基础镜像开始,为您的应用配置 Linux 环境:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]完整语法参考请查阅 Dockerfile 官方文档。
多架构支持
要支持不同的设备架构,可添加特定架构的 Dockerfile:
| 文件 | 架构 | 示例设备 |
|---|---|---|
Dockerfile | 默认(用作后备) | 任意 |
Dockerfile.armv7 | ARMv7 | Raspberry Pi 3/4(32 位) |
Dockerfile.arm64 | ARM64 | NVIDIA Jetson、RPi 4/5(64 位) |
Dockerfile.amd64 | AMD64 | 工业 PC、Intel NUC |
构建版本时,IronFlock 会为每个目标架构选择最匹配的 Dockerfile。如果不存在特定架构的文件,则使用默认的 Dockerfile。
Docker Compose
对于包含多个服务的应用(例如 Web 服务器 + 数据库 + 工作进程),请使用 Docker Compose:
# docker-compose.yml
version: "3"
services:
app:
build: .
volumes:
- /data:/data
- /shared:/shared
ports:
- "5000:5000"
restart: unless-stopped
redis:
image: redis:7-alpine
restart: unless-stopped将 docker-compose.yml 放在根目录中,替代(或与之并存)Dockerfile。当用户在设备上启动或停止应用时,整个 Compose 堆栈作为一个整体进行管理。
Docker Compose 让您可以更精细地控制:
- 卷挂载和数据持久化
- 服务网络
- 资源限制
- 多容器架构
最佳实践
- 保持镜像精简 — 使用
-slim或-alpine基础镜像,减少在受限设备上的下载时间。 - 固定版本 — 使用具体的版本标签(
python:3.11-slim)而非latest,以确保构建可复现。 - 利用缓存层 — 先复制依赖文件,再复制应用代码,以利用 Docker 层缓存。
- 使用
.dockerignore— 从构建上下文中排除不必要的文件(文档、测试、.git)。
Last updated on