方式 B:仅构建 App 镜像 docker build -t hik-shentong-bridge:latest .
方式 A:使用 Docker Compose(推荐)
构建并启动docker compose up -d –build
查看日志docker compose logs -f app
停止并清理docker compose down
你的镜像 hik-shentong-bridge:latest 已构建成功,现在可以上传到 Docker Hub 或 私有仓库,方便在其他设备部署。
清理 Docker 无用资源
- 停止所有容器(避免清理时冲突)
- docker compose down
- 清理悬空镜像、构建缓存、未使用卷
- docker system prune -af –volumes
- 查看剩余空间
- df -h /
🔐 第一步:登录 Docker 仓库
✅ Docker Hub(官方公共仓库)
- 登录(输入用户名和密码/访问令牌)
- docker login或者docker login -u 用户名
- 或指定服务器(默认就是 hub.docker.com)
- docker login https://index.docker.io/v1/
私有仓库(如 Harbor、自建 Registry)
- docker login your-registry.com:5000
- 输入用户名密码
🏷️ 第二步:给镜像打标签(Tag)
- Docker 要求镜像名格式:
<仓库用户名>/<镜像名>:<标签>
假设你的 Docker Hub 用户名是:myuser
- docker tag hik-shentong-bridge:latest myuser/hik-shentong-bridge:latest
- 可选:添加版本标签
- docker tag hik-shentong-bridge:latest myuser/hik-shentong-bridge:v2.4.0
📌 示例:上传到私有仓库
- 假设私有仓库地址:registry.example.com:5000
- docker tag hik-shentong-bridge:latest registry.example.com:5000/hik-shentong-bridge:latest
- ✅ 验证标签是否成功:
docker images | grep hik-shentong-bridge
🚀 第三步:推送镜像到仓库
# 推送到 Docker Hub
docker push myuser/hik-shentong-bridge:latest
# 如果同时打了版本标签,也推送
docker push myuser/hik-shentong-bridge:v2.4.0
🔄 第四步:在其他机器拉取并运行
1️⃣ 拉取镜像
- 新机器先登录(如果需要)
- docker login
- 拉取镜像
- docker pull myuser/hik-shentong-bridge:latest
2️⃣ 运行容器(示例)
docker run -d --name st-bridge \
-p 7200:7200 \
-e SQLALCHEMY_DATABASE_URL="mysql+pymysql://user:pass@db:3306/shentong" \
-e REDIS_HOST="redis" \
-e REDIS_PORT="6379" \
--restart unless-stopped \
myuser/hik-shentong-bridge:latest
3️⃣ 推荐:使用 docker-compose 一键部署
在新机器创建 docker-compose.yml:
yaml
version: ‘3.8’
services:
app:
image: myuser/hik-shentong-bridge:latest
container_name: st-bridge
ports:
– “7200:7200”
environment:
– SQLALCHEMY_DATABASE_URL=mysql+pymysql://user:pass@db:3306/shentong
– REDIS_HOST=redis
– REDIS_PORT=6379
depends_on:
– db
– redis
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: st-redis
db:
image: mysql:8.0
container_name: st-db
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: shentong
volumes:
– db_/var/lib/mysql
volumes:
db_