feat: optimize Dockerfile for HuggingFace Spaces deployment
Browse files- docker/entrypoint.sh +25 -7
docker/entrypoint.sh
CHANGED
@@ -3,20 +3,38 @@ set -e
|
|
3 |
|
4 |
echo "Starting Dify services..."
|
5 |
|
6 |
-
#
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
echo "PostgreSQL is unavailable - sleeping"
|
9 |
-
sleep
|
10 |
done
|
11 |
|
12 |
-
# Wait for Redis
|
13 |
-
until redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT"
|
|
|
14 |
echo "Redis is unavailable - sleeping"
|
15 |
-
sleep
|
16 |
done
|
17 |
|
18 |
-
#
|
19 |
cd /app/api
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
echo "Starting API server on port 7860..."
|
21 |
gunicorn --bind 0.0.0.0:7860 \
|
22 |
--workers 1 \
|
|
|
3 |
|
4 |
echo "Starting Dify services..."
|
5 |
|
6 |
+
# Install required database clients
|
7 |
+
apt-get update && apt-get install -y postgresql-client redis-tools
|
8 |
+
|
9 |
+
# Set database connection variables from environment
|
10 |
+
export PGHOST="${DB_HOST:-db}"
|
11 |
+
export PGPORT="${DB_PORT:-5432}"
|
12 |
+
export PGUSER="${DB_USERNAME:-postgres}"
|
13 |
+
export PGPASSWORD="${DB_PASSWORD:-difyai123456}"
|
14 |
+
export PGDATABASE="${DB_DATABASE:-dify}"
|
15 |
+
|
16 |
+
# Wait for PostgreSQL with proper credentials
|
17 |
+
until pg_isready -h "$PGHOST" -p "$PGPORT" -U "$PGUSER"; do
|
18 |
echo "PostgreSQL is unavailable - sleeping"
|
19 |
+
sleep 2
|
20 |
done
|
21 |
|
22 |
+
# Wait for Redis with proper credentials
|
23 |
+
until redis-cli -h "${REDIS_HOST:-redis}" -p "${REDIS_PORT:-6379}" \
|
24 |
+
-a "${REDIS_PASSWORD:-difyai123456}" ping; do
|
25 |
echo "Redis is unavailable - sleeping"
|
26 |
+
sleep 2
|
27 |
done
|
28 |
|
29 |
+
# Initialize database if needed
|
30 |
cd /app/api
|
31 |
+
if [ ! -f ".db_initialized" ]; then
|
32 |
+
echo "Initializing database..."
|
33 |
+
flask db upgrade
|
34 |
+
touch .db_initialized
|
35 |
+
fi
|
36 |
+
|
37 |
+
# Start API server in background
|
38 |
echo "Starting API server on port 7860..."
|
39 |
gunicorn --bind 0.0.0.0:7860 \
|
40 |
--workers 1 \
|