ten / Dockerfile
3v324v23's picture
Полная переработка контейнера с добавлением диагностики и исправлением структуры файлов
9710cde
raw
history blame
4.43 kB
FROM ubuntu:22.04
# Принудительное обновление для HuggingFace, чтобы использовать правильную версию Dockerfile
# Установка необходимых пакетов
RUN apt-get clean && apt-get update && apt-get install -y --no-install-recommends \
libasound2 \
libgstreamer1.0-dev \
libunwind-dev \
libc++1 \
libssl-dev \
python3 \
python3-venv \
python3-pip \
python3-dev \
curl \
wget \
unzip \
git \
build-essential \
jq \
vim \
ca-certificates \
&& apt-get clean && rm -rf /var/lib/apt/lists/* && rm -rf /tmp/*
# Установка Go 1.21
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
ENV PATH=$PATH:/usr/local/go/bin
ENV GOPATH=/go
ENV PATH=$PATH:$GOPATH/bin
# Создаем каталог для кэша Go и устанавливаем правильные разрешения
RUN mkdir -p /go && chmod 777 /go
# Установка Node.js и pnpm
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
apt-get install -y nodejs && \
npm install -g pnpm
# Устанавливаем рабочую директорию
WORKDIR /app
# Клонируем репозиторий TEN-Agent
RUN git clone --depth 1 https://github.com/TEN-framework/TEN-Agent.git /app && \
echo "Доступные ветки и теги:" && \
git branch -a && \
git tag -l
# Устанавливаем task для сборки
RUN go install github.com/go-task/task/v3/cmd/task@latest
# Создаем необходимые директории и устанавливаем права
RUN mkdir -p /app/server/bin && \
mkdir -p /app/agents && \
mkdir -p /tmp/ten_agent && \
mkdir -p /app/.pnpm-store
# Копируем .env файл
COPY .env /app/.env
# Компилируем сервер
RUN cd /app/server && \
go mod tidy && \
go mod download && \
go build -o bin/api main.go && \
chmod +x bin/api
# Установка зависимостей для Playground UI
ENV PNPM_HOME="/app/.pnpm-store"
ENV PATH="$PNPM_HOME:$PATH"
RUN cd /app/playground && \
pnpm install
# Подготавливаем пример агента для работы Select Graph
RUN cd /app && \
mkdir -p agents/examples && \
mkdir -p agents/examples/default && \
mkdir -p agents/examples/demo && \
mkdir -p agents/examples/experimental
# Копируем примеры из репозитория
RUN cd /app && \
cp -r agents/examples/default agents/ && \
cp -r agents/examples/demo agents/ && \
cp -r agents/examples/experimental agents/
# Создаем базовый manifest.json
RUN echo '{\n\
"name": "default",\n\
"agents": [\n\
{\n\
"name": "voice_agent",\n\
"description": "A simple voice agent"\n\
},\n\
{\n\
"name": "chat_agent",\n\
"description": "A text chat agent"\n\
}\n\
]\n\
}' > /app/agents/manifest.json
# Создаем базовый property.json
RUN echo '{\n\
"name": "TEN Agent Example",\n\
"version": "0.0.1",\n\
"extensions": ["openai_chatgpt"],\n\
"description": "A basic voice agent with OpenAI",\n\
"graphs": [\n\
{\n\
"name": "Voice Agent",\n\
"description": "Basic voice agent with OpenAI",\n\
"file": "voice_agent.json"\n\
},\n\
{\n\
"name": "Chat Agent",\n\
"description": "Simple chat agent",\n\
"file": "chat_agent.json"\n\
}\n\
]\n\
}' > /app/agents/property.json
# Создаем простые примеры графов
RUN echo '{\n\
"nodes": [],\n\
"edges": [],\n\
"groups": [],\n\
"templates": [],\n\
"root": null\n\
}' > /app/agents/voice_agent.json
RUN echo '{\n\
"nodes": [],\n\
"edges": [],\n\
"groups": [],\n\
"templates": [],\n\
"root": null\n\
}' > /app/agents/chat_agent.json
# Устанавливаем правильные права доступа для всех файлов
RUN chmod -R 777 /app
# Настраиваем стартовый скрипт
COPY app.py /app/app.py
RUN chmod +x /app/app.py
# Открываем порты
EXPOSE 7860 8080 3000
# Запускаем API сервер и Playground в dev-режиме
ENTRYPOINT ["python3", "/app/app.py"]