Severian commited on
Commit
4f3395e
·
verified ·
1 Parent(s): fbcb88a

Update entrypoint.sh

Browse files
Files changed (1) hide show
  1. entrypoint.sh +32 -71
entrypoint.sh CHANGED
@@ -1,71 +1,32 @@
1
- # base image
2
- FROM python:3.12-slim-bookworm AS base
3
-
4
- # Create non-root user early (HF requirement)
5
- RUN useradd -m -u 1000 user
6
-
7
- WORKDIR /app/api
8
-
9
- # Install Poetry
10
- ENV POETRY_VERSION=1.8.4
11
- ENV POETRY_HOME=/opt/poetry
12
- ENV POETRY_CACHE_DIR=/tmp/poetry_cache
13
- ENV POETRY_NO_INTERACTION=1
14
- ENV POETRY_VIRTUALENVS_IN_PROJECT=true
15
- ENV POETRY_VIRTUALENVS_CREATE=true
16
- ENV POETRY_REQUESTS_TIMEOUT=15
17
-
18
- # Install system dependencies
19
- RUN apt-get update && \
20
- apt-get install -y --no-install-recommends \
21
- gcc g++ libc-dev libffi-dev libgmp-dev libmpfr-dev libmpc-dev \
22
- postgresql postgresql-contrib postgresql-server-dev-all \
23
- curl git nodejs npm && \
24
- rm -rf /var/lib/apt/lists/* && \
25
- pip install --no-cache-dir "poetry==${POETRY_VERSION}"
26
-
27
- # Set up directories and permissions
28
- RUN mkdir -p /var/run/postgresql /var/lib/postgresql/data /data/storage && \
29
- chown -R postgres:postgres /var/run/postgresql /var/lib/postgresql/data && \
30
- chmod 2777 /var/run/postgresql && \
31
- chmod 700 /var/lib/postgresql/data
32
-
33
- # Copy Poetry files
34
- COPY --chown=user pyproject.toml poetry.lock ./
35
-
36
- # Install dependencies
37
- RUN poetry install --no-root
38
-
39
- # Copy application code
40
- COPY --chown=user . .
41
-
42
- # Set environment variables
43
- ENV FLASK_APP=/app/api/app.py
44
- ENV PYTHONPATH=/app/api
45
- ENV HOME=/home/user
46
- ENV PATH=/home/user/.local/bin:$PATH
47
-
48
- # Create and set up entrypoint script
49
- COPY docker/entrypoint.sh /entrypoint.sh
50
- RUN chmod +x /entrypoint.sh && \
51
- chown user:user /entrypoint.sh && \
52
- chown -R user:user /app
53
-
54
- # Switch to user
55
- USER user
56
-
57
- # Set required environment variables
58
- ENV EDITION=SELF_HOSTED \
59
- DEPLOY_ENV=PRODUCTION \
60
- MODE=api \
61
- DB_USERNAME=postgres \
62
- DB_PASSWORD=difyai123456 \
63
- DB_HOST=localhost \
64
- DB_PORT=5432 \
65
- DB_DATABASE=dify \
66
- MIGRATION_ENABLED=true
67
-
68
- EXPOSE 7860
69
-
70
- ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
71
-
 
1
+ set -e
2
+
3
+ if [[ "${MIGRATION_ENABLED}" == "true" ]]; then
4
+ echo "Running migrations"
5
+ cd /app/api && poetry run flask db upgrade
6
+ fi
7
+
8
+ if [[ "${MODE}" == "worker" ]]; then
9
+ if [ "${CELERY_AUTO_SCALE,,}" = "true" ]; then
10
+ AVAILABLE_CORES=$(nproc)
11
+ MAX_WORKERS=${CELERY_MAX_WORKERS:-$AVAILABLE_CORES}
12
+ MIN_WORKERS=${CELERY_MIN_WORKERS:-1}
13
+ CONCURRENCY_OPTION="--autoscale=${MAX_WORKERS},${MIN_WORKERS}"
14
+ else
15
+ CONCURRENCY_OPTION="-c ${CELERY_WORKER_AMOUNT:-1}"
16
+ fi
17
+
18
+ exec poetry run celery -A app.celery worker -P ${CELERY_WORKER_CLASS:-gevent} $CONCURRENCY_OPTION --loglevel ${LOG_LEVEL} \
19
+ -Q ${CELERY_QUEUES:-dataset,mail,ops_trace,app_deletion}
20
+ else
21
+ if [[ "${DEBUG}" == "true" ]]; then
22
+ exec poetry run flask run --host=${DIFY_BIND_ADDRESS:-0.0.0.0} --port=7860 --debug
23
+ else
24
+ exec poetry run gunicorn \
25
+ --bind "0.0.0.0:7860" \
26
+ --workers ${SERVER_WORKER_AMOUNT:-1} \
27
+ --worker-class ${SERVER_WORKER_CLASS:-gevent} \
28
+ --timeout ${GUNICORN_TIMEOUT:-200} \
29
+ --preload \
30
+ app:app
31
+ fi
32
+ fi