|
FROM ubuntu:22.04 |
|
|
|
|
|
|
|
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/* |
|
|
|
|
|
RUN pip3 install requests |
|
|
|
|
|
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 |
|
|
|
|
|
RUN mkdir -p /go && chmod 777 /go |
|
|
|
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ |
|
apt-get install -y nodejs && \ |
|
npm install -g pnpm |
|
|
|
|
|
RUN useradd -m -u 1000 -s /bin/bash tenuser |
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
RUN git clone --depth 1 https://github.com/TEN-framework/TEN-Agent.git /app && \ |
|
echo "Доступные ветки и теги:" && \ |
|
git branch -a && \ |
|
git tag -l |
|
|
|
|
|
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 |
|
|
|
|
|
COPY .env /app/.env |
|
RUN chown tenuser:tenuser /app/.env |
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
|
ENV PNPM_HOME="/app/.pnpm-store" |
|
ENV PATH="$PNPM_HOME:$PATH" |
|
RUN cd /app/playground && \ |
|
pnpm install |
|
|
|
|
|
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 |
|
|
|
|
|
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 |
|
|
|
|
|
USER tenuser |
|
|
|
|
|
EXPOSE 7860 8080 3000 9090 |
|
|
|
|
|
ENTRYPOINT ["python3", "/app/app.py"] |
|
|