fix: Docker 构建前临时替换 shared 符号链接为实际目录
Docker COPY 无法跟随指向构建上下文外的符号链接, 导致 @shared/* 模块在容器内构建时找不到。 构建前临时替换、构建后恢复。
This commit is contained in:
parent
01836971e5
commit
e2937d0ce1
16
deploy-ai.sh
16
deploy-ai.sh
|
|
@ -464,8 +464,24 @@ build_on_server() {
|
||||||
log "重建容器..."
|
log "重建容器..."
|
||||||
local build_flag=""
|
local build_flag=""
|
||||||
ssh txjp "test -f $REMOTE_DIR/Dockerfile" 2>/dev/null && build_flag="--build"
|
ssh txjp "test -f $REMOTE_DIR/Dockerfile" 2>/dev/null && build_flag="--build"
|
||||||
|
|
||||||
|
# Docker 无法跟随指向构建上下文外的符号链接,临时将 shared 符号链接替换为实际目录
|
||||||
|
ssh txjp "cd $REMOTE_DIR && if [ -L shared ]; then
|
||||||
|
target=\$(readlink shared)
|
||||||
|
rm shared
|
||||||
|
cp -r \$target shared
|
||||||
|
echo 'shared 符号链接已临时替换为实际目录'
|
||||||
|
fi"
|
||||||
|
|
||||||
ssh txjp "cd $REMOTE_DIR && docker compose up -d $build_flag && docker compose restart"
|
ssh txjp "cd $REMOTE_DIR && docker compose up -d $build_flag && docker compose restart"
|
||||||
|
|
||||||
|
# 恢复 shared 符号链接(仅当目录非符号链接且上级 shared 存在时)
|
||||||
|
ssh txjp "cd $REMOTE_DIR && if [ -d shared ] && [ ! -L shared ] && [ -d ../shared ]; then
|
||||||
|
rm -rf shared
|
||||||
|
ln -s ../shared shared
|
||||||
|
echo 'shared 符号链接已恢复'
|
||||||
|
fi"
|
||||||
|
|
||||||
# 7. 清理构建产生的悬空镜像和缓存(根据磁盘使用率动态调整)
|
# 7. 清理构建产生的悬空镜像和缓存(根据磁盘使用率动态调整)
|
||||||
log "清理构建缓存..."
|
log "清理构建缓存..."
|
||||||
# 清理悬空镜像(无标签或未被引用的中间层)
|
# 清理悬空镜像(无标签或未被引用的中间层)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue