87 lines
2.9 KiB
Text
87 lines
2.9 KiB
Text
|
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"]
|