FROM buildpack-deps:bookworm ARG SRV_UID="1000" ARG SRV_GID="1000" ARG SRV_VERSION="0" ARG SRV_APT_GET_INSTALL="" ENV SRV_UID="${SRV_UID}" ENV SRV_GID="${SRV_GID}" ENV SRV_VERSION="${SRV_VERSION}" ENV SRV_APT_GET_INSTALL="${SRV_APT_GET_INSTALL}" # Install Debian packages ---------------------------------------------------- ENV DEBIAN_FRONTEND="noninteractive" RUN echo "locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8" > /debconf-preseed.txt \ && echo "locales locales/default_environment_locale select en_US.UTF-8" >> /debconf-preseed.txt \ && debconf-set-selections /debconf-preseed.txt && apt-get update -y \ && apt-get update -y \ && apt-get install -y git zip unzip curl ca-certificates build-essential \ ${SRV_APT_GET_INSTALL} \ && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/log/* /var/cache/* # Install Python ------------------------------------------------------------- WORKDIR /usr/src ENV PYTHON_MAJOR="3" ENV PYTHON_MINOR="10" ENV PYTHON_VERSION="${PYTHON_MAJOR}.${PYTHON_MINOR}.16" ENV PYTHON_DIR="/usr/local/python/${PYTHON_VERSION}" ENV PATH="${PYTHON_DIR}/bin:${PATH}" RUN mkdir -p /usr/src/python && cd /usr/src/python \ && curl -sfSLO https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz \ && tar --strip-components=1 -xzf Python-${PYTHON_VERSION}.tgz -C /usr/src/python \ && rm Python-${PYTHON_VERSION}.tgz \ && ./configure --prefix=${PYTHON_DIR} \ --enable-shared \ --enable-optimizations \ --enable-ipv6 \ LDFLAGS=-Wl,-rpath=${PYTHON_DIR}/lib,--disable-new-dtags \ && make -j $(nproc) \ && make -j $(nproc) altinstall \ && ln -s ${PYTHON_DIR}/bin/python${PYTHON_MAJOR}.${PYTHON_MINOR} ${PYTHON_DIR}/bin/python${PYTHON_MAJOR} \ && ln -s ${PYTHON_DIR}/bin/python${PYTHON_MAJOR} ${PYTHON_DIR}/bin/python \ && ln -s ${PYTHON_DIR}/bin/pip${PYTHON_MAJOR}.${PYTHON_MINOR} ${PYTHON_DIR}/bin/pip \ && cd .. && rm -rf /usr/src/python RUN pip install ollama openai groq anthropic crewai crewai-tools \ composio_crewai COPY ./docker-entrypoint.sh /docker-entrypoint.sh # Install crewai user --------------------------------------------------------- RUN mkdir /home/crewai /opt/rust \ && groupadd -g ${SRV_GID} crewai \ && useradd -s /bin/bash -d /home/crewai -u ${SRV_UID} -g ${SRV_GID} crewai \ && chown ${SRV_UID}.${SRV_GID} /home/crewai /opt/rust \ && rm -rf /tmp/* # Activate crewai user -------------------------------------------------------- USER ${SRV_UID}:${SRV_GID} RUN ln -s /app/.bash_history $HOME/.bash_history \ && ln -s /app/.composio $HOME/.composio VOLUME /app WORKDIR /app # Install rustup -------------------------------------------------------------- ENV RUSTUP_HOME=/opt/rust/rustup ENV CARGO_HOME=/opt/rust/cargo ENV PATH="${PATH}:/opt/rust/cargo/bin" RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain stable --profile default --no-modify-path -y ENTRYPOINT ["/docker-entrypoint.sh"]