akra35567 commited on
Commit
3057bbb
·
verified ·
1 Parent(s): 102cbdc

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +120 -76
Dockerfile CHANGED
@@ -1,142 +1,186 @@
1
  # ================================
2
- # SoftEdge Corporation — HF Spaces
3
- # PHP 8.3 + Apache (ESTÁVEL)
4
  # ================================
5
- FROM php:8.3-apache
6
 
7
  # ----------------
8
- # VARIÁVEIS
9
  # ----------------
10
  ENV PORT=7860
11
- ENV APACHE_RUN_USER=www-data
12
- ENV APACHE_RUN_GROUP=www-data
13
- ENV APACHE_LOG_DIR=/var/log/apache2
14
 
15
  # ----------------
16
- # DEPENDÊNCIAS DO SISTEMA
17
  # ----------------
18
  RUN apt-get update && apt-get install -y --no-install-recommends \
19
- libpng-dev \
20
- libjpeg-dev \
21
- libfreetype6-dev \
22
- libzip-dev \
23
- libicu-dev \
24
- libxml2-dev \
25
- libcurl4-openssl-dev \
26
- libonig-dev \
27
- sqlite3 \
28
- libsqlite3-dev \
29
- git \
 
 
 
 
 
 
 
30
  curl \
31
- cron \
 
 
32
  unzip \
33
  ca-certificates \
 
34
  && rm -rf /var/lib/apt/lists/*
35
 
36
  # ----------------
37
- # EXTENSÕES PHP (CONTROLADAS)
38
  # ----------------
39
- RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
40
- && docker-php-ext-install \
41
- mbstring \
42
- exif \
43
- bcmath \
44
- intl \
45
- zip \
46
- gd \
47
- mysqli \
48
- pdo \
49
- pdo_mysql \
50
- pdo_sqlite \
51
- && docker-php-ext-enable \
52
- mbstring exif bcmath intl zip gd mysqli pdo_mysql pdo_sqlite
53
-
54
- # 🔥 LIMPEZA DE INIs DUPLICADOS (CRÍTICO)
55
- RUN find /usr/local/etc/php/conf.d -type f -name "*docker-php-ext-*" -exec sed -i '/^extension=/d' {} \;
56
 
57
  # ----------------
58
- # COMPOSER
59
  # ----------------
60
  RUN curl -sS https://getcomposer.org/installer | php -- \
61
  --install-dir=/usr/local/bin \
62
  --filename=composer
63
 
64
  # ----------------
65
- # NODE (opcional p/ React)
66
  # ----------------
67
- RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
68
- && apt-get install -y nodejs \
69
- && node -v && npm -v
70
 
71
- # ----------------
72
- # APACHE CONFIG
73
- # ----------------
74
- RUN a2enmod rewrite headers
75
-
76
- # ServerName GLOBAL (remove AH00558 de vez)
77
- RUN echo "ServerName localhost" > /etc/apache2/conf-available/servername.conf \
78
- && a2enconf servername
79
 
80
  # Porta HF Spaces
81
  RUN sed -i 's/Listen 80/Listen 7860/' /etc/apache2/ports.conf
82
 
83
- RUN printf '<VirtualHost *:7860>\n\
 
84
  ServerName localhost\n\
85
  DocumentRoot /var/www/html\n\
86
  <Directory /var/www/html>\n\
87
  AllowOverride All\n\
88
  Require all granted\n\
 
 
 
 
89
  </Directory>\n\
90
- ErrorLog ${APACHE_LOG_DIR}/error.log\n\
91
- CustomLog ${APACHE_LOG_DIR}/access.log combined\n\
92
- </VirtualHost>\n' > /etc/apache2/sites-available/000-default.conf
93
 
94
  # ----------------
95
- # APP
96
  # ----------------
97
  WORKDIR /var/www/html
98
  COPY . .
99
 
100
- # Logs e storage
101
  RUN mkdir -p logs storage \
102
  && chown -R www-data:www-data /var/www/html \
 
103
  && chmod -R 775 logs storage
104
 
105
  # ----------------
106
- # COMPOSER INSTALL
107
  # ----------------
 
 
108
  RUN if [ -f composer.json ]; then \
109
  composer install --no-dev --optimize-autoloader --no-interaction; \
110
  fi
111
 
112
- # ----------------
113
- # REACT BUILD (SE EXISTIR)
114
- # ----------------
115
  RUN if [ -f package.json ]; then \
116
- npm install && npm run build; \
117
  fi
118
 
119
  # ----------------
120
- # PHP CONFIG FINAL
121
- # ----------------
122
- RUN printf "display_errors=Off\n\
123
- log_errors=On\n\
124
- error_log=/var/www/html/logs/php_errors.log\n\
125
- memory_limit=256M\n\
126
- upload_max_filesize=10M\n\
127
- post_max_size=10M\n\
128
- max_execution_time=300\n" > /usr/local/etc/php/conf.d/99-softedge.ini
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
 
130
  # ----------------
131
  # HEALTHCHECK
132
  # ----------------
133
- RUN echo "<?php http_response_code(200); echo 'OK';" > /var/www/html/health.php
 
 
 
 
 
 
 
134
 
135
- HEALTHCHECK --interval=60s --timeout=5s \
136
- CMD curl -f http://localhost:7860/health.php || exit 1
137
 
138
  # ----------------
139
- # START
140
  # ----------------
141
  EXPOSE 7860
142
- CMD ["apache2-foreground"]
 
 
 
1
  # ================================
2
+ # SoftEdge Corporation — Multi-SDK
3
+ # Python + PHP + Node.js (FLEXÍVEL)
4
  # ================================
5
+ FROM python:3.11-slim
6
 
7
  # ----------------
8
+ # VARIÁVEIS DE AMBIENTE
9
  # ----------------
10
  ENV PORT=7860
11
+ ENV PYTHONUNBUFFERED=1
12
+ ENV DEBIAN_FRONTEND=noninteractive
 
13
 
14
  # ----------------
15
+ # DEPENDÊNCIAS DO SISTEMA (PYTHON + PHP + NODE)
16
  # ----------------
17
  RUN apt-get update && apt-get install -y --no-install-recommends \
18
+ # PHP e Apache
19
+ php8.2 \
20
+ php8.2-cli \
21
+ php8.2-common \
22
+ php8.2-curl \
23
+ php8.2-zip \
24
+ php8.2-gd \
25
+ php8.2-mysql \
26
+ php8.2-xml \
27
+ php8.2-mbstring \
28
+ php8.2-sqlite3 \
29
+ php8.2-intl \
30
+ apache2 \
31
+ libapache2-mod-php8.2 \
32
+ # Node.js
33
+ nodejs \
34
+ npm \
35
+ # Utilitários
36
  curl \
37
+ wget \
38
+ git \
39
+ sqlite3 \
40
  unzip \
41
  ca-certificates \
42
+ build-essential \
43
  && rm -rf /var/lib/apt/lists/*
44
 
45
  # ----------------
46
+ # PYTHON DEPENDENCIES
47
  # ----------------
48
+ COPY requirements.txt .
49
+ RUN pip install --no-cache-dir -r requirements.txt \
50
+ && pip install --no-cache-dir gradio flask gunicorn
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  # ----------------
53
+ # COMPOSER (PHP)
54
  # ----------------
55
  RUN curl -sS https://getcomposer.org/installer | php -- \
56
  --install-dir=/usr/local/bin \
57
  --filename=composer
58
 
59
  # ----------------
60
+ # APACHE CONFIG (PHP MODE)
61
  # ----------------
62
+ RUN a2enmod rewrite headers php8.2
 
 
63
 
64
+ # ServerName para evitar warnings
65
+ RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
 
 
 
 
 
 
66
 
67
  # Porta HF Spaces
68
  RUN sed -i 's/Listen 80/Listen 7860/' /etc/apache2/ports.conf
69
 
70
+ # VirtualHost para PHP
71
+ RUN echo '<VirtualHost *:7860>\n\
72
  ServerName localhost\n\
73
  DocumentRoot /var/www/html\n\
74
  <Directory /var/www/html>\n\
75
  AllowOverride All\n\
76
  Require all granted\n\
77
+ Options Indexes FollowSymLinks\n\
78
+ php_value upload_max_filesize 10M\n\
79
+ php_value post_max_size 10M\n\
80
+ php_value memory_limit 256M\n\
81
  </Directory>\n\
82
+ ErrorLog /var/log/apache2/error.log\n\
83
+ CustomLog /var/log/apache2/access.log combined\n\
84
+ </VirtualHost>' > /etc/apache2/sites-available/000-default.conf
85
 
86
  # ----------------
87
+ # APP SETUP
88
  # ----------------
89
  WORKDIR /var/www/html
90
  COPY . .
91
 
92
+ # Permissões
93
  RUN mkdir -p logs storage \
94
  && chown -R www-data:www-data /var/www/html \
95
+ && chmod -R 755 /var/www/html \
96
  && chmod -R 775 logs storage
97
 
98
  # ----------------
99
+ # DEPENDENCY INSTALLATION
100
  # ----------------
101
+
102
+ # Composer (se existir composer.json)
103
  RUN if [ -f composer.json ]; then \
104
  composer install --no-dev --optimize-autoloader --no-interaction; \
105
  fi
106
 
107
+ # Node.js (se existir package.json)
 
 
108
  RUN if [ -f package.json ]; then \
109
+ npm install && npm run build 2>/dev/null || echo "Build failed, continuing..."; \
110
  fi
111
 
112
  # ----------------
113
+ # STARTUP SCRIPT
114
+ # ----------------
115
+ RUN echo '#!/bin/bash\n\
116
+ set -e\n\
117
+ \n\
118
+ # Detectar modo de execução baseado em variáveis ou arquivos\n\
119
+ if [ "$SDK_MODE" = "docker" ] || [ -f "Dockerfile" ]; then\n\
120
+ echo "🚀 Starting in DOCKER mode (Multi-SDK)"\n\
121
+ \n\
122
+ # Verificar se existe app.py (Python/Gradio)\n\
123
+ if [ -f "app.py" ]; then\n\
124
+ echo "📊 Detected Python/Gradio app"\n\
125
+ cd /var/www/html\n\
126
+ python app.py\n\
127
+ \n\
128
+ # Verificar se existe index.php (PHP)\n\
129
+ elif [ -f "index.php" ]; then\n\
130
+ echo "🐘 Detected PHP app"\n\
131
+ service apache2 start\n\
132
+ tail -f /var/log/apache2/error.log /var/log/apache2/access.log\n\
133
+ \n\
134
+ else\n\
135
+ echo "❌ No app.py or index.php found"\n\
136
+ exit 1\n\
137
+ fi\n\
138
+ \n\
139
+ elif [ "$SDK_MODE" = "gradio" ] || [ ! -f "Dockerfile" ]; then\n\
140
+ echo "🎨 Starting in GRADIO mode"\n\
141
+ cd /var/www/html\n\
142
+ python app.py\n\
143
+ \n\
144
+ else\n\
145
+ echo "🤔 Auto-detecting mode..."\n\
146
+ if [ -f "app.py" ] && [ -f "index.php" ]; then\n\
147
+ echo "🔀 Both Python and PHP detected, defaulting to Python/Gradio"\n\
148
+ cd /var/www/html\n\
149
+ python app.py\n\
150
+ elif [ -f "app.py" ]; then\n\
151
+ echo "🐍 Python app detected"\n\
152
+ cd /var/www/html\n\
153
+ python app.py\n\
154
+ elif [ -f "index.php" ]; then\n\
155
+ echo "🐘 PHP app detected"\n\
156
+ service apache2 start\n\
157
+ tail -f /var/log/apache2/error.log /var/log/apache2/access.log\n\
158
+ else\n\
159
+ echo "❌ No valid app found"\n\
160
+ exit 1\n\
161
+ fi\n\
162
+ fi\n\
163
+ ' > /usr/local/bin/start-app.sh && chmod +x /usr/local/bin/start-app.sh
164
 
165
  # ----------------
166
  # HEALTHCHECK
167
  # ----------------
168
+ RUN echo '<?php\n\
169
+ header("Content-Type: application/json");\n\
170
+ echo json_encode([\n\
171
+ "status" => "ok",\n\
172
+ "mode" => getenv("SDK_MODE") ?: "auto",\n\
173
+ "timestamp" => date("c")\n\
174
+ ]);\n\
175
+ ?>' > /var/www/html/health.php
176
 
177
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
178
+ CMD curl -f http://localhost:7860/health.php || exit 1
179
 
180
  # ----------------
181
+ # EXPOSE & START
182
  # ----------------
183
  EXPOSE 7860
184
+
185
+ # Default command (pode ser sobreposto)
186
+ CMD ["/usr/local/bin/start-app.sh"]