crewai/Dockerfile
Torsten Raudssus 02365a6379 First version
2024-12-13 06:33:32 +01:00

86 lines
2.9 KiB
Docker

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"]