ten / Dockerfile
3v324v23's picture
Улучшение работы TEN-Agent на HuggingFace Space
cc37d72
raw
history blame
3.96 kB
FROM ubuntu:22.04
# Установка базовых пакетов
RUN apt-get update && apt-get install -y \
curl \
git \
wget \
make \
gcc \
build-essential \
libasound2 \
libgstreamer1.0-dev \
libunwind-dev \
libc++1 \
libssl-dev \
python3 \
python3-venv \
python3-pip \
python3-dev \
unzip \
jq \
vim \
ca-certificates \
gnupg \
lsb-release \
net-tools \
procps \
&& apt-get clean && rm -rf /var/lib/apt/lists/* && rm -rf /tmp/*
# Установка Go
RUN wget https://golang.org/dl/go1.21.0.linux-amd64.tar.gz && \
tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz && \
rm go1.21.0.linux-amd64.tar.gz
# Настройка окружения Go
ENV PATH=$PATH:/usr/local/go/bin
ENV GOPATH=/go
ENV PATH=$PATH:$GOPATH/bin
RUN mkdir -p /go && chmod 777 /go
# Создание директории для кэша Go
ENV GOCACHE=/tmp/go-cache
RUN mkdir -p /tmp/go-cache && chmod 777 /tmp/go-cache
# Установка Node.js и pnpm
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs && \
npm install -g pnpm
# Клонирование репозитория TEN-Agent
WORKDIR /app
RUN git clone --depth 1 https://github.com/TEN-framework/TEN-Agent.git /app-temp && \
mv /app-temp/* /app/ && \
mv /app-temp/.* /app/ 2>/dev/null || true && \
rm -rf /app-temp
# Создание пользовательских директорий для временных файлов
RUN mkdir -p /tmp/ten_user && chmod 777 /tmp/ten_user
RUN mkdir -p /tmp/ten_user/agents && chmod 777 /tmp/ten_user/agents
RUN mkdir -p /tmp/ten_user/logs && chmod 777 /tmp/ten_user/logs
RUN mkdir -p /tmp/ten_user/rag_data && chmod 777 /tmp/ten_user/rag_data
RUN mkdir -p /app/backup && chmod 777 /app/backup
# Компиляция API сервера (для справки, мы будем использовать Python-реализацию)
RUN mkdir -p /app/server/bin && \
cd /app/server && \
GOCACHE=/tmp/go-cache go build -o bin/api main.go && \
chmod +x bin/api
# Проверяем, что API сервер скомпилирован
RUN ls -la /app/server/bin/api || echo "API server not compiled"
# Предварительная установка зависимостей для playground
# Делаем это отдельно, чтобы не пересобирать при каждом изменении
RUN cd /app/playground && pnpm install
# Запускаем playground один раз для предварительной сборки
RUN cd /app/playground && pnpm build || echo "Failed to build playground, but continuing"
# Копируем наши скрипты
COPY fallback.py /app/fallback.py
COPY api_wrapper.py /app/api_wrapper.py
COPY start.sh /app/start.sh
RUN chmod +x /app/start.sh /app/fallback.py /app/api_wrapper.py
# Устанавливаем переменные окружения для HuggingFace
ENV HF_SPACE=true
ENV AGENT_SERVER_URL=http://localhost:8080
ENV NEXT_PUBLIC_EDIT_GRAPH_MODE=true
ENV NEXT_PUBLIC_DISABLE_CAMERA=true
ENV PORT=7860
ENV API_PORT=8080
ENV TEN_AGENT_DIR=/tmp/ten_user/agents
ENV PYTHONUNBUFFERED=1
# Открываем порты (7860 для HF Space, 8080 для API)
EXPOSE 7860 8080
# Предварительно создаем важные файлы
RUN mkdir -p /app/agents
RUN echo '{"_ten":{"version":"0.0.1"},"name":"default","agents":[{"name":"voice_agent","description":"A simple voice agent","type":"voice"}]}' > /app/agents/manifest.json
RUN echo '{"name":"TEN Agent Example","version":"0.0.1","extensions":["openai_chatgpt"],"description":"A basic voice agent with OpenAI","graphs":[{"name":"Voice Agent","description":"Basic voice agent with OpenAI","file":"voice_agent.json"}]}' > /app/agents/property.json
# Запускаем TEN-Agent через fallback скрипт
CMD ["/app/start.sh"]