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