Update Dockerfile
Browse files- Dockerfile +28 -5
Dockerfile
CHANGED
@@ -33,6 +33,7 @@ RUN apt-get update && apt-get install -y \
|
|
33 |
locales \
|
34 |
nginx \
|
35 |
netcat-openbsd \
|
|
|
36 |
&& rm -rf /var/lib/apt/lists/* \
|
37 |
&& pip install --no-cache-dir "poetry==${POETRY_VERSION}" \
|
38 |
&& sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \
|
@@ -169,7 +170,18 @@ wait_for_port() {
|
|
169 |
echo "Waiting for $service (attempt $i/$max_attempts)..."
|
170 |
sleep $wait_time
|
171 |
done
|
172 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
return 1
|
174 |
}
|
175 |
|
@@ -242,13 +254,21 @@ cd /app/api && poetry run python -m gunicorn app:app \
|
|
242 |
echo "Waiting for API server to be ready..."
|
243 |
wait_for_port 5001 "API" 30 2
|
244 |
|
245 |
-
# Start frontend server
|
246 |
echo "Starting frontend server..."
|
247 |
-
cd /app/web
|
|
|
|
|
|
|
|
|
248 |
|
249 |
-
# Wait for frontend to be ready
|
250 |
echo "Waiting for frontend server to be ready..."
|
251 |
-
wait_for_port 3000 "Frontend"
|
|
|
|
|
|
|
|
|
252 |
|
253 |
# Start nginx with debug logging
|
254 |
echo "Starting nginx..."
|
@@ -263,14 +283,17 @@ echo "All services are running. Starting monitoring..."
|
|
263 |
while true; do
|
264 |
if ! pgrep -f "gunicorn" > /dev/null; then
|
265 |
echo "API server died"
|
|
|
266 |
exit 1
|
267 |
fi
|
268 |
if ! pgrep -f "node server.js" > /dev/null; then
|
269 |
echo "Frontend server died"
|
|
|
270 |
exit 1
|
271 |
fi
|
272 |
if ! pgrep -f "nginx" > /dev/null; then
|
273 |
echo "Nginx died"
|
|
|
274 |
exit 1
|
275 |
fi
|
276 |
sleep 30
|
|
|
33 |
locales \
|
34 |
nginx \
|
35 |
netcat-openbsd \
|
36 |
+
net-tools \
|
37 |
&& rm -rf /var/lib/apt/lists/* \
|
38 |
&& pip install --no-cache-dir "poetry==${POETRY_VERSION}" \
|
39 |
&& sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \
|
|
|
170 |
echo "Waiting for $service (attempt $i/$max_attempts)..."
|
171 |
sleep $wait_time
|
172 |
done
|
173 |
+
|
174 |
+
# If we get here, the service failed to start
|
175 |
+
echo "=== $service Startup Failure ==="
|
176 |
+
echo "Service failed to bind to port $port after $max_attempts attempts"
|
177 |
+
echo "Checking process status:"
|
178 |
+
ps aux | grep -i "$service" || true
|
179 |
+
echo "Checking port status:"
|
180 |
+
netstat -tulpn | grep ":$port" || true
|
181 |
+
echo "Checking logs:"
|
182 |
+
if [ "$service" = "Frontend" ]; then
|
183 |
+
tail -n 50 /app/web/output.log || true
|
184 |
+
fi
|
185 |
return 1
|
186 |
}
|
187 |
|
|
|
254 |
echo "Waiting for API server to be ready..."
|
255 |
wait_for_port 5001 "API" 30 2
|
256 |
|
257 |
+
# Start frontend server with logging
|
258 |
echo "Starting frontend server..."
|
259 |
+
cd /app/web
|
260 |
+
# Ensure the output log directory exists
|
261 |
+
touch output.log
|
262 |
+
echo "Starting Next.js server at $(date)" > output.log
|
263 |
+
PORT=3000 node server.js >> output.log 2>&1 &
|
264 |
|
265 |
+
# Wait for frontend to be ready with increased timeout
|
266 |
echo "Waiting for frontend server to be ready..."
|
267 |
+
if ! wait_for_port 3000 "Frontend" 60 5; then
|
268 |
+
echo "Frontend server failed to start. Last 50 lines of frontend logs:"
|
269 |
+
tail -n 50 /app/web/output.log
|
270 |
+
exit 1
|
271 |
+
fi
|
272 |
|
273 |
# Start nginx with debug logging
|
274 |
echo "Starting nginx..."
|
|
|
283 |
while true; do
|
284 |
if ! pgrep -f "gunicorn" > /dev/null; then
|
285 |
echo "API server died"
|
286 |
+
tail -n 100 /app/api/gunicorn.error.log || true
|
287 |
exit 1
|
288 |
fi
|
289 |
if ! pgrep -f "node server.js" > /dev/null; then
|
290 |
echo "Frontend server died"
|
291 |
+
tail -n 100 /app/web/output.log || true
|
292 |
exit 1
|
293 |
fi
|
294 |
if ! pgrep -f "nginx" > /dev/null; then
|
295 |
echo "Nginx died"
|
296 |
+
tail -n 100 /var/log/nginx/error.log || true
|
297 |
exit 1
|
298 |
fi
|
299 |
sleep 30
|