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