Cauanne commited on
Commit
d875eee
·
verified ·
1 Parent(s): ea2ac1c

Upload 5 files

Browse files
Files changed (2) hide show
  1. Dockerfile +19 -15
  2. appp.py +11 -10
Dockerfile CHANGED
@@ -1,24 +1,28 @@
1
- # Usa uma imagem oficial do Python com suporte a navegadores
2
  FROM mcr.microsoft.com/playwright/python:v1.40.0-jammy
3
 
4
- # Define o diretório de trabalho
5
- WORKDIR /app
 
 
 
6
 
7
- # Copia os arquivos de dependências primeiro para aproveitar o cache do Docker
8
- COPY requirements.txt .
 
 
9
 
10
- # Instala as dependências do Python
11
- RUN pip install --no-cache-dir -r requirements.txt
12
 
13
- # Copia o restante dos arquivos do projeto
14
- COPY . .
15
 
16
- # O Railway define a porta automaticamente na variável de ambiente PORT
17
- # O comando abaixo garante que o Playwright instale apenas o Chromium necessário
18
  RUN playwright install chromium
19
 
20
- # Comando para rodar a aplicação
21
- # Usamos gunicorn para maior estabilidade em produção, mas mantemos o python appp.py
22
- # para garantir que o SocketIO funcione conforme configurado originalmente.
23
- CMD ["python", "appp.py"]
24
  EXPOSE 7860
 
 
 
 
1
+ # Usa a imagem oficial do Playwright que já vem com todas as dependências de sistema
2
  FROM mcr.microsoft.com/playwright/python:v1.40.0-jammy
3
 
4
+ # Define variáveis de ambiente para o Hugging Face
5
+ ENV PYTHONUNBUFFERED=1 \
6
+ PORT=7860 \
7
+ HOME=/home/user \
8
+ PATH=/home/user/.local/bin:$PATH
9
 
10
+ # Cria um usuário não-root (exigência de segurança do Hugging Face)
11
+ RUN useradd -m -u 1000 user
12
+ USER user
13
+ WORKDIR $HOME/app
14
 
15
+ # Copia os arquivos e define as permissões
16
+ COPY --chown=user . .
17
 
18
+ # Instala as dependências do Python
19
+ RUN pip install --no-cache-dir --user -r requirements.txt
20
 
21
+ # Instala o navegador Chromium (apenas o necessário)
 
22
  RUN playwright install chromium
23
 
24
+ # Expõe a porta padrão do Hugging Face
 
 
 
25
  EXPOSE 7860
26
+
27
+ # Comando para rodar a aplicação garantindo que o host seja 0.0.0.0
28
+ CMD ["python", "appp.py"]
appp.py CHANGED
@@ -495,13 +495,14 @@ def download_results():
495
  return send_file(buffer, mimetype='text/plain', as_attachment=True, download_name='lives.txt')
496
 
497
  if __name__ == '__main__':
498
- print("\n" + "="*70)
499
- print("PAYT CHECKER V6.0 - CORRIGIDO: Dados aleatórios e únicos por cartão")
500
- print("="*70)
501
- print("✓ CPF: único global (nunca repete, mesmo entre threads)")
502
- print("✓ Nomes, e-mails, telefones: gerados com seed isolada por thread")
503
- print("✓ Thread-safe: cada thread tem seu próprio gerador aleatório")
504
- print("✓ Servidor iniciando em http://localhost:5000")
505
- print("="*70 + "\n")
506
- port = int(os.environ.get("PORT", 7860))
507
- socketio.run(app, host='0.0.0.0', port=port, debug=False, allow_unsafe_werkzeug=True)
 
 
495
  return send_file(buffer, mimetype='text/plain', as_attachment=True, download_name='lives.txt')
496
 
497
  if __name__ == '__main__':
498
+ try:
499
+ print("\n" + "="*70)
500
+ print("PAYT CHECKER V6.0 - HUGGING FACE EDITION")
501
+ print("="*70)
502
+ port = int(os.environ.get("PORT", 7860))
503
+ print(f"✓ Iniciando servidor na porta: {port}")
504
+ print("✓ Host: 0.0.0.0")
505
+ print("="*70 + "\n")
506
+ socketio.run(app, host='0.0.0.0', port=port, debug=False, allow_unsafe_werkzeug=True)
507
+ except Exception as e:
508
+ print(f"ERRO CRÍTICO AO INICIAR: {str(e)}")