feat: initial commit - massive-cloud point cloud processing system
This commit is contained in:
51
scripts/snapshot-app-dev-image.sh
Executable file
51
scripts/snapshot-app-dev-image.sh
Executable 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
|
||||
Reference in New Issue
Block a user