====== teslamate backup web ====== Dockerfile: ``` FROM python:3.11-slim # 安装 docker.io + gzip RUN apt-get update && \ apt-get install -y --no-install-recommends docker.io gzip && \ rm -rf /var/lib/apt/lists/* WORKDIR /app RUN pip install --no-cache-dir flask COPY app.py . COPY templates ./templates EXPOSE 5000 CMD ["python3", "app.py"] ``` 创建本地镜像: ``` # 构建 amd64 + arm64 + arm/v7 三架构 docker buildx build \ --platform=linux/amd64,linux/arm64,linux/arm/v7 \ -t netfun2000/tmbackupweb:v1.0.0 . ``` 推送到仓库: ``` docker buildx build \ --platform=linux/amd64,linux/arm64,linux/arm/v7 \ -t netfun2000/tmbackupweb:v1.0.0 \ --push . ``` 镜像本地保存: buildx 多架构清单镜像不能直接 save,想导出离线包,分开构建单架构: ``` # 构建 amd64 docker buildx build --platform linux/amd64 -t netfun2000/tmbackupweb:v1.0.0-amd64 --load . # 构建 arm64 docker buildx build --platform linux/arm64 -t netfun2000/tmbackupweb:v1.0.0-arm64 --load . # 构建 arm/v7 docker buildx build --platform linux/arm/v7 -t netfun2000/tmbackupweb:v1.0.0-armv7 --load . ``` 参数 --load:把镜像加载到本地镜像列表,支持 docker save 导出。 导出离线包示例: ``` docker save -o tmbackupweb-amd64.tar netfun2000/tmbackupweb:v1.0.0-amd64 ``` 其他机器导入: ``` docker load -i tmbackupweb-amd64.tar ``` ``` version: "3.8" services: tm-backup-web: build: . container_name: tm-backup-web restart: unless-stopped ports: - "5000:5000" environment: - DATABASE_USER=${TM_DB_USER} - DATABASE_PASS=${TM_DB_PASS} - DATABASE_NAME=${TM_DB_NAME} - DATABASE_HOST=database volumes: # 关键:挂载宿主机docker socket,容器内可执行 docker compose - /var/run/docker.sock:/var/run/docker.sock # 映射当前目录,保证 docker compose 能找到原 docker-compose.yml - ./:/app # 关联teslamate所在网络(替换成你实际的网络名,默认一般为原项目默认网络) networks: - teslamate_net # 填写你 Teslamate 所在的 Docker 网络名称 networks: teslamate_net: external: true ```