rmayormartins commited on
Commit
dcffdde
·
1 Parent(s): b3b7541
Files changed (3) hide show
  1. Dockerfile +26 -0
  2. app.py +48 -0
  3. packages.txt +1 -0
Dockerfile ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.9
2
+
3
+ # Instalar Java
4
+ RUN apt-get update && \
5
+ apt-get install -y default-jdk && \
6
+ apt-get clean && \
7
+ rm -rf /var/lib/apt/lists/*
8
+
9
+ # Verificar instalação do Java
10
+ RUN java -version && javac -version
11
+
12
+ # Configurar diretório de trabalho
13
+ WORKDIR /code
14
+
15
+ # Copiar requirements e instalar dependências Python
16
+ COPY ./requirements.txt /code/requirements.txt
17
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
18
+
19
+ # Copiar código da aplicação
20
+ COPY . /code
21
+
22
+ # Expor porta
23
+ EXPOSE 7860
24
+
25
+ # Comando para executar a aplicação
26
+ CMD ["python", "app.py"]
app.py CHANGED
@@ -3,6 +3,37 @@ import os
3
  import subprocess
4
  import time
5
  from collections import deque
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  # Criar pasta para armazenar as classes Java
8
  os.makedirs("combat_classes", exist_ok=True)
@@ -429,6 +460,23 @@ public class Projectile {
429
  """
430
 
431
  def run_battle(code1, code2, screen_width, battlefield_height, p1_start_pos, p2_start_pos, team1_health, team2_health):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  # Caminhos dos arquivos Java
433
  aircraft_path = "combat_classes/Aircraft.java"
434
  projectile_path = "combat_classes/Projectile.java"
 
3
  import subprocess
4
  import time
5
  from collections import deque
6
+ import shutil
7
+
8
+ def check_and_install_java():
9
+ """Verifica se Java está instalado e tenta instalar se necessário"""
10
+ try:
11
+ # Verificar se javac está disponível
12
+ result = subprocess.run(["javac", "-version"], capture_output=True, text=True)
13
+ if result.returncode == 0:
14
+ return True, "Java já está instalado"
15
+ except FileNotFoundError:
16
+ pass
17
+
18
+ try:
19
+ # Tentar instalar Java usando apt-get
20
+ print("🔧 Instalando Java...")
21
+ subprocess.run(["apt-get", "update"], check=True, capture_output=True)
22
+ subprocess.run(["apt-get", "install", "-y", "default-jdk"], check=True, capture_output=True)
23
+
24
+ # Verificar se a instalação funcionou
25
+ result = subprocess.run(["javac", "-version"], capture_output=True, text=True)
26
+ if result.returncode == 0:
27
+ return True, "Java instalado com sucesso"
28
+ except Exception as e:
29
+ pass
30
+
31
+ # Se chegou até aqui, não conseguiu instalar
32
+ return False, "Não foi possível instalar Java automaticamente"
33
+
34
+ # Verificar Java na inicialização
35
+ java_available, java_message = check_and_install_java()
36
+ print(f"Status do Java: {java_message}")
37
 
38
  # Criar pasta para armazenar as classes Java
39
  os.makedirs("combat_classes", exist_ok=True)
 
460
  """
461
 
462
  def run_battle(code1, code2, screen_width, battlefield_height, p1_start_pos, p2_start_pos, team1_health, team2_health):
463
+ # Verificar se Java está disponível
464
+ if not java_available:
465
+ yield f"""
466
+ <div style="padding:20px; background-color:#ffe6e6; border:2px solid #ff4444; border-radius:5px; margin:10px;">
467
+ <h3 style="color:#cc0000;">❌ Java não está disponível</h3>
468
+ <p>Este aplicativo requer Java para compilar e executar as aeronaves.</p>
469
+ <p><strong>Soluções:</strong></p>
470
+ <ul>
471
+ <li>Execute localmente com Java instalado</li>
472
+ <li>Use um ambiente Docker com Java</li>
473
+ <li>Aguarde enquanto tentamos instalar Java automaticamente...</li>
474
+ </ul>
475
+ <p><em>Status: {java_message}</em></p>
476
+ </div>
477
+ """
478
+ return
479
+
480
  # Caminhos dos arquivos Java
481
  aircraft_path = "combat_classes/Aircraft.java"
482
  projectile_path = "combat_classes/Projectile.java"
packages.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ default-jdk