File size: 5,864 Bytes
cc37d72 60c2f18 623538d cc37d72 eae7567 62ab417 cc37d72 623538d cc37d72 623538d cc37d72 f56bbc4 623538d cc37d72 9f18430 623538d cb145d6 cc37d72 62ab417 82f851a 623538d cc37d72 623538d cc37d72 623538d 82f851a 9006d1c 82f851a 623538d 82f851a 9006d1c 623538d 9006d1c 623538d 9006d1c 623538d 9006d1c 623538d cc37d72 cb145d6 623538d 82f851a 623538d 82f851a 623538d f56bbc4 623538d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
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/*
# Установка Python-пакетов
RUN pip3 install requests
# Установка 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
# Создаем пользователя tenuser с правильными правами
RUN useradd -m -u 1000 -s /bin/bash tenuser
# Устанавливаем рабочую директорию
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 && \
mkdir -p /app/backup && \
mkdir -p /app/mock-api && \
chown -R tenuser:tenuser /app && \
chown -R tenuser:tenuser /tmp/ten_agent
# Копируем .env файл
COPY .env /app/.env
RUN chown tenuser:tenuser /app/.env
# Создаем файл для мок-API дизайнера
RUN echo '{\n "success": true,\n "packages": [\n {\n "name": "default",\n "description": "Default package",\n "graphs": [\n {\n "name": "Voice Agent",\n "description": "Voice Agent with OpenAI",\n "file": "voice_agent.json",\n "id": "voice_agent",\n "package": "default"\n },\n {\n "name": "Chat Agent",\n "description": "Chat Agent",\n "file": "chat_agent.json",\n "id": "chat_agent",\n "package": "default"\n }\n ]\n }\n ]\n}' > /app/mock-api/designer-packages.json
# Настраиваем прокси-правила в Next.js для перенаправления запросов к дизайнеру на обычный API
RUN echo 'module.exports = { \
async rewrites() { \
return [ \
{ \
source: "/api/designer/:path*", \
destination: "http://localhost:8080/api/agents/:path*", \
}, \
{ \
source: "/api/dev/:path*", \
destination: "http://localhost:8080/api/agents/:path*", \
}, \
]; \
}, \
};' > /app/playground/next.config.js
# Компилируем сервер
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
# Создаем базовый 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 в формате TEN
RUN echo '{\n\
"_ten": {},\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 && \
find /app -type d -exec chmod 777 {} \; && \
find /app -type f -exec chmod 666 {} \; && \
chmod +x /app/server/bin/api
# Настраиваем стартовый скрипт
COPY app.py /app/app.py
RUN chmod +x /app/app.py && \
chown tenuser:tenuser /app/app.py
# Переключаемся на пользователя tenuser
USER tenuser
# Открываем порты
EXPOSE 7860 8080 3000 9090
# Запускаем API сервер и Playground в dev-режиме
ENTRYPOINT ["python3", "/app/app.py"]
|