feat: initial commit - massive-cloud point cloud processing system

This commit is contained in:
2026-05-27 09:51:42 +00:00
commit 16811100d1
391 changed files with 78338 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
#!/usr/bin/env bash
# 将当前运行的 massive-point-cloud-app-dev 容器固化为镜像,避免下次从 Dockerfile 全量重建。
#
# 限制(必读):
# - 绑定挂载 .:/app 下的代码改动在 commit 时不会打进镜像(运行时仍用宿主机目录)。
# - app-node-modules 是命名卷,commit 不会包含 node_modules;勿对 app 执行 docker compose down -v,
# 否则需重新 pnpm install(卷在则依赖仍在)。
# - 在容器内装到 /usr、/usr/local 等的 apt/pip 等会随 commit 保留。
#
# 用法:
# chmod +x scripts/snapshot-app-dev-image.sh
# ./scripts/snapshot-app-dev-image.sh # 标签 massive-point-cloud-app-dev:frozen-YYYYMMDD
# ./scripts/snapshot-app-dev-image.sh mytag # 标签 massive-point-cloud-app-dev:mytag
# ./scripts/snapshot-app-dev-image.sh mytag ./app-dev-snapshot.tar # 同时 docker save 到文件便于备份/迁移
set -euo pipefail
CONTAINER_NAME="${CONTAINER_NAME:-massive-point-cloud-app-dev}"
IMAGE_BASENAME="${IMAGE_BASENAME:-massive-point-cloud-app-dev}"
TAG="${1:-frozen-$(date +%Y%m%d)}"
SAVE_PATH="${2:-}"
if ! docker inspect "$CONTAINER_NAME" &>/dev/null; then
echo "错误: 找不到容器 $CONTAINER_NAME ,请先启动: docker compose -f docker-compose.dev.yml up -d app" >&2
exit 1
fi
FULL_IMAGE="${IMAGE_BASENAME}:${TAG}"
echo "正在提交容器 $CONTAINER_NAME -> $FULL_IMAGE"
docker commit "$CONTAINER_NAME" "$FULL_IMAGE"
echo "已生成镜像: $FULL_IMAGE"
if [[ -n "$SAVE_PATH" ]]; then
echo "正在导出: docker save -o $SAVE_PATH $FULL_IMAGE"
docker save -o "$SAVE_PATH" "$FULL_IMAGE"
echo "已保存: $SAVE_PATH"
fi
cat <<EOF
后续用固化镜像启动(跳过 Dockerfile 构建):
export MASSIVE_APP_DEV_IMAGE=$FULL_IMAGE
docker compose -f docker-compose.dev.yml -f docker-compose.gpu.yml up -d --no-build
若不用 GPU 覆盖文件,可去掉 -f docker-compose.gpu.yml 。
勿使用 --build ,否则会按 Dockerfile 重新构建并覆盖本地 tag 的构建结果。
如需长期默认使用该镜像,可在项目根目录 .env 中写入一行:
MASSIVE_APP_DEV_IMAGE=$FULL_IMAGE
EOF