* chore: Update docker-build.yml to disable pre-release by default
* chore: Update Dockerfiles to set LANGFLOW_HOST and LANGFLOW_PORT
The Dockerfiles have been updated to set the environment variables LANGFLOW_HOST and LANGFLOW_PORT. This ensures that the correct host and port are used when running the langflow application.
* 🔧 (build_and_push_backend.Dockerfile): remove unnecessary host and port configuration to simplify the Dockerfile and focus on backend-only functionality
* chore: Update LANGFLOW_CONFIG_DIR in docker-compose.yml
The LANGFLOW_CONFIG_DIR environment variable in docker-compose.yml has been updated to /app/langflow. This change ensures that the correct directory is used for storing logs, file storage, monitor data, and secret keys.
99 lines
No EOL
3.5 KiB
Docker
99 lines
No EOL
3.5 KiB
Docker
# syntax=docker/dockerfile:1
|
|
# Keep this syntax directive! It's used to enable Docker BuildKit
|
|
|
|
|
|
################################
|
|
# BUILDER-BASE
|
|
# Used to build deps + create our virtual environment
|
|
################################
|
|
|
|
# 1. use python:3.12.3-slim as the base image until https://github.com/pydantic/pydantic-core/issues/1292 gets resolved
|
|
# 2. do not add --platform=$BUILDPLATFORM because the pydantic binaries must be resolved for the final architecture
|
|
FROM python:3.12.3-slim as builder-base
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
\
|
|
# pip
|
|
PIP_DISABLE_PIP_VERSION_CHECK=on \
|
|
PIP_DEFAULT_TIMEOUT=100 \
|
|
\
|
|
# poetry
|
|
# https://python-poetry.org/docs/configuration/#using-environment-variables
|
|
POETRY_VERSION=1.8.2 \
|
|
# make poetry install to this location
|
|
POETRY_HOME="/opt/poetry" \
|
|
# make poetry create the virtual environment in the project's root
|
|
# it gets named `.venv`
|
|
POETRY_VIRTUALENVS_IN_PROJECT=true \
|
|
# do not ask any interactive question
|
|
POETRY_NO_INTERACTION=1 \
|
|
\
|
|
# paths
|
|
# this is where our requirements + virtual environment will live
|
|
PYSETUP_PATH="/opt/pysetup" \
|
|
VENV_PATH="/opt/pysetup/.venv"
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install --no-install-recommends -y \
|
|
# deps for installing poetry
|
|
curl \
|
|
# deps for building python deps
|
|
build-essential npm \
|
|
# gcc
|
|
gcc \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN --mount=type=cache,target=/root/.cache \
|
|
curl -sSL https://install.python-poetry.org | python3 -
|
|
|
|
WORKDIR /app
|
|
COPY pyproject.toml poetry.lock README.md ./
|
|
COPY src/ ./src
|
|
COPY scripts/ ./scripts
|
|
RUN python -m pip install requests --user && cd ./scripts && python update_dependencies.py
|
|
|
|
# 1. Install the dependencies using the current poetry.lock file to create reproducible builds
|
|
# 2. Do not install dev dependencies
|
|
# 3. Install all the extras to ensure all optionals are installed as well
|
|
# 4. --sync to ensure nothing else is in the environment
|
|
# 5. Build the wheel and install "langflow" package (mainly for version)
|
|
|
|
# Note: moving to build and installing the wheel will make the docker images not reproducible.
|
|
RUN $POETRY_HOME/bin/poetry lock --no-update \
|
|
# install current lock file with fixed dependencies versions \
|
|
# do not install dev dependencies \
|
|
&& $POETRY_HOME/bin/poetry install --without dev --sync -E deploy -E couchbase -E cassio \
|
|
&& $POETRY_HOME/bin/poetry build -f wheel \
|
|
&& $POETRY_HOME/bin/poetry run pip install dist/*.whl
|
|
|
|
################################
|
|
# RUNTIME
|
|
# Setup user, utilities and copy the virtual environment only
|
|
################################
|
|
# 1. use python:3.12.3-slim as the base image until https://github.com/pydantic/pydantic-core/issues/1292 gets resolved
|
|
FROM python:3.12.3-slim as runtime
|
|
|
|
RUN apt-get -y update \
|
|
&& apt-get install --no-install-recommends -y \
|
|
curl \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
LABEL org.opencontainers.image.title=langflow
|
|
LABEL org.opencontainers.image.authors=['Langflow']
|
|
LABEL org.opencontainers.image.licenses=MIT
|
|
LABEL org.opencontainers.image.url=https://github.com/langflow-ai/langflow
|
|
LABEL org.opencontainers.image.source=https://github.com/langflow-ai/langflow
|
|
|
|
RUN useradd user -u 1000 -g 0 --no-create-home --home-dir /app/data
|
|
COPY --from=builder-base --chown=1000 /app/.venv /app/.venv
|
|
ENV PATH="/app/.venv/bin:${PATH}"
|
|
|
|
USER user
|
|
WORKDIR /app
|
|
|
|
ENV LANGFLOW_HOST=0.0.0.0
|
|
ENV LANGFLOW_PORT=7860
|
|
|
|
ENTRYPOINT ["python", "-m", "langflow", "run"] |