Skip to Content
IoT 应用开发Docker 与 Compose

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.armv7ARMv7Raspberry Pi 3/4(32 位)
Dockerfile.arm64ARM64NVIDIA Jetson、RPi 4/5(64 位)
Dockerfile.amd64AMD64工业 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