Update docker/docker-entrypoint.sh
Browse files- docker/docker-entrypoint.sh +17 -50
docker/docker-entrypoint.sh
CHANGED
|
@@ -1,60 +1,27 @@
|
|
| 1 |
#!/bin/bash
|
| 2 |
|
| 3 |
-
#
|
| 4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
-
# ====================================================================
|
| 7 |
-
# 第一步:等待持久化存储准备就绪
|
| 8 |
-
# ====================================================================
|
| 9 |
-
# 在 Hugging Face Spaces 这样的环境中,容器的启动速度可能快于
|
| 10 |
-
# 持久化存储卷挂载到 /data 目录的速度。
|
| 11 |
-
# 下面的循环会一直等待,直到 /data 目录被成功创建(即挂载完成)。
|
| 12 |
-
#
|
| 13 |
-
echo "[信息] 正在等待持久化存储挂载到 /data..." >&2
|
| 14 |
-
while [ ! -d "/data" ]; do
|
| 15 |
-
echo "[信息] /data 目录未找到,等待 2 秒后重试..." >&2
|
| 16 |
-
sleep 2
|
| 17 |
-
done
|
| 18 |
-
echo "[成功] /data 处的持久化存储已准备就绪。" >&2
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
# ====================================================================
|
| 22 |
-
# 第二步:诊断并修复权限
|
| 23 |
-
# ====================================================================
|
| 24 |
-
echo "[调试] --- 开始诊断 ---" >&2
|
| 25 |
-
echo "[调试] 当前运行用户: $(whoami)" >&2
|
| 26 |
-
echo "[调试] --- /data 目录的初始权限 ---" >&2
|
| 27 |
-
ls -ld /data >&2 # 现在这个命令应该会成功执行
|
| 28 |
-
|
| 29 |
-
echo "[信息] 正在尝试修复 /data 目录的权限..." >&2
|
| 30 |
-
# 使用 sudo 将 /data 目录及其所有内容的拥有者递归地 (-R) 变更为当前用户
|
| 31 |
-
sudo chown -R "$(whoami)":"$(whoami)" /data && echo "[成功] /data 目录权限修复成功。" >&2 || { echo "[致命错误] 修改 /data 目录所有权失败。" >&2; exit 1; }
|
| 32 |
-
|
| 33 |
-
echo "[调试] --- /data 目录的最终权限 ---" >&2
|
| 34 |
-
ls -ld /data >&2 # 验证权限是否已被正确修改
|
| 35 |
-
echo "[调试] --- 诊断结束 ---" >&2
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
# ====================================================================
|
| 39 |
-
# 第三步:启动应用程序
|
| 40 |
-
# ====================================================================
|
| 41 |
-
# 现在,我们确保了 /data 目录存在且权限正确,可以安全地启动应用了。
|
| 42 |
{
|
| 43 |
cd /app/server/ &&
|
| 44 |
-
echo "[信息] 正在运行 Prisma generate..." &&
|
| 45 |
npx prisma generate --schema=./prisma/schema.prisma &&
|
| 46 |
-
echo "[信息] 正在运行 Prisma migrate..." &&
|
| 47 |
npx prisma migrate deploy --schema=./prisma/schema.prisma &&
|
| 48 |
-
echo "[信息] 正在启动主服务器..." &&
|
| 49 |
node /app/server/index.js
|
| 50 |
} &
|
| 51 |
-
{
|
| 52 |
-
echo "[信息] 正在启动 collector 服务..." &&
|
| 53 |
-
node /app/collector/index.js;
|
| 54 |
-
} &
|
| 55 |
-
|
| 56 |
-
# 等待任何一个后台进程退出
|
| 57 |
wait -n
|
| 58 |
-
|
| 59 |
-
# 使用那个退出进程的退出码来退出本脚本
|
| 60 |
-
exit $?
|
|
|
|
| 1 |
#!/bin/bash
|
| 2 |
|
| 3 |
+
# Check if STORAGE_DIR is set
|
| 4 |
+
if [ -z "$STORAGE_DIR" ]; then
|
| 5 |
+
echo "================================================================"
|
| 6 |
+
echo "⚠️ ⚠️ ⚠️ WARNING: STORAGE_DIR environment variable is not set! ⚠️ ⚠️ ⚠️"
|
| 7 |
+
echo ""
|
| 8 |
+
echo "Not setting this will result in data loss on container restart since"
|
| 9 |
+
echo "the application will not have a persistent storage location."
|
| 10 |
+
echo "It can also result in weird errors in various parts of the application."
|
| 11 |
+
echo ""
|
| 12 |
+
echo "Please run the container with the official docker command at"
|
| 13 |
+
echo "https://docs.anythingllm.com/installation-docker/quickstart"
|
| 14 |
+
echo ""
|
| 15 |
+
echo "⚠️ ⚠️ ⚠️ WARNING: STORAGE_DIR environment variable is not set! ⚠️ ⚠️ ⚠️"
|
| 16 |
+
echo "================================================================"
|
| 17 |
+
fi
|
| 18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
{
|
| 20 |
cd /app/server/ &&
|
|
|
|
| 21 |
npx prisma generate --schema=./prisma/schema.prisma &&
|
|
|
|
| 22 |
npx prisma migrate deploy --schema=./prisma/schema.prisma &&
|
|
|
|
| 23 |
node /app/server/index.js
|
| 24 |
} &
|
| 25 |
+
{ node /app/collector/index.js; } &
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
wait -n
|
| 27 |
+
exit $?
|
|
|
|
|
|