Melhorias de Inicialização do Serviço Docker
This commit is contained in:
commit
1f40b128fa
@ -1,8 +1,9 @@
|
|||||||
# Usar uma imagem oficial do Python como base
|
# Usar uma imagem oficial do Python como base
|
||||||
FROM python:3.10-slim
|
FROM python:3.10-slim
|
||||||
|
|
||||||
# Instalar dependências do sistema
|
# Instalar dependências do sistema, incluindo redis-tools
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
redis-tools \
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Definir o diretório de trabalho
|
# Definir o diretório de trabalho
|
||||||
@ -22,10 +23,14 @@ RUN mkdir -p /app/static
|
|||||||
COPY static/ /app/static/
|
COPY static/ /app/static/
|
||||||
|
|
||||||
# Garantir permissões de execução ao script inicial
|
# Garantir permissões de execução ao script inicial
|
||||||
|
COPY start.sh .
|
||||||
RUN chmod +x start.sh
|
RUN chmod +x start.sh
|
||||||
|
|
||||||
|
# Converter possíveis caracteres de retorno de carro do Windows
|
||||||
|
RUN apt-get update && apt-get install -y dos2unix && dos2unix start.sh && apt-get remove -y dos2unix && apt-get autoremove -y && apt-get clean
|
||||||
|
|
||||||
# Expor as portas usadas pela aplicação
|
# Expor as portas usadas pela aplicação
|
||||||
EXPOSE 8005 8501
|
EXPOSE 8005 8501
|
||||||
|
|
||||||
# Definir o comando inicial
|
# Definir o comando inicial
|
||||||
CMD ["./start.sh"]
|
CMD ["/bin/bash", "/app/start.sh"]
|
@ -4,7 +4,7 @@ services:
|
|||||||
tcaudio:
|
tcaudio:
|
||||||
image: impacteai/transcrevezap:latest
|
image: impacteai/transcrevezap:latest
|
||||||
networks:
|
networks:
|
||||||
- transcrevezap_network
|
- sua_rede_externa # Substitua pelo nome da sua rede externa
|
||||||
ports:
|
ports:
|
||||||
- 8005:8005 # Porta para FastAPI
|
- 8005:8005 # Porta para FastAPI
|
||||||
- 8501:8501 # Porta para Streamlit
|
- 8501:8501 # Porta para Streamlit
|
||||||
@ -13,12 +13,13 @@ services:
|
|||||||
- UVICORN_HOST=0.0.0.0
|
- UVICORN_HOST=0.0.0.0
|
||||||
- UVICORN_RELOAD=true
|
- UVICORN_RELOAD=true
|
||||||
- UVICORN_WORKERS=1
|
- UVICORN_WORKERS=1
|
||||||
|
- API_DOMAIN=seu.dominio.com #coloque seu subdominio da API apontado aqui
|
||||||
- DEBUG_MODE=false
|
- DEBUG_MODE=false
|
||||||
- LOG_LEVEL=INFO
|
- LOG_LEVEL=INFO
|
||||||
- MANAGER_USER=seu_usuario_admin
|
- MANAGER_USER=seu_usuario_admin # Defina Usuário do Manager
|
||||||
- MANAGER_PASSWORD=sua_senha_segura
|
- MANAGER_PASSWORD=sua_senha_segura # Defina Senha do Manager
|
||||||
- REDIS_HOST=redis-transcrevezap
|
- REDIS_HOST=redis-transcrevezap
|
||||||
- REDIS_PORT=6380
|
- REDIS_PORT=6380 # Porta personalizada para o Redis do TranscreveZAP
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis-transcrevezap
|
- redis-transcrevezap
|
||||||
deploy:
|
deploy:
|
||||||
@ -29,7 +30,7 @@ services:
|
|||||||
- node.role == manager
|
- node.role == manager
|
||||||
labels:
|
labels:
|
||||||
- traefik.enable=true
|
- traefik.enable=true
|
||||||
- traefik.http.routers.tcaudio.rule=Host(`seu.dominio.com`)
|
- traefik.http.routers.tcaudio.rule=Host(`seu.dominio.com`) #coloque seu subdominio da API apontado aqui
|
||||||
- traefik.http.routers.tcaudio.entrypoints=websecure
|
- traefik.http.routers.tcaudio.entrypoints=websecure
|
||||||
- traefik.http.routers.tcaudio.tls.certresolver=letsencryptresolver
|
- traefik.http.routers.tcaudio.tls.certresolver=letsencryptresolver
|
||||||
- traefik.http.services.tcaudio.loadbalancer.server.port=8005
|
- traefik.http.services.tcaudio.loadbalancer.server.port=8005
|
||||||
@ -38,7 +39,7 @@ services:
|
|||||||
- traefik.http.middlewares.traefik-compress.compress=true
|
- traefik.http.middlewares.traefik-compress.compress=true
|
||||||
- traefik.http.routers.tcaudio.middlewares=traefik-compress
|
- traefik.http.routers.tcaudio.middlewares=traefik-compress
|
||||||
# Configuração do Streamlit
|
# Configuração do Streamlit
|
||||||
- traefik.http.routers.tcaudio-manager.rule=Host(`manager.seu.dominio.com`)
|
- traefik.http.routers.tcaudio-manager.rule=Host(`manager.seu.dominio.com`) #coloque seu subdominio do Manager apontado aqui
|
||||||
- traefik.http.routers.tcaudio-manager.entrypoints=websecure
|
- traefik.http.routers.tcaudio-manager.entrypoints=websecure
|
||||||
- traefik.http.routers.tcaudio-manager.tls.certresolver=letsencryptresolver
|
- traefik.http.routers.tcaudio-manager.tls.certresolver=letsencryptresolver
|
||||||
- traefik.http.services.tcaudio-manager.loadbalancer.server.port=8501
|
- traefik.http.services.tcaudio-manager.loadbalancer.server.port=8501
|
||||||
@ -51,10 +52,10 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- redis_transcrevezap_data:/data
|
- redis_transcrevezap_data:/data
|
||||||
networks:
|
networks:
|
||||||
- transcrevezap_network
|
- sua_rede_externa # Substitua pelo nome da sua rede externa
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
transcrevezap_network:
|
sua_rede_externa: # Substitua pelo nome da sua rede externa
|
||||||
external: true
|
external: true
|
||||||
name: sua_rede_externa # Substitua pelo nome da sua rede externa
|
name: sua_rede_externa # Substitua pelo nome da sua rede externa
|
||||||
|
|
||||||
|
5
main.py
5
main.py
@ -14,7 +14,10 @@ import os
|
|||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
storage = StorageHandler()
|
storage = StorageHandler()
|
||||||
|
@app.on_event("startup")
|
||||||
|
async def startup_event():
|
||||||
|
api_domain = os.getenv("API_DOMAIN", "seu.dominio.com")
|
||||||
|
redis_client.set("API_DOMAIN", api_domain)
|
||||||
# Função para buscar configurações do Redis com fallback para valores padrão
|
# Função para buscar configurações do Redis com fallback para valores padrão
|
||||||
def get_config(key, default=None):
|
def get_config(key, default=None):
|
||||||
try:
|
try:
|
||||||
|
18
manager.py
18
manager.py
@ -209,6 +209,24 @@ def show_statistics():
|
|||||||
st.plotly_chart(fig, use_container_width=True)
|
st.plotly_chart(fig, use_container_width=True)
|
||||||
else:
|
else:
|
||||||
st.info("Ainda não há dados de processamento disponíveis.")
|
st.info("Ainda não há dados de processamento disponíveis.")
|
||||||
|
|
||||||
|
# Adicionar informações sobre o endpoint da API
|
||||||
|
st.subheader("Endpoint da API")
|
||||||
|
api_domain = get_from_redis("API_DOMAIN", "seu.dominio.com")
|
||||||
|
api_endpoint = f"https://{api_domain}/transcreve-audios"
|
||||||
|
st.code(api_endpoint, language="text")
|
||||||
|
|
||||||
|
if st.button("ℹ️ Instruções de Uso"):
|
||||||
|
st.info(
|
||||||
|
"Para utilizar o serviço de transcrição, siga estas etapas:\n\n"
|
||||||
|
"1. Copie a URL completa acima.\n"
|
||||||
|
"2. Na configuração de webhook da Evolution API:\n"
|
||||||
|
" - Cole a URL no campo apropriado.\n"
|
||||||
|
" - Ative o webhook.\n"
|
||||||
|
" - Marque as opções 'Webhook Base64' e o Evento 'MESSAGES_UPSERT'.\n\n"
|
||||||
|
"Isso permitirá que a Evolution API envie as mensagens de áudio para o nosso serviço de transcrição."
|
||||||
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Erro ao carregar estatísticas: {e}")
|
st.error(f"Erro ao carregar estatísticas: {e}")
|
||||||
|
|
||||||
|
11
readme.md
11
readme.md
@ -41,6 +41,7 @@ Antes de começar, certifique-se de ter os seguintes requisitos:
|
|||||||
environment:
|
environment:
|
||||||
- REDIS_HOST=redis
|
- REDIS_HOST=redis
|
||||||
- REDIS_PORT=6380
|
- REDIS_PORT=6380
|
||||||
|
- API_DOMAIN=seu-ip
|
||||||
- MANAGER_USER=admin
|
- MANAGER_USER=admin
|
||||||
- MANAGER_PASSWORD=sua_senha_aqui
|
- MANAGER_PASSWORD=sua_senha_aqui
|
||||||
depends_on:
|
depends_on:
|
||||||
@ -67,11 +68,10 @@ Acesse a interface de gerenciamento em http://seu-ip:8501.
|
|||||||
Faça login com as credenciais definidas em MANAGER_USER e MANAGER_PASSWORD.
|
Faça login com as credenciais definidas em MANAGER_USER e MANAGER_PASSWORD.
|
||||||
Na seção "Configurações", defina:
|
Na seção "Configurações", defina:
|
||||||
|
|
||||||
GROQ_API_KEY: Sua chave da API GROQ
|
1. GROQ_API_KEY: Sua chave da API GROQ
|
||||||
BUSINESS_MESSAGE: Mensagem de rodapé após transcrição
|
2. BUSINESS_MESSAGE: Mensagem de rodapé após transcrição
|
||||||
PROCESS_GROUP_MESSAGES: Habilitar processamento de mensagens em grupos
|
3. PROCESS_GROUP_MESSAGES: Habilitar processamento de mensagens em grupos
|
||||||
PROCESS_SELF_MESSAGES: Habilitar processamento de mensagens próprias
|
4. PROCESS_SELF_MESSAGES: Habilitar processamento de mensagens próprias
|
||||||
|
|
||||||
|
|
||||||
## 🔧 Uso
|
## 🔧 Uso
|
||||||
Endpoint para Webhook da Evolution API
|
Endpoint para Webhook da Evolution API
|
||||||
@ -144,6 +144,7 @@ services:
|
|||||||
- UVICORN_HOST=0.0.0.0
|
- UVICORN_HOST=0.0.0.0
|
||||||
- UVICORN_RELOAD=true
|
- UVICORN_RELOAD=true
|
||||||
- UVICORN_WORKERS=1
|
- UVICORN_WORKERS=1
|
||||||
|
- API_DOMAIN=seu.dominio.com
|
||||||
- DEBUG_MODE=false
|
- DEBUG_MODE=false
|
||||||
- LOG_LEVEL=INFO
|
- LOG_LEVEL=INFO
|
||||||
- MANAGER_USER=seu_usuario_admin
|
- MANAGER_USER=seu_usuario_admin
|
||||||
|
8
start.sh
8
start.sh
@ -7,8 +7,16 @@ initialize_redis_config() {
|
|||||||
redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_GROUP_MESSAGES "false"
|
redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_GROUP_MESSAGES "false"
|
||||||
redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_SELF_MESSAGES "true"
|
redis-cli -h $REDIS_HOST -p $REDIS_PORT SET PROCESS_SELF_MESSAGES "true"
|
||||||
redis-cli -h $REDIS_HOST -p $REDIS_PORT SET DEBUG_MODE "false"
|
redis-cli -h $REDIS_HOST -p $REDIS_PORT SET DEBUG_MODE "false"
|
||||||
|
redis-cli -h $REDIS_HOST -p $REDIS_PORT SET API_DOMAIN "$API_DOMAIN"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Aguardar o Redis estar pronto
|
||||||
|
echo "Aguardando o Redis ficar disponível..."
|
||||||
|
until redis-cli -h $REDIS_HOST -p $REDIS_PORT PING; do
|
||||||
|
echo "Redis não está pronto - aguardando..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
# Inicializar configurações no Redis
|
# Inicializar configurações no Redis
|
||||||
initialize_redis_config
|
initialize_redis_config
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user