|
|
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 \ |
|
|
gnupg \ |
|
|
lsb-release \ |
|
|
net-tools \ |
|
|
procps \ |
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/* && rm -rf /tmp/* |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
ENV GOCACHE=/tmp/go-cache |
|
|
RUN mkdir -p /tmp/go-cache && chmod 777 /tmp/go-cache |
|
|
|
|
|
|
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ |
|
|
apt-get install -y nodejs && \ |
|
|
npm install -g pnpm |
|
|
|
|
|
|
|
|
WORKDIR /app |
|
|
RUN git clone --depth 1 https://github.com/TEN-framework/TEN-Agent.git /app-temp && \ |
|
|
mv /app-temp/* /app/ && \ |
|
|
mv /app-temp/.* /app/ 2>/dev/null || true && \ |
|
|
rm -rf /app-temp |
|
|
|
|
|
|
|
|
RUN mkdir -p /tmp/ten_user && chmod 777 /tmp/ten_user |
|
|
RUN mkdir -p /tmp/ten_user/agents && chmod 777 /tmp/ten_user/agents |
|
|
RUN mkdir -p /tmp/ten_user/logs && chmod 777 /tmp/ten_user/logs |
|
|
RUN mkdir -p /tmp/ten_user/rag_data && chmod 777 /tmp/ten_user/rag_data |
|
|
RUN mkdir -p /app/backup && chmod 777 /app/backup |
|
|
|
|
|
|
|
|
RUN mkdir -p /app/server/bin && \ |
|
|
cd /app/server && \ |
|
|
GOCACHE=/tmp/go-cache go build -o bin/api main.go && \ |
|
|
chmod +x bin/api |
|
|
|
|
|
|
|
|
RUN ls -la /app/server/bin/api || echo "API server not compiled" |
|
|
|
|
|
|
|
|
|
|
|
RUN cd /app/playground && pnpm install |
|
|
|
|
|
|
|
|
RUN cd /app/playground && pnpm build || echo "Failed to build playground, but continuing" |
|
|
|
|
|
|
|
|
COPY fallback.py /app/fallback.py |
|
|
COPY api_wrapper.py /app/api_wrapper.py |
|
|
COPY start.sh /app/start.sh |
|
|
RUN chmod +x /app/start.sh /app/fallback.py /app/api_wrapper.py |
|
|
|
|
|
|
|
|
ENV HF_SPACE=true |
|
|
ENV AGENT_SERVER_URL=http://localhost:8080 |
|
|
ENV NEXT_PUBLIC_EDIT_GRAPH_MODE=true |
|
|
ENV NEXT_PUBLIC_DISABLE_CAMERA=true |
|
|
ENV PORT=7860 |
|
|
ENV API_PORT=8080 |
|
|
ENV TEN_AGENT_DIR=/tmp/ten_user/agents |
|
|
ENV PYTHONUNBUFFERED=1 |
|
|
|
|
|
|
|
|
EXPOSE 7860 8080 |
|
|
|
|
|
|
|
|
RUN mkdir -p /app/agents |
|
|
RUN echo '{"_ten":{"version":"0.0.1"},"name":"default","agents":[{"name":"voice_agent","description":"A simple voice agent","type":"voice"}]}' > /app/agents/manifest.json |
|
|
RUN echo '{"name":"TEN Agent Example","version":"0.0.1","extensions":["openai_chatgpt"],"description":"A basic voice agent with OpenAI","graphs":[{"name":"Voice Agent","description":"Basic voice agent with OpenAI","file":"voice_agent.json"}]}' > /app/agents/property.json |
|
|
|
|
|
|
|
|
CMD ["/app/start.sh"] |
|
|
|