From a7ff7da7789d8f4fa3b7752cfe1d6e1150872741 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 18 Aug 2023 08:51:30 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(base.Dockerfile):=20remove?= =?UTF-8?q?=20unnecessary=20copy=20of=20./src/backend=20directory=20to=20i?= =?UTF-8?q?mprove=20build=20performance=20=E2=9C=A8=20feat(base.Dockerfile?= =?UTF-8?q?):=20add=20healthcheck=20for=20queue=20and=20celeryworker=20ser?= =?UTF-8?q?vices=20to=20ensure=20their=20availability=20=E2=9C=A8=20feat(d?= =?UTF-8?q?ocker-compose.yml):=20add=20healthcheck=20for=20queue,=20celery?= =?UTF-8?q?worker,=20and=20flower=20services=20to=20ensure=20their=20avail?= =?UTF-8?q?ability=20=F0=9F=90=9B=20fix(docker-compose.yml):=20fix=20the?= =?UTF-8?q?=20path=20in=20the=20command=20for=20backend=20service=20startu?= =?UTF-8?q?p=20=F0=9F=90=9B=20fix(flower.env):=20add=20missing=20double=20?= =?UTF-8?q?quote=20at=20the=20end=20of=20C=5FFORCE=5FROOT=20value=20?= =?UTF-8?q?=F0=9F=90=9B=20fix(startup-backend.sh):=20remove=20unnecessary?= =?UTF-8?q?=20--reload=20flag=20from=20uvicorn=20command=20and=20add=20--w?= =?UTF-8?q?orkers=20-1=20flag=20to=20utilize=20all=20available=20CPU=20cor?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/base.Dockerfile | 2 +- deploy/docker-compose.yml | 20 ++++++++++++++++---- deploy/flower.env | 3 +++ deploy/startup-backend.sh | 2 +- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/deploy/base.Dockerfile b/deploy/base.Dockerfile index 1be280163..83e875fa6 100644 --- a/deploy/base.Dockerfile +++ b/deploy/base.Dockerfile @@ -63,7 +63,6 @@ RUN --mount=type=cache,target=/root/.cache \ # copy project requirement files here to ensure they will be cached. WORKDIR $PYSETUP_PATH COPY ./poetry.lock ./pyproject.toml ./ -COPY ./src/backend ./src/backend # Copy README.md to the build context COPY ./README.md ./ # install runtime deps - uses $POETRY_VIRTUALENVS_IN_PROJECT internally @@ -82,6 +81,7 @@ WORKDIR $PYSETUP_PATH COPY --from=builder-base $POETRY_HOME $POETRY_HOME COPY --from=builder-base $PYSETUP_PATH $PYSETUP_PATH +COPY ./src/backend ./src/backend # quicker install as runtime deps are already installed RUN --mount=type=cache,target=/root/.cache \ poetry install --with=dev --extras deploy diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 0349fba41..fcdbf529b 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -17,6 +17,8 @@ services: - ../:/app - ./startup-backend.sh:/startup-backend.sh # Ensure the paths match command: /startup-backend.sh # Fixed the path + healthcheck: + test: "exit 0" db: image: postgres:15.4 @@ -37,27 +39,35 @@ services: - ./pgadmin:/var/lib/pgadmin queue: - image: redis:7.2.0 + image: redis:6.2.5 ports: - "6379:6379" + healthcheck: + test: "exit 0" celeryworker: # user: your-non-root-user depends_on: - - queue + queue: + condition: service_healthy env_file: - ./celeryworker.env build: context: ../ dockerfile: base.Dockerfile command: celery -A langflow.worker.celery_app worker --loglevel=INFO + healthcheck: + test: "exit 0" flower: # user: your-non-root-user networks: - default depends_on: - - queue + queue: + condition: service_healthy + celeryworker: + condition: service_healthy build: context: ../ dockerfile: base.Dockerfile @@ -75,7 +85,9 @@ services: args: - BACKEND_URL=http://backend:7860 depends_on: - - backend + backend: + condition: service_healthy + env_file: - ./frontend.env ports: diff --git a/deploy/flower.env b/deploy/flower.env index 93e9f6e5d..845de63f5 100644 --- a/deploy/flower.env +++ b/deploy/flower.env @@ -4,3 +4,6 @@ LANGFLOW_REDIS_PORT=6379 LANGFLOW_REDIS_DB=0 LANGFLOW_REDIS_EXPIRE=3600 LANGFLOW_REDIS_PASSWORD= +BROKER_URL=redis://queue:6379/0 +RESULT_BACKEND=redis://queue:6379/0 +C_FORCE_ROOT="true # ! Only for development" \ No newline at end of file diff --git a/deploy/startup-backend.sh b/deploy/startup-backend.sh index cf63444b5..c8a634f65 100755 --- a/deploy/startup-backend.sh +++ b/deploy/startup-backend.sh @@ -3,4 +3,4 @@ export LANGFLOW_DATABASE_URL="postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}" # Your command to start the backend -exec uvicorn --factory langflow.main:create_app --host 0.0.0.0 --port 7860 --reload --log-level ${LOG_LEVEL:-info} +exec python -m uvicorn --factory langflow.main:create_app --host 0.0.0.0 --port 7860 --log-level ${LOG_LEVEL:-info} --workers -1