# intelligent-lock-docker **Repository Path**: lastle/intelligent-lock-docker ## Basic Information - **Project Name**: intelligent-lock-docker - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-22 - **Last Updated**: 2026-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # intelligent-lock-docker 智能锁(ilock)生产/测试环境的 Docker Compose 部署仓库。 镜像由 Gitea Actions 构建并推送到 `registry.ouhaihr.com`,本仓库负责编排与运行时配置。 ## 服务 | 服务 | 镜像 | 本机端口 | 说明 | |------|------|----------|------| | `postgres` | `registry.ouhaihr.com/ilock/postgres:16-alpine` | `127.0.0.1:5432` | PostgreSQL,数据卷 `ilock-pgdata` | | `redis` | `registry.ouhaihr.com/ilock/redis:8-alpine` | `127.0.0.1:6379` | Redis 8(AOF + 密码),数据卷 `ilock-redisdata` | | `api` | `registry.ouhaihr.com/ilock/ilock-api:latest` | `127.0.0.1:8888` | Go API + QSS | | `admin` | `registry.ouhaihr.com/ilock/ilock-admin:latest` | `127.0.0.1:3000` | 管理后台 Next | | `gateway`(可选) | `nginx:1.27-alpine` | `0.0.0.0:8081` | `/api`→api,其余→admin(直接对外) | 服务名必须保持 `api` / `admin`,以便 CI 执行: ```bash docker compose pull api && docker compose up -d api docker compose pull admin && docker compose up -d admin ``` 建议部署目录:`~/compose/ilock`(或服务器上 CI 使用的 `compose/ilock`)。 ## 快速开始 ```bash git clone https://gitee.com/lastle/intelligent-lock-docker.git compose/ilock cd compose/ilock cp .env.example .env # 至少修改:POSTGRES_PASSWORD、REDIS_PASSWORD,以及 JWT/OSS/MQTT/QSS 等 docker login registry.ouhaihr.com docker compose pull docker compose up -d # 可选:启用统一网关 docker compose --profile gateway up -d ``` `api` 会等待 `postgres` / `redis` healthcheck 通过后再启动;容器内连接串由 compose 注入为: - `DATABASE_URL=postgres://...@postgres:5432/...` - `REDIS_URL=redis://:...@redis:6379/0` ## 访问 - API 文档:`http://127.0.0.1:8888/api/admin/docs` - 管理端:`http://127.0.0.1:3000` - 网关(启用 profile 后):`http://<服务器IP>:8081` - Postgres(本机):`psql postgres://ilock:密码@127.0.0.1:5432/ilock` - Redis(本机):`redis-cli -h 127.0.0.1 -a 密码` 网关默认直接对外暴露 `8081`;也可由宿主机 Nginx 将公网域名反代到本机 `8888` / `3000`(或 `8081`)。 **注意**:浏览器请走网关,避免直连 admin 时走容器内 `127.0.0.1:8888` 重写失败。 ## 常用命令 ```bash docker compose ps docker compose logs -f api docker compose logs -f postgres redis docker compose pull && docker compose up -d docker compose restart api # 备份 Postgres docker compose exec -T postgres pg_dump -U ilock ilock > backup-$(date +%Y%m%d).sql ``` ## 从旧主机迁移数据 把原先 `122.51.156.244` 上的 Postgres / Redis 迁入本 compose: ```bash cd compose/ilock # 或本仓库根目录 # 确保 .env 中 POSTGRES_* / REDIS_* 已填写(密码需与旧库一致或你已知源库密码) # 一键:导出旧库 + 导入 compose bash scripts/migrate-from-legacy.sh # 或分步 bash scripts/migrate-from-legacy.sh dump # 备份到 ./backups/ bash scripts/migrate-from-legacy.sh restore # 导入最新备份 ``` 源地址可用环境变量覆盖:`SRC_PG_HOST`、`SRC_REDIS_HOST`、`SRC_PG_PASSWORD` 等。 **注意**:若在同一台机器上迁库,需保证旧 Postgres 仍在监听、compose 的 `127.0.0.1:5432` 不与旧实例抢端口;冲突时可先只 `up -d postgres redis` 并临时改掉 compose 端口再导入。 ## 配置说明 | 环境 | 配置文件 | |------|----------| | 本地 api | `intelligent-lock-api/.env` | | 本地 admin | `intelligent-lock-admin/.env.local` | | **生产 compose** | **本仓库 `.env`** → 注入 `api`(`env_file`) | - **必填**:`POSTGRES_PASSWORD`、`REDIS_PASSWORD`。 - **`DATABASE_URL` / `REDIS_URL`**:api 容器内会被 compose 覆盖为 `@postgres` / `@redis`。 - **Admin**:`NEXT_PUBLIC_*` 在构建 admin 镜像时注入(Gitea Secrets / build-arg),不在本仓库 `.env` 中配置。 - **QSS**:生产镜像 Linux amd64;compose 已设 `LD_LIBRARY_PATH=/app/sdk/qss/lib`。 ## 与源码仓库关系 | 仓库 | 职责 | |------|------| | `intelligent-lock-api` | API 源码、多阶段 Dockerfile、Gitea 构建推送 | | `intelligent-lock-admin` | 管理端源码、多阶段 Dockerfile、Gitea 构建推送 | | **本仓库** | Compose(含 PG/Redis)、`.env`、可选 Nginx 网关 |