File size: 2,933 Bytes
60c2f18
 
dbc3350
 
 
 
 
 
 
 
2839144
 
 
 
 
eae7567
2839144
58cec34
2839144
594536a
2839144
 
58cec34
60c2f18
 
dbc3350
c8259c0
 
87337b1
dbc3350
20ad26e
c8259c0
87337b1
c8259c0
9f18430
 
cb145d6
 
 
 
9f18430
86f3bf2
3c7d3b0
 
 
dbc3350
60c2f18
dbc3350
 
cb145d6
20ad26e
cb145d6
 
 
 
 
 
 
 
 
 
 
 
dbc3350
20ad26e
 
 
50c3ed9
20ad26e
 
 
50c3ed9
 
dbc3350
50c3ed9
 
dbc3350
20ad26e
 
dbc3350
20ad26e
dbc3350
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
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 \
    && 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

# Создание пользовательских директорий для временных файлов
RUN mkdir -p /tmp/ten_user && chmod 777 /tmp/ten_user
RUN mkdir -p /app/fallback && chmod 777 /app/fallback

# Компиляция API сервера
RUN mkdir -p /app/server/bin && \
    cd /app/server && \
    GOCACHE=/tmp/go-cache go build -o bin/api main.go && \
    chmod +x bin/api && \
    cp bin/api /app/fallback/api && \
    chmod 777 /app/fallback/api

# Проверяем, что API сервер скомпилирован
RUN ls -la /app/server/bin/api /app/fallback/api

# Создание .env файла из окружения Hugging Face Space
# Используем простой формат без пробелов для предотвращения ошибок
RUN echo "AGORA_APP_ID=${AGORA_APP_ID}\nAGORA_APP_CERTIFICATE=${AGORA_APP_CERTIFICATE}\nAZURE_STT_KEY=${AZURE_STT_KEY}\nAZURE_STT_REGION=${AZURE_STT_REGION}\nAZURE_TTS_KEY=${AZURE_TTS_KEY}\nAZURE_TTS_REGION=${AZURE_TTS_REGION}\nOPENAI_API_KEY=${OPENAI_API_KEY}" > /app/.env

# Предварительная установка зависимостей для playground
# Делаем это отдельно, чтобы не пересобирать при каждом изменении
RUN cd /app/playground && pnpm install

# Копируем стартовые скрипты
COPY start.sh /app/start.sh
COPY fallback.py /app/fallback.py
RUN chmod +x /app/start.sh /app/fallback.py

# Открываем порты (7860 для HF Space, 8080 для API)
EXPOSE 7860 8080

# Запускаем TEN-Agent через fallback скрипт
CMD ["/app/start.sh"]